{"version":3,"file":"vendor_plotly.js","sources":["../node_modules/plotly.js/dist/plotly-gl2d.js","../node_modules/react-plotly.js/factory.js"],"sourcesContent":["/**\n* plotly.js (gl2d) v3.0.0\n* Copyright 2012-2025, Plotly, Inc.\n* All rights reserved.\n* Licensed under the MIT license\n*/\n(\n function(root, factory) {\n if (typeof module === \"object\" && module.exports) {\n module.exports = factory();\n } else {\n root.moduleName = factory();\n }\n} (typeof self !== \"undefined\" ? self : this, () => {\n\"use strict\";\nvar Plotly = (() => {\n var __defProp = Object.defineProperty;\n var __getOwnPropDesc = Object.getOwnPropertyDescriptor;\n var __getOwnPropNames = Object.getOwnPropertyNames;\n var __hasOwnProp = Object.prototype.hasOwnProperty;\n var __esm = (fn, res) => function __init() {\n return fn && (res = (0, fn[__getOwnPropNames(fn)[0]])(fn = 0)), res;\n };\n var __commonJS = (cb, mod) => function __require() {\n return mod || (0, cb[__getOwnPropNames(cb)[0]])((mod = { exports: {} }).exports, mod), mod.exports;\n };\n var __copyProps = (to, from, except, desc) => {\n if (from && typeof from === \"object\" || typeof from === \"function\") {\n for (let key of __getOwnPropNames(from))\n if (!__hasOwnProp.call(to, key) && key !== except)\n __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });\n }\n return to;\n };\n var __toCommonJS = (mod) => __copyProps(__defProp({}, \"__esModule\", { value: true }), mod);\n\n // src/version.js\n var require_version = __commonJS({\n \"src/version.js\"(exports) {\n \"use strict\";\n exports.version = \"3.0.0\";\n }\n });\n\n // node_modules/native-promise-only/lib/npo.src.js\n var require_npo_src = __commonJS({\n \"node_modules/native-promise-only/lib/npo.src.js\"(exports, module) {\n (function UMD(name, context, definition) {\n context[name] = context[name] || definition();\n if (typeof module != \"undefined\" && module.exports) {\n module.exports = context[name];\n } else if (typeof define == \"function\" && define.amd) {\n define(function $AMD$() {\n return context[name];\n });\n }\n })(\"Promise\", typeof window != \"undefined\" ? window : exports, function DEF() {\n \"use strict\";\n var builtInProp, cycle, scheduling_queue, ToString = Object.prototype.toString, timer = typeof setImmediate != \"undefined\" ? function timer2(fn) {\n return setImmediate(fn);\n } : setTimeout;\n try {\n Object.defineProperty({}, \"x\", {});\n builtInProp = function builtInProp2(obj, name, val, config) {\n return Object.defineProperty(obj, name, {\n value: val,\n writable: true,\n configurable: config !== false\n });\n };\n } catch (err) {\n builtInProp = function builtInProp2(obj, name, val) {\n obj[name] = val;\n return obj;\n };\n }\n scheduling_queue = /* @__PURE__ */ function Queue() {\n var first, last, item;\n function Item(fn, self2) {\n this.fn = fn;\n this.self = self2;\n this.next = void 0;\n }\n return {\n add: function add(fn, self2) {\n item = new Item(fn, self2);\n if (last) {\n last.next = item;\n } else {\n first = item;\n }\n last = item;\n item = void 0;\n },\n drain: function drain() {\n var f = first;\n first = last = cycle = void 0;\n while (f) {\n f.fn.call(f.self);\n f = f.next;\n }\n }\n };\n }();\n function schedule(fn, self2) {\n scheduling_queue.add(fn, self2);\n if (!cycle) {\n cycle = timer(scheduling_queue.drain);\n }\n }\n function isThenable(o) {\n var _then, o_type = typeof o;\n if (o != null && (o_type == \"object\" || o_type == \"function\")) {\n _then = o.then;\n }\n return typeof _then == \"function\" ? _then : false;\n }\n function notify() {\n for (var i = 0; i < this.chain.length; i++) {\n notifyIsolated(\n this,\n this.state === 1 ? this.chain[i].success : this.chain[i].failure,\n this.chain[i]\n );\n }\n this.chain.length = 0;\n }\n function notifyIsolated(self2, cb, chain) {\n var ret, _then;\n try {\n if (cb === false) {\n chain.reject(self2.msg);\n } else {\n if (cb === true) {\n ret = self2.msg;\n } else {\n ret = cb.call(void 0, self2.msg);\n }\n if (ret === chain.promise) {\n chain.reject(TypeError(\"Promise-chain cycle\"));\n } else if (_then = isThenable(ret)) {\n _then.call(ret, chain.resolve, chain.reject);\n } else {\n chain.resolve(ret);\n }\n }\n } catch (err) {\n chain.reject(err);\n }\n }\n function resolve(msg) {\n var _then, self2 = this;\n if (self2.triggered) {\n return;\n }\n self2.triggered = true;\n if (self2.def) {\n self2 = self2.def;\n }\n try {\n if (_then = isThenable(msg)) {\n schedule(function() {\n var def_wrapper = new MakeDefWrapper(self2);\n try {\n _then.call(\n msg,\n function $resolve$() {\n resolve.apply(def_wrapper, arguments);\n },\n function $reject$() {\n reject.apply(def_wrapper, arguments);\n }\n );\n } catch (err) {\n reject.call(def_wrapper, err);\n }\n });\n } else {\n self2.msg = msg;\n self2.state = 1;\n if (self2.chain.length > 0) {\n schedule(notify, self2);\n }\n }\n } catch (err) {\n reject.call(new MakeDefWrapper(self2), err);\n }\n }\n function reject(msg) {\n var self2 = this;\n if (self2.triggered) {\n return;\n }\n self2.triggered = true;\n if (self2.def) {\n self2 = self2.def;\n }\n self2.msg = msg;\n self2.state = 2;\n if (self2.chain.length > 0) {\n schedule(notify, self2);\n }\n }\n function iteratePromises(Constructor, arr, resolver, rejecter) {\n for (var idx = 0; idx < arr.length; idx++) {\n (function IIFE(idx2) {\n Constructor.resolve(arr[idx2]).then(\n function $resolver$(msg) {\n resolver(idx2, msg);\n },\n rejecter\n );\n })(idx);\n }\n }\n function MakeDefWrapper(self2) {\n this.def = self2;\n this.triggered = false;\n }\n function MakeDef(self2) {\n this.promise = self2;\n this.state = 0;\n this.triggered = false;\n this.chain = [];\n this.msg = void 0;\n }\n function Promise2(executor) {\n if (typeof executor != \"function\") {\n throw TypeError(\"Not a function\");\n }\n if (this.__NPO__ !== 0) {\n throw TypeError(\"Not a promise\");\n }\n this.__NPO__ = 1;\n var def = new MakeDef(this);\n this[\"then\"] = function then(success, failure) {\n var o = {\n success: typeof success == \"function\" ? success : true,\n failure: typeof failure == \"function\" ? failure : false\n };\n o.promise = new this.constructor(function extractChain(resolve2, reject2) {\n if (typeof resolve2 != \"function\" || typeof reject2 != \"function\") {\n throw TypeError(\"Not a function\");\n }\n o.resolve = resolve2;\n o.reject = reject2;\n });\n def.chain.push(o);\n if (def.state !== 0) {\n schedule(notify, def);\n }\n return o.promise;\n };\n this[\"catch\"] = function $catch$(failure) {\n return this.then(void 0, failure);\n };\n try {\n executor.call(\n void 0,\n function publicResolve(msg) {\n resolve.call(def, msg);\n },\n function publicReject(msg) {\n reject.call(def, msg);\n }\n );\n } catch (err) {\n reject.call(def, err);\n }\n }\n var PromisePrototype = builtInProp(\n {},\n \"constructor\",\n Promise2,\n /*configurable=*/\n false\n );\n Promise2.prototype = PromisePrototype;\n builtInProp(\n PromisePrototype,\n \"__NPO__\",\n 0,\n /*configurable=*/\n false\n );\n builtInProp(Promise2, \"resolve\", function Promise$resolve(msg) {\n var Constructor = this;\n if (msg && typeof msg == \"object\" && msg.__NPO__ === 1) {\n return msg;\n }\n return new Constructor(function executor(resolve2, reject2) {\n if (typeof resolve2 != \"function\" || typeof reject2 != \"function\") {\n throw TypeError(\"Not a function\");\n }\n resolve2(msg);\n });\n });\n builtInProp(Promise2, \"reject\", function Promise$reject(msg) {\n return new this(function executor(resolve2, reject2) {\n if (typeof resolve2 != \"function\" || typeof reject2 != \"function\") {\n throw TypeError(\"Not a function\");\n }\n reject2(msg);\n });\n });\n builtInProp(Promise2, \"all\", function Promise$all(arr) {\n var Constructor = this;\n if (ToString.call(arr) != \"[object Array]\") {\n return Constructor.reject(TypeError(\"Not an array\"));\n }\n if (arr.length === 0) {\n return Constructor.resolve([]);\n }\n return new Constructor(function executor(resolve2, reject2) {\n if (typeof resolve2 != \"function\" || typeof reject2 != \"function\") {\n throw TypeError(\"Not a function\");\n }\n var len = arr.length, msgs = Array(len), count = 0;\n iteratePromises(Constructor, arr, function resolver(idx, msg) {\n msgs[idx] = msg;\n if (++count === len) {\n resolve2(msgs);\n }\n }, reject2);\n });\n });\n builtInProp(Promise2, \"race\", function Promise$race(arr) {\n var Constructor = this;\n if (ToString.call(arr) != \"[object Array]\") {\n return Constructor.reject(TypeError(\"Not an array\"));\n }\n return new Constructor(function executor(resolve2, reject2) {\n if (typeof resolve2 != \"function\" || typeof reject2 != \"function\") {\n throw TypeError(\"Not a function\");\n }\n iteratePromises(Constructor, arr, function resolver(idx, msg) {\n resolve2(msg);\n }, reject2);\n });\n });\n return Promise2;\n });\n }\n });\n\n // node_modules/@plotly/d3/d3.js\n var require_d3 = __commonJS({\n \"node_modules/@plotly/d3/d3.js\"(exports, module) {\n !function() {\n var d3 = {\n version: \"3.8.2\"\n };\n var d3_arraySlice = [].slice, d3_array = function(list) {\n return d3_arraySlice.call(list);\n };\n var d3_document = self.document;\n function d3_documentElement(node) {\n return node && (node.ownerDocument || node.document || node).documentElement;\n }\n function d3_window(node) {\n return node && (node.ownerDocument && node.ownerDocument.defaultView || node.document && node || node.defaultView);\n }\n if (d3_document) {\n try {\n d3_array(d3_document.documentElement.childNodes)[0].nodeType;\n } catch (e) {\n d3_array = function(list) {\n var i = list.length, array = new Array(i);\n while (i--) array[i] = list[i];\n return array;\n };\n }\n }\n if (!Date.now) Date.now = function() {\n return +/* @__PURE__ */ new Date();\n };\n if (d3_document) {\n try {\n d3_document.createElement(\"DIV\").style.setProperty(\"opacity\", 0, \"\");\n } catch (error) {\n var d3_element_prototype = this.Element.prototype, d3_element_setAttribute = d3_element_prototype.setAttribute, d3_element_setAttributeNS = d3_element_prototype.setAttributeNS, d3_style_prototype = this.CSSStyleDeclaration.prototype, d3_style_setProperty = d3_style_prototype.setProperty;\n d3_element_prototype.setAttribute = function(name, value) {\n d3_element_setAttribute.call(this, name, value + \"\");\n };\n d3_element_prototype.setAttributeNS = function(space, local, value) {\n d3_element_setAttributeNS.call(this, space, local, value + \"\");\n };\n d3_style_prototype.setProperty = function(name, value, priority) {\n d3_style_setProperty.call(this, name, value + \"\", priority);\n };\n }\n }\n d3.ascending = d3_ascending;\n function d3_ascending(a, b) {\n return a < b ? -1 : a > b ? 1 : a >= b ? 0 : NaN;\n }\n d3.descending = function(a, b) {\n return b < a ? -1 : b > a ? 1 : b >= a ? 0 : NaN;\n };\n d3.min = function(array, f) {\n var i = -1, n = array.length, a, b;\n if (arguments.length === 1) {\n while (++i < n) if ((b = array[i]) != null && b >= b) {\n a = b;\n break;\n }\n while (++i < n) if ((b = array[i]) != null && a > b) a = b;\n } else {\n while (++i < n) if ((b = f.call(array, array[i], i)) != null && b >= b) {\n a = b;\n break;\n }\n while (++i < n) if ((b = f.call(array, array[i], i)) != null && a > b) a = b;\n }\n return a;\n };\n d3.max = function(array, f) {\n var i = -1, n = array.length, a, b;\n if (arguments.length === 1) {\n while (++i < n) if ((b = array[i]) != null && b >= b) {\n a = b;\n break;\n }\n while (++i < n) if ((b = array[i]) != null && b > a) a = b;\n } else {\n while (++i < n) if ((b = f.call(array, array[i], i)) != null && b >= b) {\n a = b;\n break;\n }\n while (++i < n) if ((b = f.call(array, array[i], i)) != null && b > a) a = b;\n }\n return a;\n };\n d3.extent = function(array, f) {\n var i = -1, n = array.length, a, b, c;\n if (arguments.length === 1) {\n while (++i < n) if ((b = array[i]) != null && b >= b) {\n a = c = b;\n break;\n }\n while (++i < n) if ((b = array[i]) != null) {\n if (a > b) a = b;\n if (c < b) c = b;\n }\n } else {\n while (++i < n) if ((b = f.call(array, array[i], i)) != null && b >= b) {\n a = c = b;\n break;\n }\n while (++i < n) if ((b = f.call(array, array[i], i)) != null) {\n if (a > b) a = b;\n if (c < b) c = b;\n }\n }\n return [a, c];\n };\n function d3_number(x) {\n return x === null ? NaN : +x;\n }\n function d3_numeric(x) {\n return !isNaN(x);\n }\n d3.sum = function(array, f) {\n var s = 0, n = array.length, a, i = -1;\n if (arguments.length === 1) {\n while (++i < n) if (d3_numeric(a = +array[i])) s += a;\n } else {\n while (++i < n) if (d3_numeric(a = +f.call(array, array[i], i))) s += a;\n }\n return s;\n };\n d3.mean = function(array, f) {\n var s = 0, n = array.length, a, i = -1, j = n;\n if (arguments.length === 1) {\n while (++i < n) if (d3_numeric(a = d3_number(array[i]))) s += a;\n else --j;\n } else {\n while (++i < n) if (d3_numeric(a = d3_number(f.call(array, array[i], i)))) s += a;\n else --j;\n }\n if (j) return s / j;\n };\n d3.quantile = function(values, p) {\n var H = (values.length - 1) * p + 1, h = Math.floor(H), v = +values[h - 1], e = H - h;\n return e ? v + e * (values[h] - v) : v;\n };\n d3.median = function(array, f) {\n var numbers = [], n = array.length, a, i = -1;\n if (arguments.length === 1) {\n while (++i < n) if (d3_numeric(a = d3_number(array[i]))) numbers.push(a);\n } else {\n while (++i < n) if (d3_numeric(a = d3_number(f.call(array, array[i], i)))) numbers.push(a);\n }\n if (numbers.length) return d3.quantile(numbers.sort(d3_ascending), 0.5);\n };\n d3.variance = function(array, f) {\n var n = array.length, m = 0, a, d, s = 0, i = -1, j = 0;\n if (arguments.length === 1) {\n while (++i < n) {\n if (d3_numeric(a = d3_number(array[i]))) {\n d = a - m;\n m += d / ++j;\n s += d * (a - m);\n }\n }\n } else {\n while (++i < n) {\n if (d3_numeric(a = d3_number(f.call(array, array[i], i)))) {\n d = a - m;\n m += d / ++j;\n s += d * (a - m);\n }\n }\n }\n if (j > 1) return s / (j - 1);\n };\n d3.deviation = function() {\n var v = d3.variance.apply(this, arguments);\n return v ? Math.sqrt(v) : v;\n };\n function d3_bisector(compare) {\n return {\n left: function(a, x, lo, hi) {\n if (arguments.length < 3) lo = 0;\n if (arguments.length < 4) hi = a.length;\n while (lo < hi) {\n var mid = lo + hi >>> 1;\n if (compare(a[mid], x) < 0) lo = mid + 1;\n else hi = mid;\n }\n return lo;\n },\n right: function(a, x, lo, hi) {\n if (arguments.length < 3) lo = 0;\n if (arguments.length < 4) hi = a.length;\n while (lo < hi) {\n var mid = lo + hi >>> 1;\n if (compare(a[mid], x) > 0) hi = mid;\n else lo = mid + 1;\n }\n return lo;\n }\n };\n }\n var d3_bisect = d3_bisector(d3_ascending);\n d3.bisectLeft = d3_bisect.left;\n d3.bisect = d3.bisectRight = d3_bisect.right;\n d3.bisector = function(f) {\n return d3_bisector(f.length === 1 ? function(d, x) {\n return d3_ascending(f(d), x);\n } : f);\n };\n d3.shuffle = function(array, i0, i1) {\n if ((m = arguments.length) < 3) {\n i1 = array.length;\n if (m < 2) i0 = 0;\n }\n var m = i1 - i0, t, i;\n while (m) {\n i = Math.random() * m-- | 0;\n t = array[m + i0], array[m + i0] = array[i + i0], array[i + i0] = t;\n }\n return array;\n };\n d3.permute = function(array, indexes) {\n var i = indexes.length, permutes = new Array(i);\n while (i--) permutes[i] = array[indexes[i]];\n return permutes;\n };\n d3.pairs = function(array) {\n var i = 0, n = array.length - 1, p0, p1 = array[0], pairs = new Array(n < 0 ? 0 : n);\n while (i < n) pairs[i] = [p0 = p1, p1 = array[++i]];\n return pairs;\n };\n d3.transpose = function(matrix) {\n if (!(n = matrix.length)) return [];\n for (var i = -1, m = d3.min(matrix, d3_transposeLength), transpose = new Array(m); ++i < m; ) {\n for (var j = -1, n, row = transpose[i] = new Array(n); ++j < n; ) {\n row[j] = matrix[j][i];\n }\n }\n return transpose;\n };\n function d3_transposeLength(d) {\n return d.length;\n }\n d3.zip = function() {\n return d3.transpose(arguments);\n };\n d3.keys = function(map) {\n var keys = [];\n for (var key in map) keys.push(key);\n return keys;\n };\n d3.values = function(map) {\n var values = [];\n for (var key in map) values.push(map[key]);\n return values;\n };\n d3.entries = function(map) {\n var entries = [];\n for (var key in map) entries.push({\n key,\n value: map[key]\n });\n return entries;\n };\n d3.merge = function(arrays) {\n var n = arrays.length, m, i = -1, j = 0, merged, array;\n while (++i < n) j += arrays[i].length;\n merged = new Array(j);\n while (--n >= 0) {\n array = arrays[n];\n m = array.length;\n while (--m >= 0) {\n merged[--j] = array[m];\n }\n }\n return merged;\n };\n var abs = Math.abs;\n d3.range = function(start, stop, step) {\n if (arguments.length < 3) {\n step = 1;\n if (arguments.length < 2) {\n stop = start;\n start = 0;\n }\n }\n if ((stop - start) / step === Infinity) throw new Error(\"infinite range\");\n var range = [], k = d3_range_integerScale(abs(step)), i = -1, j;\n start *= k, stop *= k, step *= k;\n if (step < 0) while ((j = start + step * ++i) > stop) range.push(j / k);\n else while ((j = start + step * ++i) < stop) range.push(j / k);\n return range;\n };\n function d3_range_integerScale(x) {\n var k = 1;\n while (x * k % 1) k *= 10;\n return k;\n }\n function d3_class(ctor, properties) {\n for (var key in properties) {\n Object.defineProperty(ctor.prototype, key, {\n value: properties[key],\n enumerable: false\n });\n }\n }\n d3.map = function(object, f) {\n var map = new d3_Map();\n if (object instanceof d3_Map) {\n object.forEach(function(key2, value) {\n map.set(key2, value);\n });\n } else if (Array.isArray(object)) {\n var i = -1, n = object.length, o;\n if (arguments.length === 1) while (++i < n) map.set(i, object[i]);\n else while (++i < n) map.set(f.call(object, o = object[i], i), o);\n } else {\n for (var key in object) map.set(key, object[key]);\n }\n return map;\n };\n function d3_Map() {\n this._ = /* @__PURE__ */ Object.create(null);\n }\n var d3_map_proto = \"__proto__\", d3_map_zero = \"\\0\";\n d3_class(d3_Map, {\n has: d3_map_has,\n get: function(key) {\n return this._[d3_map_escape(key)];\n },\n set: function(key, value) {\n return this._[d3_map_escape(key)] = value;\n },\n remove: d3_map_remove,\n keys: d3_map_keys,\n values: function() {\n var values = [];\n for (var key in this._) values.push(this._[key]);\n return values;\n },\n entries: function() {\n var entries = [];\n for (var key in this._) entries.push({\n key: d3_map_unescape(key),\n value: this._[key]\n });\n return entries;\n },\n size: d3_map_size,\n empty: d3_map_empty,\n forEach: function(f) {\n for (var key in this._) f.call(this, d3_map_unescape(key), this._[key]);\n }\n });\n function d3_map_escape(key) {\n return (key += \"\") === d3_map_proto || key[0] === d3_map_zero ? d3_map_zero + key : key;\n }\n function d3_map_unescape(key) {\n return (key += \"\")[0] === d3_map_zero ? key.slice(1) : key;\n }\n function d3_map_has(key) {\n return d3_map_escape(key) in this._;\n }\n function d3_map_remove(key) {\n return (key = d3_map_escape(key)) in this._ && delete this._[key];\n }\n function d3_map_keys() {\n var keys = [];\n for (var key in this._) keys.push(d3_map_unescape(key));\n return keys;\n }\n function d3_map_size() {\n var size = 0;\n for (var key in this._) ++size;\n return size;\n }\n function d3_map_empty() {\n for (var key in this._) return false;\n return true;\n }\n d3.nest = function() {\n var nest = {}, keys = [], sortKeys = [], sortValues, rollup;\n function map(mapType, array, depth) {\n if (depth >= keys.length) return rollup ? rollup.call(nest, array) : sortValues ? array.sort(sortValues) : array;\n var i = -1, n = array.length, key = keys[depth++], keyValue, object, setter, valuesByKey = new d3_Map(), values;\n while (++i < n) {\n if (values = valuesByKey.get(keyValue = key(object = array[i]))) {\n values.push(object);\n } else {\n valuesByKey.set(keyValue, [object]);\n }\n }\n if (mapType) {\n object = mapType();\n setter = function(keyValue2, values2) {\n object.set(keyValue2, map(mapType, values2, depth));\n };\n } else {\n object = {};\n setter = function(keyValue2, values2) {\n object[keyValue2] = map(mapType, values2, depth);\n };\n }\n valuesByKey.forEach(setter);\n return object;\n }\n function entries(map2, depth) {\n if (depth >= keys.length) return map2;\n var array = [], sortKey = sortKeys[depth++];\n map2.forEach(function(key, keyMap) {\n array.push({\n key,\n values: entries(keyMap, depth)\n });\n });\n return sortKey ? array.sort(function(a, b) {\n return sortKey(a.key, b.key);\n }) : array;\n }\n nest.map = function(array, mapType) {\n return map(mapType, array, 0);\n };\n nest.entries = function(array) {\n return entries(map(d3.map, array, 0), 0);\n };\n nest.key = function(d) {\n keys.push(d);\n return nest;\n };\n nest.sortKeys = function(order) {\n sortKeys[keys.length - 1] = order;\n return nest;\n };\n nest.sortValues = function(order) {\n sortValues = order;\n return nest;\n };\n nest.rollup = function(f) {\n rollup = f;\n return nest;\n };\n return nest;\n };\n d3.set = function(array) {\n var set = new d3_Set();\n if (array) for (var i = 0, n = array.length; i < n; ++i) set.add(array[i]);\n return set;\n };\n function d3_Set() {\n this._ = /* @__PURE__ */ Object.create(null);\n }\n d3_class(d3_Set, {\n has: d3_map_has,\n add: function(key) {\n this._[d3_map_escape(key += \"\")] = true;\n return key;\n },\n remove: d3_map_remove,\n values: d3_map_keys,\n size: d3_map_size,\n empty: d3_map_empty,\n forEach: function(f) {\n for (var key in this._) f.call(this, d3_map_unescape(key));\n }\n });\n d3.behavior = {};\n function d3_identity(d) {\n return d;\n }\n d3.rebind = function(target, source) {\n var i = 1, n = arguments.length, method;\n while (++i < n) target[method = arguments[i]] = d3_rebind(target, source, source[method]);\n return target;\n };\n function d3_rebind(target, source, method) {\n return function() {\n var value = method.apply(source, arguments);\n return value === source ? target : value;\n };\n }\n function d3_vendorSymbol(object, name) {\n if (name in object) return name;\n name = name.charAt(0).toUpperCase() + name.slice(1);\n for (var i = 0, n = d3_vendorPrefixes.length; i < n; ++i) {\n var prefixName = d3_vendorPrefixes[i] + name;\n if (prefixName in object) return prefixName;\n }\n }\n var d3_vendorPrefixes = [\"webkit\", \"ms\", \"moz\", \"Moz\", \"o\", \"O\"];\n function d3_noop() {\n }\n d3.dispatch = function() {\n var dispatch = new d3_dispatch(), i = -1, n = arguments.length;\n while (++i < n) dispatch[arguments[i]] = d3_dispatch_event(dispatch);\n return dispatch;\n };\n function d3_dispatch() {\n }\n d3_dispatch.prototype.on = function(type, listener) {\n var i = type.indexOf(\".\"), name = \"\";\n if (i >= 0) {\n name = type.slice(i + 1);\n type = type.slice(0, i);\n }\n if (type) return arguments.length < 2 ? this[type].on(name) : this[type].on(name, listener);\n if (arguments.length === 2) {\n if (listener == null) for (type in this) {\n if (this.hasOwnProperty(type)) this[type].on(name, null);\n }\n return this;\n }\n };\n function d3_dispatch_event(dispatch) {\n var listeners = [], listenerByName = new d3_Map();\n function event() {\n var z = listeners, i = -1, n = z.length, l;\n while (++i < n) if (l = z[i].on) l.apply(this, arguments);\n return dispatch;\n }\n event.on = function(name, listener) {\n var l = listenerByName.get(name), i;\n if (arguments.length < 2) return l && l.on;\n if (l) {\n l.on = null;\n listeners = listeners.slice(0, i = listeners.indexOf(l)).concat(listeners.slice(i + 1));\n listenerByName.remove(name);\n }\n if (listener) listeners.push(listenerByName.set(name, {\n on: listener\n }));\n return dispatch;\n };\n return event;\n }\n d3.event = null;\n function d3_eventPreventDefault() {\n d3.event.preventDefault();\n }\n function d3_eventSource() {\n var e = d3.event, s;\n while (s = e.sourceEvent) e = s;\n return e;\n }\n function d3_eventDispatch(target) {\n var dispatch = new d3_dispatch(), i = 0, n = arguments.length;\n while (++i < n) dispatch[arguments[i]] = d3_dispatch_event(dispatch);\n dispatch.of = function(thiz, argumentz) {\n return function(e1) {\n try {\n var e0 = e1.sourceEvent = d3.event;\n e1.target = target;\n d3.event = e1;\n dispatch[e1.type].apply(thiz, argumentz);\n } finally {\n d3.event = e0;\n }\n };\n };\n return dispatch;\n }\n d3.requote = function(s) {\n return s.replace(d3_requote_re, \"\\\\$&\");\n };\n var d3_requote_re = /[\\\\\\^\\$\\*\\+\\?\\|\\[\\]\\(\\)\\.\\{\\}]/g;\n var d3_subclass = {}.__proto__ ? function(object, prototype) {\n object.__proto__ = prototype;\n } : function(object, prototype) {\n for (var property in prototype) object[property] = prototype[property];\n };\n function d3_selection(groups) {\n d3_subclass(groups, d3_selectionPrototype);\n return groups;\n }\n var d3_select = function(s, n) {\n return n.querySelector(s);\n }, d3_selectAll = function(s, n) {\n return n.querySelectorAll(s);\n }, d3_selectMatches = function(n, s) {\n var d3_selectMatcher = n.matches || n[d3_vendorSymbol(n, \"matchesSelector\")];\n d3_selectMatches = function(n2, s2) {\n return d3_selectMatcher.call(n2, s2);\n };\n return d3_selectMatches(n, s);\n };\n if (typeof Sizzle === \"function\") {\n d3_select = function(s, n) {\n return Sizzle(s, n)[0] || null;\n };\n d3_selectAll = Sizzle;\n d3_selectMatches = Sizzle.matchesSelector;\n }\n d3.selection = function() {\n return d3.select(d3_document.documentElement);\n };\n var d3_selectionPrototype = d3.selection.prototype = [];\n d3_selectionPrototype.select = function(selector) {\n var subgroups = [], subgroup, subnode, group, node;\n selector = d3_selection_selector(selector);\n for (var j = -1, m = this.length; ++j < m; ) {\n subgroups.push(subgroup = []);\n subgroup.parentNode = (group = this[j]).parentNode;\n for (var i = -1, n = group.length; ++i < n; ) {\n if (node = group[i]) {\n subgroup.push(subnode = selector.call(node, node.__data__, i, j));\n if (subnode && \"__data__\" in node) subnode.__data__ = node.__data__;\n } else {\n subgroup.push(null);\n }\n }\n }\n return d3_selection(subgroups);\n };\n function d3_selection_selector(selector) {\n return typeof selector === \"function\" ? selector : function() {\n return d3_select(selector, this);\n };\n }\n d3_selectionPrototype.selectAll = function(selector) {\n var subgroups = [], subgroup, node;\n selector = d3_selection_selectorAll(selector);\n for (var j = -1, m = this.length; ++j < m; ) {\n for (var group = this[j], i = -1, n = group.length; ++i < n; ) {\n if (node = group[i]) {\n subgroups.push(subgroup = d3_array(selector.call(node, node.__data__, i, j)));\n subgroup.parentNode = node;\n }\n }\n }\n return d3_selection(subgroups);\n };\n function d3_selection_selectorAll(selector) {\n return typeof selector === \"function\" ? selector : function() {\n return d3_selectAll(selector, this);\n };\n }\n var d3_nsXhtml = \"http://www.w3.org/1999/xhtml\";\n var d3_nsPrefix = {\n svg: \"http://www.w3.org/2000/svg\",\n xhtml: d3_nsXhtml,\n xlink: \"http://www.w3.org/1999/xlink\",\n xml: \"http://www.w3.org/XML/1998/namespace\",\n xmlns: \"http://www.w3.org/2000/xmlns/\"\n };\n d3.ns = {\n prefix: d3_nsPrefix,\n qualify: function(name) {\n var i = name.indexOf(\":\"), prefix = name;\n if (i >= 0 && (prefix = name.slice(0, i)) !== \"xmlns\") name = name.slice(i + 1);\n return d3_nsPrefix.hasOwnProperty(prefix) ? {\n space: d3_nsPrefix[prefix],\n local: name\n } : name;\n }\n };\n d3_selectionPrototype.attr = function(name, value) {\n if (arguments.length < 2) {\n if (typeof name === \"string\") {\n var node = this.node();\n name = d3.ns.qualify(name);\n return name.local ? node.getAttributeNS(name.space, name.local) : node.getAttribute(name);\n }\n for (value in name) this.each(d3_selection_attr(value, name[value]));\n return this;\n }\n return this.each(d3_selection_attr(name, value));\n };\n function d3_selection_attr(name, value) {\n name = d3.ns.qualify(name);\n function attrNull() {\n this.removeAttribute(name);\n }\n function attrNullNS() {\n this.removeAttributeNS(name.space, name.local);\n }\n function attrConstant() {\n this.setAttribute(name, value);\n }\n function attrConstantNS() {\n this.setAttributeNS(name.space, name.local, value);\n }\n function attrFunction() {\n var x = value.apply(this, arguments);\n if (x == null) this.removeAttribute(name);\n else this.setAttribute(name, x);\n }\n function attrFunctionNS() {\n var x = value.apply(this, arguments);\n if (x == null) this.removeAttributeNS(name.space, name.local);\n else this.setAttributeNS(name.space, name.local, x);\n }\n return value == null ? name.local ? attrNullNS : attrNull : typeof value === \"function\" ? name.local ? attrFunctionNS : attrFunction : name.local ? attrConstantNS : attrConstant;\n }\n function d3_collapse(s) {\n return s.trim().replace(/\\s+/g, \" \");\n }\n d3_selectionPrototype.classed = function(name, value) {\n if (arguments.length < 2) {\n if (typeof name === \"string\") {\n var node = this.node(), n = (name = d3_selection_classes(name)).length, i = -1;\n if (value = node.classList) {\n while (++i < n) if (!value.contains(name[i])) return false;\n } else {\n value = node.getAttribute(\"class\");\n while (++i < n) if (!d3_selection_classedRe(name[i]).test(value)) return false;\n }\n return true;\n }\n for (value in name) this.each(d3_selection_classed(value, name[value]));\n return this;\n }\n return this.each(d3_selection_classed(name, value));\n };\n function d3_selection_classedRe(name) {\n return new RegExp(\"(?:^|\\\\s+)\" + d3.requote(name) + \"(?:\\\\s+|$)\", \"g\");\n }\n function d3_selection_classes(name) {\n return (name + \"\").trim().split(/^|\\s+/);\n }\n function d3_selection_classed(name, value) {\n name = d3_selection_classes(name).map(d3_selection_classedName);\n var n = name.length;\n function classedConstant() {\n var i = -1;\n while (++i < n) name[i](this, value);\n }\n function classedFunction() {\n var i = -1, x = value.apply(this, arguments);\n while (++i < n) name[i](this, x);\n }\n return typeof value === \"function\" ? classedFunction : classedConstant;\n }\n function d3_selection_classedName(name) {\n var re = d3_selection_classedRe(name);\n return function(node, value) {\n if (c = node.classList) return value ? c.add(name) : c.remove(name);\n var c = node.getAttribute(\"class\") || \"\";\n if (value) {\n re.lastIndex = 0;\n if (!re.test(c)) node.setAttribute(\"class\", d3_collapse(c + \" \" + name));\n } else {\n node.setAttribute(\"class\", d3_collapse(c.replace(re, \" \")));\n }\n };\n }\n d3_selectionPrototype.style = function(name, value, priority) {\n var n = arguments.length;\n if (n < 3) {\n if (typeof name !== \"string\") {\n if (n < 2) value = \"\";\n for (priority in name) this.each(d3_selection_style(priority, name[priority], value));\n return this;\n }\n if (n < 2) {\n var node = this.node();\n return d3_window(node).getComputedStyle(node, null).getPropertyValue(name);\n }\n priority = \"\";\n }\n return this.each(d3_selection_style(name, value, priority));\n };\n function d3_selection_style(name, value, priority) {\n function styleNull() {\n this.style.removeProperty(name);\n }\n function styleConstant() {\n this.style.setProperty(name, value, priority);\n }\n function styleFunction() {\n var x = value.apply(this, arguments);\n if (x == null) this.style.removeProperty(name);\n else this.style.setProperty(name, x, priority);\n }\n return value == null ? styleNull : typeof value === \"function\" ? styleFunction : styleConstant;\n }\n d3_selectionPrototype.property = function(name, value) {\n if (arguments.length < 2) {\n if (typeof name === \"string\") return this.node()[name];\n for (value in name) this.each(d3_selection_property(value, name[value]));\n return this;\n }\n return this.each(d3_selection_property(name, value));\n };\n function d3_selection_property(name, value) {\n function propertyNull() {\n delete this[name];\n }\n function propertyConstant() {\n this[name] = value;\n }\n function propertyFunction() {\n var x = value.apply(this, arguments);\n if (x == null) delete this[name];\n else this[name] = x;\n }\n return value == null ? propertyNull : typeof value === \"function\" ? propertyFunction : propertyConstant;\n }\n d3_selectionPrototype.text = function(value) {\n return arguments.length ? this.each(typeof value === \"function\" ? function() {\n var v = value.apply(this, arguments);\n this.textContent = v == null ? \"\" : v;\n } : value == null ? function() {\n this.textContent = \"\";\n } : function() {\n this.textContent = value;\n }) : this.node().textContent;\n };\n d3_selectionPrototype.html = function(value) {\n return arguments.length ? this.each(typeof value === \"function\" ? function() {\n var v = value.apply(this, arguments);\n this.innerHTML = v == null ? \"\" : v;\n } : value == null ? function() {\n this.innerHTML = \"\";\n } : function() {\n this.innerHTML = value;\n }) : this.node().innerHTML;\n };\n d3_selectionPrototype.append = function(name) {\n name = d3_selection_creator(name);\n return this.select(function() {\n return this.appendChild(name.apply(this, arguments));\n });\n };\n function d3_selection_creator(name) {\n function create() {\n var document2 = this.ownerDocument, namespace = this.namespaceURI;\n return namespace === d3_nsXhtml && document2.documentElement.namespaceURI === d3_nsXhtml ? document2.createElement(name) : document2.createElementNS(namespace, name);\n }\n function createNS() {\n return this.ownerDocument.createElementNS(name.space, name.local);\n }\n return typeof name === \"function\" ? name : (name = d3.ns.qualify(name)).local ? createNS : create;\n }\n d3_selectionPrototype.insert = function(name, before) {\n name = d3_selection_creator(name);\n before = d3_selection_selector(before);\n return this.select(function() {\n return this.insertBefore(name.apply(this, arguments), before.apply(this, arguments) || null);\n });\n };\n d3_selectionPrototype.remove = function() {\n return this.each(d3_selectionRemove);\n };\n function d3_selectionRemove() {\n var parent = this.parentNode;\n if (parent) parent.removeChild(this);\n }\n d3_selectionPrototype.data = function(value, key) {\n var i = -1, n = this.length, group, node;\n if (!arguments.length) {\n value = new Array(n = (group = this[0]).length);\n while (++i < n) {\n if (node = group[i]) {\n value[i] = node.__data__;\n }\n }\n return value;\n }\n function bind(group2, groupData) {\n var i2, n2 = group2.length, m = groupData.length, n0 = Math.min(n2, m), updateNodes = new Array(m), enterNodes = new Array(m), exitNodes = new Array(n2), node2, nodeData;\n if (key) {\n var nodeByKeyValue = new d3_Map(), keyValues = new Array(n2), keyValue;\n for (i2 = -1; ++i2 < n2; ) {\n if (node2 = group2[i2]) {\n if (nodeByKeyValue.has(keyValue = key.call(node2, node2.__data__, i2))) {\n exitNodes[i2] = node2;\n } else {\n nodeByKeyValue.set(keyValue, node2);\n }\n keyValues[i2] = keyValue;\n }\n }\n for (i2 = -1; ++i2 < m; ) {\n if (!(node2 = nodeByKeyValue.get(keyValue = key.call(groupData, nodeData = groupData[i2], i2)))) {\n enterNodes[i2] = d3_selection_dataNode(nodeData);\n } else if (node2 !== true) {\n updateNodes[i2] = node2;\n node2.__data__ = nodeData;\n }\n nodeByKeyValue.set(keyValue, true);\n }\n for (i2 = -1; ++i2 < n2; ) {\n if (i2 in keyValues && nodeByKeyValue.get(keyValues[i2]) !== true) {\n exitNodes[i2] = group2[i2];\n }\n }\n } else {\n for (i2 = -1; ++i2 < n0; ) {\n node2 = group2[i2];\n nodeData = groupData[i2];\n if (node2) {\n node2.__data__ = nodeData;\n updateNodes[i2] = node2;\n } else {\n enterNodes[i2] = d3_selection_dataNode(nodeData);\n }\n }\n for (; i2 < m; ++i2) {\n enterNodes[i2] = d3_selection_dataNode(groupData[i2]);\n }\n for (; i2 < n2; ++i2) {\n exitNodes[i2] = group2[i2];\n }\n }\n enterNodes.update = updateNodes;\n enterNodes.parentNode = updateNodes.parentNode = exitNodes.parentNode = group2.parentNode;\n enter.push(enterNodes);\n update.push(updateNodes);\n exit.push(exitNodes);\n }\n var enter = d3_selection_enter([]), update = d3_selection([]), exit = d3_selection([]);\n if (typeof value === \"function\") {\n while (++i < n) {\n bind(group = this[i], value.call(group, group.parentNode.__data__, i));\n }\n } else {\n while (++i < n) {\n bind(group = this[i], value);\n }\n }\n update.enter = function() {\n return enter;\n };\n update.exit = function() {\n return exit;\n };\n return update;\n };\n function d3_selection_dataNode(data) {\n return {\n __data__: data\n };\n }\n d3_selectionPrototype.datum = function(value) {\n return arguments.length ? this.property(\"__data__\", value) : this.property(\"__data__\");\n };\n d3_selectionPrototype.filter = function(filter) {\n var subgroups = [], subgroup, group, node;\n if (typeof filter !== \"function\") filter = d3_selection_filter(filter);\n for (var j = 0, m = this.length; j < m; j++) {\n subgroups.push(subgroup = []);\n subgroup.parentNode = (group = this[j]).parentNode;\n for (var i = 0, n = group.length; i < n; i++) {\n if ((node = group[i]) && filter.call(node, node.__data__, i, j)) {\n subgroup.push(node);\n }\n }\n }\n return d3_selection(subgroups);\n };\n function d3_selection_filter(selector) {\n return function() {\n return d3_selectMatches(this, selector);\n };\n }\n d3_selectionPrototype.order = function() {\n for (var j = -1, m = this.length; ++j < m; ) {\n for (var group = this[j], i = group.length - 1, next = group[i], node; --i >= 0; ) {\n if (node = group[i]) {\n if (next && next !== node.nextSibling) next.parentNode.insertBefore(node, next);\n next = node;\n }\n }\n }\n return this;\n };\n d3_selectionPrototype.sort = function(comparator) {\n comparator = d3_selection_sortComparator.apply(this, arguments);\n for (var j = -1, m = this.length; ++j < m; ) this[j].sort(comparator);\n return this.order();\n };\n function d3_selection_sortComparator(comparator) {\n if (!arguments.length) comparator = d3_ascending;\n return function(a, b) {\n return a && b ? comparator(a.__data__, b.__data__) : !a - !b;\n };\n }\n d3_selectionPrototype.each = function(callback) {\n return d3_selection_each(this, function(node, i, j) {\n callback.call(node, node.__data__, i, j);\n });\n };\n function d3_selection_each(groups, callback) {\n for (var j = 0, m = groups.length; j < m; j++) {\n for (var group = groups[j], i = 0, n = group.length, node; i < n; i++) {\n if (node = group[i]) callback(node, i, j);\n }\n }\n return groups;\n }\n d3_selectionPrototype.call = function(callback) {\n var args = d3_array(arguments);\n callback.apply(args[0] = this, args);\n return this;\n };\n d3_selectionPrototype.empty = function() {\n return !this.node();\n };\n d3_selectionPrototype.node = function() {\n for (var j = 0, m = this.length; j < m; j++) {\n for (var group = this[j], i = 0, n = group.length; i < n; i++) {\n var node = group[i];\n if (node) return node;\n }\n }\n return null;\n };\n d3_selectionPrototype.size = function() {\n var n = 0;\n d3_selection_each(this, function() {\n ++n;\n });\n return n;\n };\n function d3_selection_enter(selection) {\n d3_subclass(selection, d3_selection_enterPrototype);\n return selection;\n }\n var d3_selection_enterPrototype = [];\n d3.selection.enter = d3_selection_enter;\n d3.selection.enter.prototype = d3_selection_enterPrototype;\n d3_selection_enterPrototype.append = d3_selectionPrototype.append;\n d3_selection_enterPrototype.empty = d3_selectionPrototype.empty;\n d3_selection_enterPrototype.node = d3_selectionPrototype.node;\n d3_selection_enterPrototype.call = d3_selectionPrototype.call;\n d3_selection_enterPrototype.size = d3_selectionPrototype.size;\n d3_selection_enterPrototype.select = function(selector) {\n var subgroups = [], subgroup, subnode, upgroup, group, node;\n for (var j = -1, m = this.length; ++j < m; ) {\n upgroup = (group = this[j]).update;\n subgroups.push(subgroup = []);\n subgroup.parentNode = group.parentNode;\n for (var i = -1, n = group.length; ++i < n; ) {\n if (node = group[i]) {\n subgroup.push(upgroup[i] = subnode = selector.call(group.parentNode, node.__data__, i, j));\n subnode.__data__ = node.__data__;\n } else {\n subgroup.push(null);\n }\n }\n }\n return d3_selection(subgroups);\n };\n d3_selection_enterPrototype.insert = function(name, before) {\n if (arguments.length < 2) before = d3_selection_enterInsertBefore(this);\n return d3_selectionPrototype.insert.call(this, name, before);\n };\n function d3_selection_enterInsertBefore(enter) {\n var i0, j0;\n return function(d, i, j) {\n var group = enter[j].update, n = group.length, node;\n if (j != j0) j0 = j, i0 = 0;\n if (i >= i0) i0 = i + 1;\n while (!(node = group[i0]) && ++i0 < n) ;\n return node;\n };\n }\n d3.select = function(node) {\n var group;\n if (typeof node === \"string\") {\n group = [d3_select(node, d3_document)];\n group.parentNode = d3_document.documentElement;\n } else {\n group = [node];\n group.parentNode = d3_documentElement(node);\n }\n return d3_selection([group]);\n };\n d3.selectAll = function(nodes) {\n var group;\n if (typeof nodes === \"string\") {\n group = d3_array(d3_selectAll(nodes, d3_document));\n group.parentNode = d3_document.documentElement;\n } else {\n group = d3_array(nodes);\n group.parentNode = null;\n }\n return d3_selection([group]);\n };\n d3_selectionPrototype.on = function(type, listener, capture) {\n var n = arguments.length;\n if (n < 3) {\n if (typeof type !== \"string\") {\n if (n < 2) listener = false;\n for (capture in type) this.each(d3_selection_on(capture, type[capture], listener));\n return this;\n }\n if (n < 2) return (n = this.node()[\"__on\" + type]) && n._;\n capture = false;\n }\n return this.each(d3_selection_on(type, listener, capture));\n };\n function d3_selection_on(type, listener, capture) {\n var name = \"__on\" + type, i = type.indexOf(\".\"), wrap = d3_selection_onListener;\n if (i > 0) type = type.slice(0, i);\n var filter = d3_selection_onFilters.get(type);\n if (filter) type = filter, wrap = d3_selection_onFilter;\n function onRemove() {\n var l = this[name];\n if (l) {\n this.removeEventListener(type, l, l.$);\n delete this[name];\n }\n }\n function onAdd() {\n var l = wrap(listener, d3_array(arguments));\n onRemove.call(this);\n this.addEventListener(type, this[name] = l, l.$ = capture);\n l._ = listener;\n }\n function removeAll() {\n var re = new RegExp(\"^__on([^.]+)\" + d3.requote(type) + \"$\"), match;\n for (var name2 in this) {\n if (match = name2.match(re)) {\n var l = this[name2];\n this.removeEventListener(match[1], l, l.$);\n delete this[name2];\n }\n }\n }\n return i ? listener ? onAdd : onRemove : listener ? d3_noop : removeAll;\n }\n var d3_selection_onFilters = d3.map({\n mouseenter: \"mouseover\",\n mouseleave: \"mouseout\"\n });\n if (d3_document) {\n d3_selection_onFilters.forEach(function(k) {\n if (\"on\" + k in d3_document) d3_selection_onFilters.remove(k);\n });\n }\n function d3_selection_onListener(listener, argumentz) {\n return function(e) {\n var o = d3.event;\n d3.event = e;\n argumentz[0] = this.__data__;\n try {\n listener.apply(this, argumentz);\n } finally {\n d3.event = o;\n }\n };\n }\n function d3_selection_onFilter(listener, argumentz) {\n var l = d3_selection_onListener(listener, argumentz);\n return function(e) {\n var target = this, related = e.relatedTarget;\n if (!related || related !== target && !(related.compareDocumentPosition(target) & 8)) {\n l.call(target, e);\n }\n };\n }\n var d3_event_dragSelect, d3_event_dragId = 0;\n function d3_event_dragSuppress(node) {\n var name = \".dragsuppress-\" + ++d3_event_dragId, click = \"click\" + name, w = d3.select(d3_window(node)).on(\"touchmove\" + name, d3_eventPreventDefault).on(\"dragstart\" + name, d3_eventPreventDefault).on(\"selectstart\" + name, d3_eventPreventDefault);\n if (d3_event_dragSelect == null) {\n d3_event_dragSelect = \"onselectstart\" in node ? false : d3_vendorSymbol(node.style, \"userSelect\");\n }\n if (d3_event_dragSelect) {\n var style = d3_documentElement(node).style, select = style[d3_event_dragSelect];\n style[d3_event_dragSelect] = \"none\";\n }\n return function(suppressClick) {\n w.on(name, null);\n if (d3_event_dragSelect) style[d3_event_dragSelect] = select;\n if (suppressClick) {\n var off = function() {\n w.on(click, null);\n };\n w.on(click, function() {\n d3_eventPreventDefault();\n off();\n }, true);\n setTimeout(off, 0);\n }\n };\n }\n d3.mouse = function(container) {\n return d3_mousePoint(container, d3_eventSource());\n };\n var d3_mouse_bug44083 = this.navigator && /WebKit/.test(this.navigator.userAgent) ? -1 : 0;\n function d3_mousePoint(container, e) {\n if (e.changedTouches) e = e.changedTouches[0];\n var svg = container.ownerSVGElement || container;\n if (svg.createSVGPoint) {\n var point = svg.createSVGPoint();\n if (d3_mouse_bug44083 < 0) {\n var window2 = d3_window(container);\n if (window2.scrollX || window2.scrollY) {\n svg = d3.select(\"body\").append(\"svg\").style({\n position: \"absolute\",\n top: 0,\n left: 0,\n margin: 0,\n padding: 0,\n border: \"none\"\n }, \"important\");\n var ctm = svg[0][0].getScreenCTM();\n d3_mouse_bug44083 = !(ctm.f || ctm.e);\n svg.remove();\n }\n }\n if (d3_mouse_bug44083) point.x = e.pageX, point.y = e.pageY;\n else point.x = e.clientX, point.y = e.clientY;\n point = point.matrixTransform(container.getScreenCTM().inverse());\n return [point.x, point.y];\n }\n var rect = container.getBoundingClientRect();\n return [e.clientX - rect.left - container.clientLeft, e.clientY - rect.top - container.clientTop];\n }\n d3.touch = function(container, touches, identifier) {\n if (arguments.length < 3) identifier = touches, touches = d3_eventSource().changedTouches;\n if (touches) for (var i = 0, n = touches.length, touch; i < n; ++i) {\n if ((touch = touches[i]).identifier === identifier) {\n return d3_mousePoint(container, touch);\n }\n }\n };\n d3.behavior.drag = function() {\n var event = d3_eventDispatch(drag, \"drag\", \"dragstart\", \"dragend\"), origin = null, mousedown = dragstart(d3_noop, d3.mouse, d3_window, \"mousemove\", \"mouseup\"), touchstart = dragstart(d3_behavior_dragTouchId, d3.touch, d3_identity, \"touchmove\", \"touchend\");\n function drag() {\n this.on(\"mousedown.drag\", mousedown).on(\"touchstart.drag\", touchstart);\n }\n function dragstart(id, position, subject, move, end) {\n return function() {\n var that = this, target = d3.event.target.correspondingElement || d3.event.target, parent = that.parentNode, dispatch = event.of(that, arguments), dragged = 0, dragId = id(), dragName = \".drag\" + (dragId == null ? \"\" : \"-\" + dragId), dragOffset, dragSubject = d3.select(subject(target)).on(move + dragName, moved).on(end + dragName, ended), dragRestore = d3_event_dragSuppress(target), position0 = position(parent, dragId);\n if (origin) {\n dragOffset = origin.apply(that, arguments);\n dragOffset = [dragOffset.x - position0[0], dragOffset.y - position0[1]];\n } else {\n dragOffset = [0, 0];\n }\n dispatch({\n type: \"dragstart\"\n });\n function moved() {\n var position1 = position(parent, dragId), dx, dy;\n if (!position1) return;\n dx = position1[0] - position0[0];\n dy = position1[1] - position0[1];\n dragged |= dx | dy;\n position0 = position1;\n dispatch({\n type: \"drag\",\n x: position1[0] + dragOffset[0],\n y: position1[1] + dragOffset[1],\n dx,\n dy\n });\n }\n function ended() {\n if (!position(parent, dragId)) return;\n dragSubject.on(move + dragName, null).on(end + dragName, null);\n dragRestore(dragged);\n dispatch({\n type: \"dragend\"\n });\n }\n };\n }\n drag.origin = function(x) {\n if (!arguments.length) return origin;\n origin = x;\n return drag;\n };\n return d3.rebind(drag, event, \"on\");\n };\n function d3_behavior_dragTouchId() {\n return d3.event.changedTouches[0].identifier;\n }\n d3.touches = function(container, touches) {\n if (arguments.length < 2) touches = d3_eventSource().touches;\n return touches ? d3_array(touches).map(function(touch) {\n var point = d3_mousePoint(container, touch);\n point.identifier = touch.identifier;\n return point;\n }) : [];\n };\n var \\u03B5 = 1e-6, \\u03B52 = \\u03B5 * \\u03B5, \\u03C0 = Math.PI, \\u03C4 = 2 * \\u03C0, \\u03C4\\u03B5 = \\u03C4 - \\u03B5, half\\u03C0 = \\u03C0 / 2, d3_radians = \\u03C0 / 180, d3_degrees = 180 / \\u03C0;\n function d3_sgn(x) {\n return x > 0 ? 1 : x < 0 ? -1 : 0;\n }\n function d3_cross2d(a, b, c) {\n return (b[0] - a[0]) * (c[1] - a[1]) - (b[1] - a[1]) * (c[0] - a[0]);\n }\n function d3_acos(x) {\n return x > 1 ? 0 : x < -1 ? \\u03C0 : Math.acos(x);\n }\n function d3_asin(x) {\n return x > 1 ? half\\u03C0 : x < -1 ? -half\\u03C0 : Math.asin(x);\n }\n function d3_sinh(x) {\n return ((x = Math.exp(x)) - 1 / x) / 2;\n }\n function d3_cosh(x) {\n return ((x = Math.exp(x)) + 1 / x) / 2;\n }\n function d3_tanh(x) {\n return ((x = Math.exp(2 * x)) - 1) / (x + 1);\n }\n function d3_haversin(x) {\n return (x = Math.sin(x / 2)) * x;\n }\n var \\u03C1 = Math.SQRT2, \\u03C12 = 2, \\u03C14 = 4;\n d3.interpolateZoom = function(p0, p1) {\n var ux0 = p0[0], uy0 = p0[1], w0 = p0[2], ux1 = p1[0], uy1 = p1[1], w1 = p1[2], dx = ux1 - ux0, dy = uy1 - uy0, d2 = dx * dx + dy * dy, i, S;\n if (d2 < \\u03B52) {\n S = Math.log(w1 / w0) / \\u03C1;\n i = function(t) {\n return [ux0 + t * dx, uy0 + t * dy, w0 * Math.exp(\\u03C1 * t * S)];\n };\n } else {\n var d1 = Math.sqrt(d2), b0 = (w1 * w1 - w0 * w0 + \\u03C14 * d2) / (2 * w0 * \\u03C12 * d1), b1 = (w1 * w1 - w0 * w0 - \\u03C14 * d2) / (2 * w1 * \\u03C12 * d1), r0 = Math.log(Math.sqrt(b0 * b0 + 1) - b0), r1 = Math.log(Math.sqrt(b1 * b1 + 1) - b1);\n S = (r1 - r0) / \\u03C1;\n i = function(t) {\n var s = t * S, coshr0 = d3_cosh(r0), u = w0 / (\\u03C12 * d1) * (coshr0 * d3_tanh(\\u03C1 * s + r0) - d3_sinh(r0));\n return [ux0 + u * dx, uy0 + u * dy, w0 * coshr0 / d3_cosh(\\u03C1 * s + r0)];\n };\n }\n i.duration = S * 1e3;\n return i;\n };\n d3.behavior.zoom = function() {\n var view = {\n x: 0,\n y: 0,\n k: 1\n }, translate0, center0, center, size = [960, 500], scaleExtent = d3_behavior_zoomInfinity, duration = 250, zooming = 0, mousedown = \"mousedown.zoom\", mousemove = \"mousemove.zoom\", mouseup = \"mouseup.zoom\", mousewheelTimer, touchstart = \"touchstart.zoom\", touchtime, event = d3_eventDispatch(zoom, \"zoomstart\", \"zoom\", \"zoomend\"), x0, x1, y0, y1;\n if (!d3_behavior_zoomWheel) {\n d3_behavior_zoomWheel = \"onwheel\" in d3_document ? (d3_behavior_zoomDelta = function() {\n return -d3.event.deltaY * (d3.event.deltaMode ? 120 : 1);\n }, \"wheel\") : \"onmousewheel\" in d3_document ? (d3_behavior_zoomDelta = function() {\n return d3.event.wheelDelta;\n }, \"mousewheel\") : (d3_behavior_zoomDelta = function() {\n return -d3.event.detail;\n }, \"MozMousePixelScroll\");\n }\n function zoom(g) {\n g.on(mousedown, mousedowned).on(d3_behavior_zoomWheel + \".zoom\", mousewheeled).on(\"dblclick.zoom\", dblclicked).on(touchstart, touchstarted);\n }\n zoom.event = function(g) {\n g.each(function() {\n var dispatch = event.of(this, arguments), view1 = view;\n if (d3_transitionInheritId) {\n d3.select(this).transition().each(\"start.zoom\", function() {\n view = this.__chart__ || {\n x: 0,\n y: 0,\n k: 1\n };\n zoomstarted(dispatch);\n }).tween(\"zoom:zoom\", function() {\n var dx = size[0], dy = size[1], cx = center0 ? center0[0] : dx / 2, cy = center0 ? center0[1] : dy / 2, i = d3.interpolateZoom([(cx - view.x) / view.k, (cy - view.y) / view.k, dx / view.k], [(cx - view1.x) / view1.k, (cy - view1.y) / view1.k, dx / view1.k]);\n return function(t) {\n var l = i(t), k = dx / l[2];\n this.__chart__ = view = {\n x: cx - l[0] * k,\n y: cy - l[1] * k,\n k\n };\n zoomed(dispatch);\n };\n }).each(\"interrupt.zoom\", function() {\n zoomended(dispatch);\n }).each(\"end.zoom\", function() {\n zoomended(dispatch);\n });\n } else {\n this.__chart__ = view;\n zoomstarted(dispatch);\n zoomed(dispatch);\n zoomended(dispatch);\n }\n });\n };\n zoom.translate = function(_) {\n if (!arguments.length) return [view.x, view.y];\n view = {\n x: +_[0],\n y: +_[1],\n k: view.k\n };\n rescale();\n return zoom;\n };\n zoom.scale = function(_) {\n if (!arguments.length) return view.k;\n view = {\n x: view.x,\n y: view.y,\n k: null\n };\n scaleTo(+_);\n rescale();\n return zoom;\n };\n zoom.scaleExtent = function(_) {\n if (!arguments.length) return scaleExtent;\n scaleExtent = _ == null ? d3_behavior_zoomInfinity : [+_[0], +_[1]];\n return zoom;\n };\n zoom.center = function(_) {\n if (!arguments.length) return center;\n center = _ && [+_[0], +_[1]];\n return zoom;\n };\n zoom.size = function(_) {\n if (!arguments.length) return size;\n size = _ && [+_[0], +_[1]];\n return zoom;\n };\n zoom.duration = function(_) {\n if (!arguments.length) return duration;\n duration = +_;\n return zoom;\n };\n zoom.x = function(z) {\n if (!arguments.length) return x1;\n x1 = z;\n x0 = z.copy();\n view = {\n x: 0,\n y: 0,\n k: 1\n };\n return zoom;\n };\n zoom.y = function(z) {\n if (!arguments.length) return y1;\n y1 = z;\n y0 = z.copy();\n view = {\n x: 0,\n y: 0,\n k: 1\n };\n return zoom;\n };\n function location(p) {\n return [(p[0] - view.x) / view.k, (p[1] - view.y) / view.k];\n }\n function point(l) {\n return [l[0] * view.k + view.x, l[1] * view.k + view.y];\n }\n function scaleTo(s) {\n view.k = Math.max(scaleExtent[0], Math.min(scaleExtent[1], s));\n }\n function translateTo(p, l) {\n l = point(l);\n view.x += p[0] - l[0];\n view.y += p[1] - l[1];\n }\n function zoomTo(that, p, l, k) {\n that.__chart__ = {\n x: view.x,\n y: view.y,\n k: view.k\n };\n scaleTo(Math.pow(2, k));\n translateTo(center0 = p, l);\n that = d3.select(that);\n if (duration > 0) that = that.transition().duration(duration);\n that.call(zoom.event);\n }\n function rescale() {\n if (x1) x1.domain(x0.range().map(function(x) {\n return (x - view.x) / view.k;\n }).map(x0.invert));\n if (y1) y1.domain(y0.range().map(function(y) {\n return (y - view.y) / view.k;\n }).map(y0.invert));\n }\n function zoomstarted(dispatch) {\n if (!zooming++) dispatch({\n type: \"zoomstart\"\n });\n }\n function zoomed(dispatch) {\n rescale();\n dispatch({\n type: \"zoom\",\n scale: view.k,\n translate: [view.x, view.y]\n });\n }\n function zoomended(dispatch) {\n if (!--zooming) dispatch({\n type: \"zoomend\"\n }), center0 = null;\n }\n function mousedowned() {\n var that = this, dispatch = event.of(that, arguments), dragged = 0, subject = d3.select(d3_window(that)).on(mousemove, moved).on(mouseup, ended), location0 = location(d3.mouse(that)), dragRestore = d3_event_dragSuppress(that);\n d3_selection_interrupt.call(that);\n zoomstarted(dispatch);\n function moved() {\n dragged = 1;\n translateTo(d3.mouse(that), location0);\n zoomed(dispatch);\n }\n function ended() {\n subject.on(mousemove, null).on(mouseup, null);\n dragRestore(dragged);\n zoomended(dispatch);\n }\n }\n function touchstarted() {\n var that = this, dispatch = event.of(that, arguments), locations0 = {}, distance0 = 0, scale0, zoomName = \".zoom-\" + d3.event.changedTouches[0].identifier, touchmove = \"touchmove\" + zoomName, touchend = \"touchend\" + zoomName, targets = [], subject = d3.select(that), dragRestore = d3_event_dragSuppress(that);\n started();\n zoomstarted(dispatch);\n subject.on(mousedown, null).on(touchstart, started);\n function relocate() {\n var touches = d3.touches(that);\n scale0 = view.k;\n touches.forEach(function(t) {\n if (t.identifier in locations0) locations0[t.identifier] = location(t);\n });\n return touches;\n }\n function started() {\n var target = d3.event.target;\n d3.select(target).on(touchmove, moved).on(touchend, ended);\n targets.push(target);\n var changed = d3.event.changedTouches;\n for (var i = 0, n = changed.length; i < n; ++i) {\n locations0[changed[i].identifier] = null;\n }\n var touches = relocate(), now = Date.now();\n if (touches.length === 1) {\n if (now - touchtime < 500) {\n var p = touches[0];\n zoomTo(that, p, locations0[p.identifier], Math.floor(Math.log(view.k) / Math.LN2) + 1);\n d3_eventPreventDefault();\n }\n touchtime = now;\n } else if (touches.length > 1) {\n var p = touches[0], q = touches[1], dx = p[0] - q[0], dy = p[1] - q[1];\n distance0 = dx * dx + dy * dy;\n }\n }\n function moved() {\n var touches = d3.touches(that), p0, l0, p1, l1;\n d3_selection_interrupt.call(that);\n for (var i = 0, n = touches.length; i < n; ++i, l1 = null) {\n p1 = touches[i];\n if (l1 = locations0[p1.identifier]) {\n if (l0) break;\n p0 = p1, l0 = l1;\n }\n }\n if (l1) {\n var distance1 = (distance1 = p1[0] - p0[0]) * distance1 + (distance1 = p1[1] - p0[1]) * distance1, scale1 = distance0 && Math.sqrt(distance1 / distance0);\n p0 = [(p0[0] + p1[0]) / 2, (p0[1] + p1[1]) / 2];\n l0 = [(l0[0] + l1[0]) / 2, (l0[1] + l1[1]) / 2];\n scaleTo(scale1 * scale0);\n }\n touchtime = null;\n translateTo(p0, l0);\n zoomed(dispatch);\n }\n function ended() {\n if (d3.event.touches.length) {\n var changed = d3.event.changedTouches;\n for (var i = 0, n = changed.length; i < n; ++i) {\n delete locations0[changed[i].identifier];\n }\n for (var identifier in locations0) {\n return void relocate();\n }\n }\n d3.selectAll(targets).on(zoomName, null);\n subject.on(mousedown, mousedowned).on(touchstart, touchstarted);\n dragRestore();\n zoomended(dispatch);\n }\n }\n function mousewheeled() {\n var dispatch = event.of(this, arguments);\n if (mousewheelTimer) clearTimeout(mousewheelTimer);\n else d3_selection_interrupt.call(this), translate0 = location(center0 = center || d3.mouse(this)), zoomstarted(dispatch);\n mousewheelTimer = setTimeout(function() {\n mousewheelTimer = null;\n zoomended(dispatch);\n }, 50);\n d3_eventPreventDefault();\n scaleTo(Math.pow(2, d3_behavior_zoomDelta() * 2e-3) * view.k);\n translateTo(center0, translate0);\n zoomed(dispatch);\n }\n function dblclicked() {\n var p = d3.mouse(this), k = Math.log(view.k) / Math.LN2;\n zoomTo(this, p, location(p), d3.event.shiftKey ? Math.ceil(k) - 1 : Math.floor(k) + 1);\n }\n return d3.rebind(zoom, event, \"on\");\n };\n var d3_behavior_zoomInfinity = [0, Infinity], d3_behavior_zoomDelta, d3_behavior_zoomWheel;\n d3.color = d3_color;\n function d3_color() {\n }\n d3_color.prototype.toString = function() {\n return this.rgb() + \"\";\n };\n d3.hsl = d3_hsl;\n function d3_hsl(h, s, l) {\n return this instanceof d3_hsl ? void (this.h = +h, this.s = +s, this.l = +l) : arguments.length < 2 ? h instanceof d3_hsl ? new d3_hsl(h.h, h.s, h.l) : d3_rgb_parse(\"\" + h, d3_rgb_hsl, d3_hsl) : new d3_hsl(h, s, l);\n }\n var d3_hslPrototype = d3_hsl.prototype = new d3_color();\n d3_hslPrototype.brighter = function(k) {\n k = Math.pow(0.7, arguments.length ? k : 1);\n return new d3_hsl(this.h, this.s, this.l / k);\n };\n d3_hslPrototype.darker = function(k) {\n k = Math.pow(0.7, arguments.length ? k : 1);\n return new d3_hsl(this.h, this.s, k * this.l);\n };\n d3_hslPrototype.rgb = function() {\n return d3_hsl_rgb(this.h, this.s, this.l);\n };\n function d3_hsl_rgb(h, s, l) {\n var m1, m2;\n h = isNaN(h) ? 0 : (h %= 360) < 0 ? h + 360 : h;\n s = isNaN(s) ? 0 : s < 0 ? 0 : s > 1 ? 1 : s;\n l = l < 0 ? 0 : l > 1 ? 1 : l;\n m2 = l <= 0.5 ? l * (1 + s) : l + s - l * s;\n m1 = 2 * l - m2;\n function v(h2) {\n if (h2 > 360) h2 -= 360;\n else if (h2 < 0) h2 += 360;\n if (h2 < 60) return m1 + (m2 - m1) * h2 / 60;\n if (h2 < 180) return m2;\n if (h2 < 240) return m1 + (m2 - m1) * (240 - h2) / 60;\n return m1;\n }\n function vv(h2) {\n return Math.round(v(h2) * 255);\n }\n return new d3_rgb(vv(h + 120), vv(h), vv(h - 120));\n }\n d3.hcl = d3_hcl;\n function d3_hcl(h, c, l) {\n return this instanceof d3_hcl ? void (this.h = +h, this.c = +c, this.l = +l) : arguments.length < 2 ? h instanceof d3_hcl ? new d3_hcl(h.h, h.c, h.l) : h instanceof d3_lab ? d3_lab_hcl(h.l, h.a, h.b) : d3_lab_hcl((h = d3_rgb_lab((h = d3.rgb(h)).r, h.g, h.b)).l, h.a, h.b) : new d3_hcl(h, c, l);\n }\n var d3_hclPrototype = d3_hcl.prototype = new d3_color();\n d3_hclPrototype.brighter = function(k) {\n return new d3_hcl(this.h, this.c, Math.min(100, this.l + d3_lab_K * (arguments.length ? k : 1)));\n };\n d3_hclPrototype.darker = function(k) {\n return new d3_hcl(this.h, this.c, Math.max(0, this.l - d3_lab_K * (arguments.length ? k : 1)));\n };\n d3_hclPrototype.rgb = function() {\n return d3_hcl_lab(this.h, this.c, this.l).rgb();\n };\n function d3_hcl_lab(h, c, l) {\n if (isNaN(h)) h = 0;\n if (isNaN(c)) c = 0;\n return new d3_lab(l, Math.cos(h *= d3_radians) * c, Math.sin(h) * c);\n }\n d3.lab = d3_lab;\n function d3_lab(l, a, b) {\n return this instanceof d3_lab ? void (this.l = +l, this.a = +a, this.b = +b) : arguments.length < 2 ? l instanceof d3_lab ? new d3_lab(l.l, l.a, l.b) : l instanceof d3_hcl ? d3_hcl_lab(l.h, l.c, l.l) : d3_rgb_lab((l = d3_rgb(l)).r, l.g, l.b) : new d3_lab(l, a, b);\n }\n var d3_lab_K = 18;\n var d3_lab_X = 0.95047, d3_lab_Y = 1, d3_lab_Z = 1.08883;\n var d3_labPrototype = d3_lab.prototype = new d3_color();\n d3_labPrototype.brighter = function(k) {\n return new d3_lab(Math.min(100, this.l + d3_lab_K * (arguments.length ? k : 1)), this.a, this.b);\n };\n d3_labPrototype.darker = function(k) {\n return new d3_lab(Math.max(0, this.l - d3_lab_K * (arguments.length ? k : 1)), this.a, this.b);\n };\n d3_labPrototype.rgb = function() {\n return d3_lab_rgb(this.l, this.a, this.b);\n };\n function d3_lab_rgb(l, a, b) {\n var y = (l + 16) / 116, x = y + a / 500, z = y - b / 200;\n x = d3_lab_xyz(x) * d3_lab_X;\n y = d3_lab_xyz(y) * d3_lab_Y;\n z = d3_lab_xyz(z) * d3_lab_Z;\n return new d3_rgb(d3_xyz_rgb(3.2404542 * x - 1.5371385 * y - 0.4985314 * z), d3_xyz_rgb(-0.969266 * x + 1.8760108 * y + 0.041556 * z), d3_xyz_rgb(0.0556434 * x - 0.2040259 * y + 1.0572252 * z));\n }\n function d3_lab_hcl(l, a, b) {\n return l > 0 ? new d3_hcl(Math.atan2(b, a) * d3_degrees, Math.sqrt(a * a + b * b), l) : new d3_hcl(NaN, NaN, l);\n }\n function d3_lab_xyz(x) {\n return x > 0.206893034 ? x * x * x : (x - 4 / 29) / 7.787037;\n }\n function d3_xyz_lab(x) {\n return x > 8856e-6 ? Math.pow(x, 1 / 3) : 7.787037 * x + 4 / 29;\n }\n function d3_xyz_rgb(r) {\n return Math.round(255 * (r <= 304e-5 ? 12.92 * r : 1.055 * Math.pow(r, 1 / 2.4) - 0.055));\n }\n d3.rgb = d3_rgb;\n function d3_rgb(r, g, b) {\n return this instanceof d3_rgb ? void (this.r = ~~r, this.g = ~~g, this.b = ~~b) : arguments.length < 2 ? r instanceof d3_rgb ? new d3_rgb(r.r, r.g, r.b) : d3_rgb_parse(\"\" + r, d3_rgb, d3_hsl_rgb) : new d3_rgb(r, g, b);\n }\n function d3_rgbNumber(value) {\n return new d3_rgb(value >> 16, value >> 8 & 255, value & 255);\n }\n function d3_rgbString(value) {\n return d3_rgbNumber(value) + \"\";\n }\n var d3_rgbPrototype = d3_rgb.prototype = new d3_color();\n d3_rgbPrototype.brighter = function(k) {\n k = Math.pow(0.7, arguments.length ? k : 1);\n var r = this.r, g = this.g, b = this.b, i = 30;\n if (!r && !g && !b) return new d3_rgb(i, i, i);\n if (r && r < i) r = i;\n if (g && g < i) g = i;\n if (b && b < i) b = i;\n return new d3_rgb(Math.min(255, r / k), Math.min(255, g / k), Math.min(255, b / k));\n };\n d3_rgbPrototype.darker = function(k) {\n k = Math.pow(0.7, arguments.length ? k : 1);\n return new d3_rgb(k * this.r, k * this.g, k * this.b);\n };\n d3_rgbPrototype.hsl = function() {\n return d3_rgb_hsl(this.r, this.g, this.b);\n };\n d3_rgbPrototype.toString = function() {\n return \"#\" + d3_rgb_hex(this.r) + d3_rgb_hex(this.g) + d3_rgb_hex(this.b);\n };\n function d3_rgb_hex(v) {\n return v < 16 ? \"0\" + Math.max(0, v).toString(16) : Math.min(255, v).toString(16);\n }\n function d3_rgb_parse(format, rgb, hsl) {\n var r = 0, g = 0, b = 0, m1, m2, color;\n m1 = /([a-z]+)\\((.*)\\)/.exec(format = format.toLowerCase());\n if (m1) {\n m2 = m1[2].split(\",\");\n switch (m1[1]) {\n case \"hsl\": {\n return hsl(parseFloat(m2[0]), parseFloat(m2[1]) / 100, parseFloat(m2[2]) / 100);\n }\n case \"rgb\": {\n return rgb(d3_rgb_parseNumber(m2[0]), d3_rgb_parseNumber(m2[1]), d3_rgb_parseNumber(m2[2]));\n }\n }\n }\n if (color = d3_rgb_names.get(format)) {\n return rgb(color.r, color.g, color.b);\n }\n if (format != null && format.charAt(0) === \"#\" && !isNaN(color = parseInt(format.slice(1), 16))) {\n if (format.length === 4) {\n r = (color & 3840) >> 4;\n r = r >> 4 | r;\n g = color & 240;\n g = g >> 4 | g;\n b = color & 15;\n b = b << 4 | b;\n } else if (format.length === 7) {\n r = (color & 16711680) >> 16;\n g = (color & 65280) >> 8;\n b = color & 255;\n }\n }\n return rgb(r, g, b);\n }\n function d3_rgb_hsl(r, g, b) {\n var min = Math.min(r /= 255, g /= 255, b /= 255), max = Math.max(r, g, b), d = max - min, h, s, l = (max + min) / 2;\n if (d) {\n s = l < 0.5 ? d / (max + min) : d / (2 - max - min);\n if (r == max) h = (g - b) / d + (g < b ? 6 : 0);\n else if (g == max) h = (b - r) / d + 2;\n else h = (r - g) / d + 4;\n h *= 60;\n } else {\n h = NaN;\n s = l > 0 && l < 1 ? 0 : h;\n }\n return new d3_hsl(h, s, l);\n }\n function d3_rgb_lab(r, g, b) {\n r = d3_rgb_xyz(r);\n g = d3_rgb_xyz(g);\n b = d3_rgb_xyz(b);\n var x = d3_xyz_lab((0.4124564 * r + 0.3575761 * g + 0.1804375 * b) / d3_lab_X), y = d3_xyz_lab((0.2126729 * r + 0.7151522 * g + 0.072175 * b) / d3_lab_Y), z = d3_xyz_lab((0.0193339 * r + 0.119192 * g + 0.9503041 * b) / d3_lab_Z);\n return d3_lab(116 * y - 16, 500 * (x - y), 200 * (y - z));\n }\n function d3_rgb_xyz(r) {\n return (r /= 255) <= 0.04045 ? r / 12.92 : Math.pow((r + 0.055) / 1.055, 2.4);\n }\n function d3_rgb_parseNumber(c) {\n var f = parseFloat(c);\n return c.charAt(c.length - 1) === \"%\" ? Math.round(f * 2.55) : f;\n }\n var d3_rgb_names = d3.map({\n aliceblue: 15792383,\n antiquewhite: 16444375,\n aqua: 65535,\n aquamarine: 8388564,\n azure: 15794175,\n beige: 16119260,\n bisque: 16770244,\n black: 0,\n blanchedalmond: 16772045,\n blue: 255,\n blueviolet: 9055202,\n brown: 10824234,\n burlywood: 14596231,\n cadetblue: 6266528,\n chartreuse: 8388352,\n chocolate: 13789470,\n coral: 16744272,\n cornflowerblue: 6591981,\n cornsilk: 16775388,\n crimson: 14423100,\n cyan: 65535,\n darkblue: 139,\n darkcyan: 35723,\n darkgoldenrod: 12092939,\n darkgray: 11119017,\n darkgreen: 25600,\n darkgrey: 11119017,\n darkkhaki: 12433259,\n darkmagenta: 9109643,\n darkolivegreen: 5597999,\n darkorange: 16747520,\n darkorchid: 10040012,\n darkred: 9109504,\n darksalmon: 15308410,\n darkseagreen: 9419919,\n darkslateblue: 4734347,\n darkslategray: 3100495,\n darkslategrey: 3100495,\n darkturquoise: 52945,\n darkviolet: 9699539,\n deeppink: 16716947,\n deepskyblue: 49151,\n dimgray: 6908265,\n dimgrey: 6908265,\n dodgerblue: 2003199,\n firebrick: 11674146,\n floralwhite: 16775920,\n forestgreen: 2263842,\n fuchsia: 16711935,\n gainsboro: 14474460,\n ghostwhite: 16316671,\n gold: 16766720,\n goldenrod: 14329120,\n gray: 8421504,\n green: 32768,\n greenyellow: 11403055,\n grey: 8421504,\n honeydew: 15794160,\n hotpink: 16738740,\n indianred: 13458524,\n indigo: 4915330,\n ivory: 16777200,\n khaki: 15787660,\n lavender: 15132410,\n lavenderblush: 16773365,\n lawngreen: 8190976,\n lemonchiffon: 16775885,\n lightblue: 11393254,\n lightcoral: 15761536,\n lightcyan: 14745599,\n lightgoldenrodyellow: 16448210,\n lightgray: 13882323,\n lightgreen: 9498256,\n lightgrey: 13882323,\n lightpink: 16758465,\n lightsalmon: 16752762,\n lightseagreen: 2142890,\n lightskyblue: 8900346,\n lightslategray: 7833753,\n lightslategrey: 7833753,\n lightsteelblue: 11584734,\n lightyellow: 16777184,\n lime: 65280,\n limegreen: 3329330,\n linen: 16445670,\n magenta: 16711935,\n maroon: 8388608,\n mediumaquamarine: 6737322,\n mediumblue: 205,\n mediumorchid: 12211667,\n mediumpurple: 9662683,\n mediumseagreen: 3978097,\n mediumslateblue: 8087790,\n mediumspringgreen: 64154,\n mediumturquoise: 4772300,\n mediumvioletred: 13047173,\n midnightblue: 1644912,\n mintcream: 16121850,\n mistyrose: 16770273,\n moccasin: 16770229,\n navajowhite: 16768685,\n navy: 128,\n oldlace: 16643558,\n olive: 8421376,\n olivedrab: 7048739,\n orange: 16753920,\n orangered: 16729344,\n orchid: 14315734,\n palegoldenrod: 15657130,\n palegreen: 10025880,\n paleturquoise: 11529966,\n palevioletred: 14381203,\n papayawhip: 16773077,\n peachpuff: 16767673,\n peru: 13468991,\n pink: 16761035,\n plum: 14524637,\n powderblue: 11591910,\n purple: 8388736,\n rebeccapurple: 6697881,\n red: 16711680,\n rosybrown: 12357519,\n royalblue: 4286945,\n saddlebrown: 9127187,\n salmon: 16416882,\n sandybrown: 16032864,\n seagreen: 3050327,\n seashell: 16774638,\n sienna: 10506797,\n silver: 12632256,\n skyblue: 8900331,\n slateblue: 6970061,\n slategray: 7372944,\n slategrey: 7372944,\n snow: 16775930,\n springgreen: 65407,\n steelblue: 4620980,\n tan: 13808780,\n teal: 32896,\n thistle: 14204888,\n tomato: 16737095,\n turquoise: 4251856,\n violet: 15631086,\n wheat: 16113331,\n white: 16777215,\n whitesmoke: 16119285,\n yellow: 16776960,\n yellowgreen: 10145074\n });\n d3_rgb_names.forEach(function(key, value) {\n d3_rgb_names.set(key, d3_rgbNumber(value));\n });\n function d3_functor(v) {\n return typeof v === \"function\" ? v : function() {\n return v;\n };\n }\n d3.functor = d3_functor;\n d3.xhr = d3_xhrType(d3_identity);\n function d3_xhrType(response) {\n return function(url, mimeType, callback) {\n if (arguments.length === 2 && typeof mimeType === \"function\") callback = mimeType, mimeType = null;\n return d3_xhr(url, mimeType, response, callback);\n };\n }\n function d3_xhr(url, mimeType, response, callback) {\n var xhr = {}, dispatch = d3.dispatch(\"beforesend\", \"progress\", \"load\", \"error\"), headers = {}, request = new XMLHttpRequest(), responseType = null;\n if (self.XDomainRequest && !(\"withCredentials\" in request) && /^(http(s)?:)?\\/\\//.test(url)) request = new XDomainRequest();\n \"onload\" in request ? request.onload = request.onerror = respond : request.onreadystatechange = function() {\n request.readyState > 3 && respond();\n };\n function respond() {\n var status = request.status, result;\n if (!status && d3_xhrHasResponse(request) || status >= 200 && status < 300 || status === 304) {\n try {\n result = response.call(xhr, request);\n } catch (e) {\n dispatch.error.call(xhr, e);\n return;\n }\n dispatch.load.call(xhr, result);\n } else {\n dispatch.error.call(xhr, request);\n }\n }\n request.onprogress = function(event) {\n var o = d3.event;\n d3.event = event;\n try {\n dispatch.progress.call(xhr, request);\n } finally {\n d3.event = o;\n }\n };\n xhr.header = function(name, value) {\n name = (name + \"\").toLowerCase();\n if (arguments.length < 2) return headers[name];\n if (value == null) delete headers[name];\n else headers[name] = value + \"\";\n return xhr;\n };\n xhr.mimeType = function(value) {\n if (!arguments.length) return mimeType;\n mimeType = value == null ? null : value + \"\";\n return xhr;\n };\n xhr.responseType = function(value) {\n if (!arguments.length) return responseType;\n responseType = value;\n return xhr;\n };\n xhr.response = function(value) {\n response = value;\n return xhr;\n };\n [\"get\", \"post\"].forEach(function(method) {\n xhr[method] = function() {\n return xhr.send.apply(xhr, [method].concat(d3_array(arguments)));\n };\n });\n xhr.send = function(method, data, callback2) {\n if (arguments.length === 2 && typeof data === \"function\") callback2 = data, data = null;\n request.open(method, url, true);\n if (mimeType != null && !(\"accept\" in headers)) headers[\"accept\"] = mimeType + \",*/*\";\n if (request.setRequestHeader) for (var name in headers) request.setRequestHeader(name, headers[name]);\n if (mimeType != null && request.overrideMimeType) request.overrideMimeType(mimeType);\n if (responseType != null) request.responseType = responseType;\n if (callback2 != null) xhr.on(\"error\", callback2).on(\"load\", function(request2) {\n callback2(null, request2);\n });\n dispatch.beforesend.call(xhr, request);\n request.send(data == null ? null : data);\n return xhr;\n };\n xhr.abort = function() {\n request.abort();\n return xhr;\n };\n d3.rebind(xhr, dispatch, \"on\");\n return callback == null ? xhr : xhr.get(d3_xhr_fixCallback(callback));\n }\n function d3_xhr_fixCallback(callback) {\n return callback.length === 1 ? function(error, request) {\n callback(error == null ? request : null);\n } : callback;\n }\n function d3_xhrHasResponse(request) {\n var type = request.responseType;\n return type && type !== \"text\" ? request.response : request.responseText;\n }\n d3.dsv = function(delimiter, mimeType) {\n var reFormat = new RegExp('[\"' + delimiter + \"\\n]\"), delimiterCode = delimiter.charCodeAt(0);\n function dsv(url, row, callback) {\n if (arguments.length < 3) callback = row, row = null;\n var xhr = d3_xhr(url, mimeType, row == null ? response : typedResponse(row), callback);\n xhr.row = function(_) {\n return arguments.length ? xhr.response((row = _) == null ? response : typedResponse(_)) : row;\n };\n return xhr;\n }\n function response(request) {\n return dsv.parse(request.responseText);\n }\n function typedResponse(f) {\n return function(request) {\n return dsv.parse(request.responseText, f);\n };\n }\n dsv.parse = function(text, f) {\n var o;\n return dsv.parseRows(text, function(row, i) {\n if (o) return o(row, i - 1);\n var a = function(d) {\n var obj = {};\n var len = row.length;\n for (var k = 0; k < len; ++k) {\n obj[row[k]] = d[k];\n }\n return obj;\n };\n o = f ? function(row2, i2) {\n return f(a(row2), i2);\n } : a;\n });\n };\n dsv.parseRows = function(text, f) {\n var EOL = {}, EOF = {}, rows = [], N = text.length, I = 0, n = 0, t, eol;\n function token() {\n if (I >= N) return EOF;\n if (eol) return eol = false, EOL;\n var j = I;\n if (text.charCodeAt(j) === 34) {\n var i = j;\n while (i++ < N) {\n if (text.charCodeAt(i) === 34) {\n if (text.charCodeAt(i + 1) !== 34) break;\n ++i;\n }\n }\n I = i + 2;\n var c = text.charCodeAt(i + 1);\n if (c === 13) {\n eol = true;\n if (text.charCodeAt(i + 2) === 10) ++I;\n } else if (c === 10) {\n eol = true;\n }\n return text.slice(j + 1, i).replace(/\"\"/g, '\"');\n }\n while (I < N) {\n var c = text.charCodeAt(I++), k = 1;\n if (c === 10) eol = true;\n else if (c === 13) {\n eol = true;\n if (text.charCodeAt(I) === 10) ++I, ++k;\n } else if (c !== delimiterCode) continue;\n return text.slice(j, I - k);\n }\n return text.slice(j);\n }\n while ((t = token()) !== EOF) {\n var a = [];\n while (t !== EOL && t !== EOF) {\n a.push(t);\n t = token();\n }\n if (f && (a = f(a, n++)) == null) continue;\n rows.push(a);\n }\n return rows;\n };\n dsv.format = function(rows) {\n if (Array.isArray(rows[0])) return dsv.formatRows(rows);\n var fieldSet = new d3_Set(), fields = [];\n rows.forEach(function(row) {\n for (var field in row) {\n if (!fieldSet.has(field)) {\n fields.push(fieldSet.add(field));\n }\n }\n });\n return [fields.map(formatValue).join(delimiter)].concat(rows.map(function(row) {\n return fields.map(function(field) {\n return formatValue(row[field]);\n }).join(delimiter);\n })).join(\"\\n\");\n };\n dsv.formatRows = function(rows) {\n return rows.map(formatRow).join(\"\\n\");\n };\n function formatRow(row) {\n return row.map(formatValue).join(delimiter);\n }\n function formatValue(text) {\n return reFormat.test(text) ? '\"' + text.replace(/\\\"/g, '\"\"') + '\"' : text;\n }\n return dsv;\n };\n d3.csv = d3.dsv(\",\", \"text/csv\");\n d3.tsv = d3.dsv(\"\t\", \"text/tab-separated-values\");\n var d3_timer_queueHead, d3_timer_queueTail, d3_timer_interval, d3_timer_timeout, d3_timer_frame = this[d3_vendorSymbol(this, \"requestAnimationFrame\")] || function(callback) {\n setTimeout(callback, 17);\n };\n d3.timer = function() {\n d3_timer.apply(this, arguments);\n };\n function d3_timer(callback, delay, then) {\n var n = arguments.length;\n if (n < 2) delay = 0;\n if (n < 3) then = Date.now();\n var time = then + delay, timer = {\n c: callback,\n t: time,\n n: null\n };\n if (d3_timer_queueTail) d3_timer_queueTail.n = timer;\n else d3_timer_queueHead = timer;\n d3_timer_queueTail = timer;\n if (!d3_timer_interval) {\n d3_timer_timeout = clearTimeout(d3_timer_timeout);\n d3_timer_interval = 1;\n d3_timer_frame(d3_timer_step);\n }\n return timer;\n }\n function d3_timer_step() {\n var now = d3_timer_mark(), delay = d3_timer_sweep() - now;\n if (delay > 24) {\n if (isFinite(delay)) {\n clearTimeout(d3_timer_timeout);\n d3_timer_timeout = setTimeout(d3_timer_step, delay);\n }\n d3_timer_interval = 0;\n } else {\n d3_timer_interval = 1;\n d3_timer_frame(d3_timer_step);\n }\n }\n d3.timer.flush = function() {\n d3_timer_mark();\n d3_timer_sweep();\n };\n function d3_timer_mark() {\n var now = Date.now(), timer = d3_timer_queueHead;\n while (timer) {\n if (now >= timer.t && timer.c(now - timer.t)) timer.c = null;\n timer = timer.n;\n }\n return now;\n }\n function d3_timer_sweep() {\n var t0, t1 = d3_timer_queueHead, time = Infinity;\n while (t1) {\n if (t1.c) {\n if (t1.t < time) time = t1.t;\n t1 = (t0 = t1).n;\n } else {\n t1 = t0 ? t0.n = t1.n : d3_timer_queueHead = t1.n;\n }\n }\n d3_timer_queueTail = t0;\n return time;\n }\n d3.round = function(x, n) {\n return n ? Math.round(x * (n = Math.pow(10, n))) / n : Math.round(x);\n };\n d3.geom = {};\n function d3_geom_pointX(d) {\n return d[0];\n }\n function d3_geom_pointY(d) {\n return d[1];\n }\n d3.geom.hull = function(vertices) {\n var x = d3_geom_pointX, y = d3_geom_pointY;\n if (arguments.length) return hull(vertices);\n function hull(data) {\n if (data.length < 3) return [];\n var fx = d3_functor(x), fy = d3_functor(y), i, n = data.length, points = [], flippedPoints = [];\n for (i = 0; i < n; i++) {\n points.push([+fx.call(this, data[i], i), +fy.call(this, data[i], i), i]);\n }\n points.sort(d3_geom_hullOrder);\n for (i = 0; i < n; i++) flippedPoints.push([points[i][0], -points[i][1]]);\n var upper = d3_geom_hullUpper(points), lower = d3_geom_hullUpper(flippedPoints);\n var skipLeft = lower[0] === upper[0], skipRight = lower[lower.length - 1] === upper[upper.length - 1], polygon = [];\n for (i = upper.length - 1; i >= 0; --i) polygon.push(data[points[upper[i]][2]]);\n for (i = +skipLeft; i < lower.length - skipRight; ++i) polygon.push(data[points[lower[i]][2]]);\n return polygon;\n }\n hull.x = function(_) {\n return arguments.length ? (x = _, hull) : x;\n };\n hull.y = function(_) {\n return arguments.length ? (y = _, hull) : y;\n };\n return hull;\n };\n function d3_geom_hullUpper(points) {\n var n = points.length, hull = [0, 1], hs = 2;\n for (var i = 2; i < n; i++) {\n while (hs > 1 && d3_cross2d(points[hull[hs - 2]], points[hull[hs - 1]], points[i]) <= 0) --hs;\n hull[hs++] = i;\n }\n return hull.slice(0, hs);\n }\n function d3_geom_hullOrder(a, b) {\n return a[0] - b[0] || a[1] - b[1];\n }\n d3.geom.polygon = function(coordinates) {\n d3_subclass(coordinates, d3_geom_polygonPrototype);\n return coordinates;\n };\n var d3_geom_polygonPrototype = d3.geom.polygon.prototype = [];\n d3_geom_polygonPrototype.area = function() {\n var i = -1, n = this.length, a, b = this[n - 1], area = 0;\n while (++i < n) {\n a = b;\n b = this[i];\n area += a[1] * b[0] - a[0] * b[1];\n }\n return area * 0.5;\n };\n d3_geom_polygonPrototype.centroid = function(k) {\n var i = -1, n = this.length, x = 0, y = 0, a, b = this[n - 1], c;\n if (!arguments.length) k = -1 / (6 * this.area());\n while (++i < n) {\n a = b;\n b = this[i];\n c = a[0] * b[1] - b[0] * a[1];\n x += (a[0] + b[0]) * c;\n y += (a[1] + b[1]) * c;\n }\n return [x * k, y * k];\n };\n d3_geom_polygonPrototype.clip = function(subject) {\n var input, closed = d3_geom_polygonClosed(subject), i = -1, n = this.length - d3_geom_polygonClosed(this), j, m, a = this[n - 1], b, c, d;\n while (++i < n) {\n input = subject.slice();\n subject.length = 0;\n b = this[i];\n c = input[(m = input.length - closed) - 1];\n j = -1;\n while (++j < m) {\n d = input[j];\n if (d3_geom_polygonInside(d, a, b)) {\n if (!d3_geom_polygonInside(c, a, b)) {\n subject.push(d3_geom_polygonIntersect(c, d, a, b));\n }\n subject.push(d);\n } else if (d3_geom_polygonInside(c, a, b)) {\n subject.push(d3_geom_polygonIntersect(c, d, a, b));\n }\n c = d;\n }\n if (closed) subject.push(subject[0]);\n a = b;\n }\n return subject;\n };\n function d3_geom_polygonInside(p, a, b) {\n return (b[0] - a[0]) * (p[1] - a[1]) < (b[1] - a[1]) * (p[0] - a[0]);\n }\n function d3_geom_polygonIntersect(c, d, a, b) {\n var x1 = c[0], x3 = a[0], x21 = d[0] - x1, x43 = b[0] - x3, y1 = c[1], y3 = a[1], y21 = d[1] - y1, y43 = b[1] - y3, ua = (x43 * (y1 - y3) - y43 * (x1 - x3)) / (y43 * x21 - x43 * y21);\n return [x1 + ua * x21, y1 + ua * y21];\n }\n function d3_geom_polygonClosed(coordinates) {\n var a = coordinates[0], b = coordinates[coordinates.length - 1];\n return !(a[0] - b[0] || a[1] - b[1]);\n }\n var d3_geom_voronoiEdges, d3_geom_voronoiCells, d3_geom_voronoiBeaches, d3_geom_voronoiBeachPool = [], d3_geom_voronoiFirstCircle, d3_geom_voronoiCircles, d3_geom_voronoiCirclePool = [];\n function d3_geom_voronoiBeach() {\n d3_geom_voronoiRedBlackNode(this);\n this.edge = this.site = this.circle = null;\n }\n function d3_geom_voronoiCreateBeach(site) {\n var beach = d3_geom_voronoiBeachPool.pop() || new d3_geom_voronoiBeach();\n beach.site = site;\n return beach;\n }\n function d3_geom_voronoiDetachBeach(beach) {\n d3_geom_voronoiDetachCircle(beach);\n d3_geom_voronoiBeaches.remove(beach);\n d3_geom_voronoiBeachPool.push(beach);\n d3_geom_voronoiRedBlackNode(beach);\n }\n function d3_geom_voronoiRemoveBeach(beach) {\n var circle = beach.circle, x = circle.x, y = circle.cy, vertex = {\n x,\n y\n }, previous = beach.P, next = beach.N, disappearing = [beach];\n d3_geom_voronoiDetachBeach(beach);\n var lArc = previous;\n while (lArc.circle && abs(x - lArc.circle.x) < \\u03B5 && abs(y - lArc.circle.cy) < \\u03B5) {\n previous = lArc.P;\n disappearing.unshift(lArc);\n d3_geom_voronoiDetachBeach(lArc);\n lArc = previous;\n }\n disappearing.unshift(lArc);\n d3_geom_voronoiDetachCircle(lArc);\n var rArc = next;\n while (rArc.circle && abs(x - rArc.circle.x) < \\u03B5 && abs(y - rArc.circle.cy) < \\u03B5) {\n next = rArc.N;\n disappearing.push(rArc);\n d3_geom_voronoiDetachBeach(rArc);\n rArc = next;\n }\n disappearing.push(rArc);\n d3_geom_voronoiDetachCircle(rArc);\n var nArcs = disappearing.length, iArc;\n for (iArc = 1; iArc < nArcs; ++iArc) {\n rArc = disappearing[iArc];\n lArc = disappearing[iArc - 1];\n d3_geom_voronoiSetEdgeEnd(rArc.edge, lArc.site, rArc.site, vertex);\n }\n lArc = disappearing[0];\n rArc = disappearing[nArcs - 1];\n rArc.edge = d3_geom_voronoiCreateEdge(lArc.site, rArc.site, null, vertex);\n d3_geom_voronoiAttachCircle(lArc);\n d3_geom_voronoiAttachCircle(rArc);\n }\n function d3_geom_voronoiAddBeach(site) {\n var x = site.x, directrix = site.y, lArc, rArc, dxl, dxr, node = d3_geom_voronoiBeaches._;\n while (node) {\n dxl = d3_geom_voronoiLeftBreakPoint(node, directrix) - x;\n if (dxl > \\u03B5) node = node.L;\n else {\n dxr = x - d3_geom_voronoiRightBreakPoint(node, directrix);\n if (dxr > \\u03B5) {\n if (!node.R) {\n lArc = node;\n break;\n }\n node = node.R;\n } else {\n if (dxl > -\\u03B5) {\n lArc = node.P;\n rArc = node;\n } else if (dxr > -\\u03B5) {\n lArc = node;\n rArc = node.N;\n } else {\n lArc = rArc = node;\n }\n break;\n }\n }\n }\n var newArc = d3_geom_voronoiCreateBeach(site);\n d3_geom_voronoiBeaches.insert(lArc, newArc);\n if (!lArc && !rArc) return;\n if (lArc === rArc) {\n d3_geom_voronoiDetachCircle(lArc);\n rArc = d3_geom_voronoiCreateBeach(lArc.site);\n d3_geom_voronoiBeaches.insert(newArc, rArc);\n newArc.edge = rArc.edge = d3_geom_voronoiCreateEdge(lArc.site, newArc.site);\n d3_geom_voronoiAttachCircle(lArc);\n d3_geom_voronoiAttachCircle(rArc);\n return;\n }\n if (!rArc) {\n newArc.edge = d3_geom_voronoiCreateEdge(lArc.site, newArc.site);\n return;\n }\n d3_geom_voronoiDetachCircle(lArc);\n d3_geom_voronoiDetachCircle(rArc);\n var lSite = lArc.site, ax = lSite.x, ay = lSite.y, bx = site.x - ax, by = site.y - ay, rSite = rArc.site, cx = rSite.x - ax, cy = rSite.y - ay, d = 2 * (bx * cy - by * cx), hb = bx * bx + by * by, hc = cx * cx + cy * cy, vertex = {\n x: (cy * hb - by * hc) / d + ax,\n y: (bx * hc - cx * hb) / d + ay\n };\n d3_geom_voronoiSetEdgeEnd(rArc.edge, lSite, rSite, vertex);\n newArc.edge = d3_geom_voronoiCreateEdge(lSite, site, null, vertex);\n rArc.edge = d3_geom_voronoiCreateEdge(site, rSite, null, vertex);\n d3_geom_voronoiAttachCircle(lArc);\n d3_geom_voronoiAttachCircle(rArc);\n }\n function d3_geom_voronoiLeftBreakPoint(arc, directrix) {\n var site = arc.site, rfocx = site.x, rfocy = site.y, pby2 = rfocy - directrix;\n if (!pby2) return rfocx;\n var lArc = arc.P;\n if (!lArc) return -Infinity;\n site = lArc.site;\n var lfocx = site.x, lfocy = site.y, plby2 = lfocy - directrix;\n if (!plby2) return lfocx;\n var hl = lfocx - rfocx, aby2 = 1 / pby2 - 1 / plby2, b = hl / plby2;\n if (aby2) return (-b + Math.sqrt(b * b - 2 * aby2 * (hl * hl / (-2 * plby2) - lfocy + plby2 / 2 + rfocy - pby2 / 2))) / aby2 + rfocx;\n return (rfocx + lfocx) / 2;\n }\n function d3_geom_voronoiRightBreakPoint(arc, directrix) {\n var rArc = arc.N;\n if (rArc) return d3_geom_voronoiLeftBreakPoint(rArc, directrix);\n var site = arc.site;\n return site.y === directrix ? site.x : Infinity;\n }\n function d3_geom_voronoiCell(site) {\n this.site = site;\n this.edges = [];\n }\n d3_geom_voronoiCell.prototype.prepare = function() {\n var halfEdges = this.edges, iHalfEdge = halfEdges.length, edge;\n while (iHalfEdge--) {\n edge = halfEdges[iHalfEdge].edge;\n if (!edge.b || !edge.a) halfEdges.splice(iHalfEdge, 1);\n }\n halfEdges.sort(d3_geom_voronoiHalfEdgeOrder);\n return halfEdges.length;\n };\n function d3_geom_voronoiCloseCells(extent) {\n var x0 = extent[0][0], x1 = extent[1][0], y0 = extent[0][1], y1 = extent[1][1], x2, y2, x3, y3, cells = d3_geom_voronoiCells, iCell = cells.length, cell, iHalfEdge, halfEdges, nHalfEdges, start, end;\n while (iCell--) {\n cell = cells[iCell];\n if (!cell || !cell.prepare()) continue;\n halfEdges = cell.edges;\n nHalfEdges = halfEdges.length;\n iHalfEdge = 0;\n while (iHalfEdge < nHalfEdges) {\n end = halfEdges[iHalfEdge].end(), x3 = end.x, y3 = end.y;\n start = halfEdges[++iHalfEdge % nHalfEdges].start(), x2 = start.x, y2 = start.y;\n if (abs(x3 - x2) > \\u03B5 || abs(y3 - y2) > \\u03B5) {\n halfEdges.splice(iHalfEdge, 0, new d3_geom_voronoiHalfEdge(d3_geom_voronoiCreateBorderEdge(cell.site, end, abs(x3 - x0) < \\u03B5 && y1 - y3 > \\u03B5 ? {\n x: x0,\n y: abs(x2 - x0) < \\u03B5 ? y2 : y1\n } : abs(y3 - y1) < \\u03B5 && x1 - x3 > \\u03B5 ? {\n x: abs(y2 - y1) < \\u03B5 ? x2 : x1,\n y: y1\n } : abs(x3 - x1) < \\u03B5 && y3 - y0 > \\u03B5 ? {\n x: x1,\n y: abs(x2 - x1) < \\u03B5 ? y2 : y0\n } : abs(y3 - y0) < \\u03B5 && x3 - x0 > \\u03B5 ? {\n x: abs(y2 - y0) < \\u03B5 ? x2 : x0,\n y: y0\n } : null), cell.site, null));\n ++nHalfEdges;\n }\n }\n }\n }\n function d3_geom_voronoiHalfEdgeOrder(a, b) {\n return b.angle - a.angle;\n }\n function d3_geom_voronoiCircle() {\n d3_geom_voronoiRedBlackNode(this);\n this.x = this.y = this.arc = this.site = this.cy = null;\n }\n function d3_geom_voronoiAttachCircle(arc) {\n var lArc = arc.P, rArc = arc.N;\n if (!lArc || !rArc) return;\n var lSite = lArc.site, cSite = arc.site, rSite = rArc.site;\n if (lSite === rSite) return;\n var bx = cSite.x, by = cSite.y, ax = lSite.x - bx, ay = lSite.y - by, cx = rSite.x - bx, cy = rSite.y - by;\n var d = 2 * (ax * cy - ay * cx);\n if (d >= -\\u03B52) return;\n var ha = ax * ax + ay * ay, hc = cx * cx + cy * cy, x = (cy * ha - ay * hc) / d, y = (ax * hc - cx * ha) / d, cy = y + by;\n var circle = d3_geom_voronoiCirclePool.pop() || new d3_geom_voronoiCircle();\n circle.arc = arc;\n circle.site = cSite;\n circle.x = x + bx;\n circle.y = cy + Math.sqrt(x * x + y * y);\n circle.cy = cy;\n arc.circle = circle;\n var before = null, node = d3_geom_voronoiCircles._;\n while (node) {\n if (circle.y < node.y || circle.y === node.y && circle.x <= node.x) {\n if (node.L) node = node.L;\n else {\n before = node.P;\n break;\n }\n } else {\n if (node.R) node = node.R;\n else {\n before = node;\n break;\n }\n }\n }\n d3_geom_voronoiCircles.insert(before, circle);\n if (!before) d3_geom_voronoiFirstCircle = circle;\n }\n function d3_geom_voronoiDetachCircle(arc) {\n var circle = arc.circle;\n if (circle) {\n if (!circle.P) d3_geom_voronoiFirstCircle = circle.N;\n d3_geom_voronoiCircles.remove(circle);\n d3_geom_voronoiCirclePool.push(circle);\n d3_geom_voronoiRedBlackNode(circle);\n arc.circle = null;\n }\n }\n function d3_geom_clipLine(x0, y0, x1, y1) {\n return function(line) {\n var a = line.a, b = line.b, ax = a.x, ay = a.y, bx = b.x, by = b.y, t0 = 0, t1 = 1, dx = bx - ax, dy = by - ay, r;\n r = x0 - ax;\n if (!dx && r > 0) return;\n r /= dx;\n if (dx < 0) {\n if (r < t0) return;\n if (r < t1) t1 = r;\n } else if (dx > 0) {\n if (r > t1) return;\n if (r > t0) t0 = r;\n }\n r = x1 - ax;\n if (!dx && r < 0) return;\n r /= dx;\n if (dx < 0) {\n if (r > t1) return;\n if (r > t0) t0 = r;\n } else if (dx > 0) {\n if (r < t0) return;\n if (r < t1) t1 = r;\n }\n r = y0 - ay;\n if (!dy && r > 0) return;\n r /= dy;\n if (dy < 0) {\n if (r < t0) return;\n if (r < t1) t1 = r;\n } else if (dy > 0) {\n if (r > t1) return;\n if (r > t0) t0 = r;\n }\n r = y1 - ay;\n if (!dy && r < 0) return;\n r /= dy;\n if (dy < 0) {\n if (r > t1) return;\n if (r > t0) t0 = r;\n } else if (dy > 0) {\n if (r < t0) return;\n if (r < t1) t1 = r;\n }\n if (t0 > 0) line.a = {\n x: ax + t0 * dx,\n y: ay + t0 * dy\n };\n if (t1 < 1) line.b = {\n x: ax + t1 * dx,\n y: ay + t1 * dy\n };\n return line;\n };\n }\n function d3_geom_voronoiClipEdges(extent) {\n var edges = d3_geom_voronoiEdges, clip = d3_geom_clipLine(extent[0][0], extent[0][1], extent[1][0], extent[1][1]), i = edges.length, e;\n while (i--) {\n e = edges[i];\n if (!d3_geom_voronoiConnectEdge(e, extent) || !clip(e) || abs(e.a.x - e.b.x) < \\u03B5 && abs(e.a.y - e.b.y) < \\u03B5) {\n e.a = e.b = null;\n edges.splice(i, 1);\n }\n }\n }\n function d3_geom_voronoiConnectEdge(edge, extent) {\n var vb = edge.b;\n if (vb) return true;\n var va = edge.a, x0 = extent[0][0], x1 = extent[1][0], y0 = extent[0][1], y1 = extent[1][1], lSite = edge.l, rSite = edge.r, lx = lSite.x, ly = lSite.y, rx = rSite.x, ry = rSite.y, fx = (lx + rx) / 2, fy = (ly + ry) / 2, fm, fb;\n if (ry === ly) {\n if (fx < x0 || fx >= x1) return;\n if (lx > rx) {\n if (!va) va = {\n x: fx,\n y: y0\n };\n else if (va.y >= y1) return;\n vb = {\n x: fx,\n y: y1\n };\n } else {\n if (!va) va = {\n x: fx,\n y: y1\n };\n else if (va.y < y0) return;\n vb = {\n x: fx,\n y: y0\n };\n }\n } else {\n fm = (lx - rx) / (ry - ly);\n fb = fy - fm * fx;\n if (fm < -1 || fm > 1) {\n if (lx > rx) {\n if (!va) va = {\n x: (y0 - fb) / fm,\n y: y0\n };\n else if (va.y >= y1) return;\n vb = {\n x: (y1 - fb) / fm,\n y: y1\n };\n } else {\n if (!va) va = {\n x: (y1 - fb) / fm,\n y: y1\n };\n else if (va.y < y0) return;\n vb = {\n x: (y0 - fb) / fm,\n y: y0\n };\n }\n } else {\n if (ly < ry) {\n if (!va) va = {\n x: x0,\n y: fm * x0 + fb\n };\n else if (va.x >= x1) return;\n vb = {\n x: x1,\n y: fm * x1 + fb\n };\n } else {\n if (!va) va = {\n x: x1,\n y: fm * x1 + fb\n };\n else if (va.x < x0) return;\n vb = {\n x: x0,\n y: fm * x0 + fb\n };\n }\n }\n }\n edge.a = va;\n edge.b = vb;\n return true;\n }\n function d3_geom_voronoiEdge(lSite, rSite) {\n this.l = lSite;\n this.r = rSite;\n this.a = this.b = null;\n }\n function d3_geom_voronoiCreateEdge(lSite, rSite, va, vb) {\n var edge = new d3_geom_voronoiEdge(lSite, rSite);\n d3_geom_voronoiEdges.push(edge);\n if (va) d3_geom_voronoiSetEdgeEnd(edge, lSite, rSite, va);\n if (vb) d3_geom_voronoiSetEdgeEnd(edge, rSite, lSite, vb);\n d3_geom_voronoiCells[lSite.i].edges.push(new d3_geom_voronoiHalfEdge(edge, lSite, rSite));\n d3_geom_voronoiCells[rSite.i].edges.push(new d3_geom_voronoiHalfEdge(edge, rSite, lSite));\n return edge;\n }\n function d3_geom_voronoiCreateBorderEdge(lSite, va, vb) {\n var edge = new d3_geom_voronoiEdge(lSite, null);\n edge.a = va;\n edge.b = vb;\n d3_geom_voronoiEdges.push(edge);\n return edge;\n }\n function d3_geom_voronoiSetEdgeEnd(edge, lSite, rSite, vertex) {\n if (!edge.a && !edge.b) {\n edge.a = vertex;\n edge.l = lSite;\n edge.r = rSite;\n } else if (edge.l === rSite) {\n edge.b = vertex;\n } else {\n edge.a = vertex;\n }\n }\n function d3_geom_voronoiHalfEdge(edge, lSite, rSite) {\n var va = edge.a, vb = edge.b;\n this.edge = edge;\n this.site = lSite;\n this.angle = rSite ? Math.atan2(rSite.y - lSite.y, rSite.x - lSite.x) : edge.l === lSite ? Math.atan2(vb.x - va.x, va.y - vb.y) : Math.atan2(va.x - vb.x, vb.y - va.y);\n }\n d3_geom_voronoiHalfEdge.prototype = {\n start: function() {\n return this.edge.l === this.site ? this.edge.a : this.edge.b;\n },\n end: function() {\n return this.edge.l === this.site ? this.edge.b : this.edge.a;\n }\n };\n function d3_geom_voronoiRedBlackTree() {\n this._ = null;\n }\n function d3_geom_voronoiRedBlackNode(node) {\n node.U = node.C = node.L = node.R = node.P = node.N = null;\n }\n d3_geom_voronoiRedBlackTree.prototype = {\n insert: function(after, node) {\n var parent, grandpa, uncle;\n if (after) {\n node.P = after;\n node.N = after.N;\n if (after.N) after.N.P = node;\n after.N = node;\n if (after.R) {\n after = after.R;\n while (after.L) after = after.L;\n after.L = node;\n } else {\n after.R = node;\n }\n parent = after;\n } else if (this._) {\n after = d3_geom_voronoiRedBlackFirst(this._);\n node.P = null;\n node.N = after;\n after.P = after.L = node;\n parent = after;\n } else {\n node.P = node.N = null;\n this._ = node;\n parent = null;\n }\n node.L = node.R = null;\n node.U = parent;\n node.C = true;\n after = node;\n while (parent && parent.C) {\n grandpa = parent.U;\n if (parent === grandpa.L) {\n uncle = grandpa.R;\n if (uncle && uncle.C) {\n parent.C = uncle.C = false;\n grandpa.C = true;\n after = grandpa;\n } else {\n if (after === parent.R) {\n d3_geom_voronoiRedBlackRotateLeft(this, parent);\n after = parent;\n parent = after.U;\n }\n parent.C = false;\n grandpa.C = true;\n d3_geom_voronoiRedBlackRotateRight(this, grandpa);\n }\n } else {\n uncle = grandpa.L;\n if (uncle && uncle.C) {\n parent.C = uncle.C = false;\n grandpa.C = true;\n after = grandpa;\n } else {\n if (after === parent.L) {\n d3_geom_voronoiRedBlackRotateRight(this, parent);\n after = parent;\n parent = after.U;\n }\n parent.C = false;\n grandpa.C = true;\n d3_geom_voronoiRedBlackRotateLeft(this, grandpa);\n }\n }\n parent = after.U;\n }\n this._.C = false;\n },\n remove: function(node) {\n if (node.N) node.N.P = node.P;\n if (node.P) node.P.N = node.N;\n node.N = node.P = null;\n var parent = node.U, sibling, left = node.L, right = node.R, next, red;\n if (!left) next = right;\n else if (!right) next = left;\n else next = d3_geom_voronoiRedBlackFirst(right);\n if (parent) {\n if (parent.L === node) parent.L = next;\n else parent.R = next;\n } else {\n this._ = next;\n }\n if (left && right) {\n red = next.C;\n next.C = node.C;\n next.L = left;\n left.U = next;\n if (next !== right) {\n parent = next.U;\n next.U = node.U;\n node = next.R;\n parent.L = node;\n next.R = right;\n right.U = next;\n } else {\n next.U = parent;\n parent = next;\n node = next.R;\n }\n } else {\n red = node.C;\n node = next;\n }\n if (node) node.U = parent;\n if (red) return;\n if (node && node.C) {\n node.C = false;\n return;\n }\n do {\n if (node === this._) break;\n if (node === parent.L) {\n sibling = parent.R;\n if (sibling.C) {\n sibling.C = false;\n parent.C = true;\n d3_geom_voronoiRedBlackRotateLeft(this, parent);\n sibling = parent.R;\n }\n if (sibling.L && sibling.L.C || sibling.R && sibling.R.C) {\n if (!sibling.R || !sibling.R.C) {\n sibling.L.C = false;\n sibling.C = true;\n d3_geom_voronoiRedBlackRotateRight(this, sibling);\n sibling = parent.R;\n }\n sibling.C = parent.C;\n parent.C = sibling.R.C = false;\n d3_geom_voronoiRedBlackRotateLeft(this, parent);\n node = this._;\n break;\n }\n } else {\n sibling = parent.L;\n if (sibling.C) {\n sibling.C = false;\n parent.C = true;\n d3_geom_voronoiRedBlackRotateRight(this, parent);\n sibling = parent.L;\n }\n if (sibling.L && sibling.L.C || sibling.R && sibling.R.C) {\n if (!sibling.L || !sibling.L.C) {\n sibling.R.C = false;\n sibling.C = true;\n d3_geom_voronoiRedBlackRotateLeft(this, sibling);\n sibling = parent.L;\n }\n sibling.C = parent.C;\n parent.C = sibling.L.C = false;\n d3_geom_voronoiRedBlackRotateRight(this, parent);\n node = this._;\n break;\n }\n }\n sibling.C = true;\n node = parent;\n parent = parent.U;\n } while (!node.C);\n if (node) node.C = false;\n }\n };\n function d3_geom_voronoiRedBlackRotateLeft(tree, node) {\n var p = node, q = node.R, parent = p.U;\n if (parent) {\n if (parent.L === p) parent.L = q;\n else parent.R = q;\n } else {\n tree._ = q;\n }\n q.U = parent;\n p.U = q;\n p.R = q.L;\n if (p.R) p.R.U = p;\n q.L = p;\n }\n function d3_geom_voronoiRedBlackRotateRight(tree, node) {\n var p = node, q = node.L, parent = p.U;\n if (parent) {\n if (parent.L === p) parent.L = q;\n else parent.R = q;\n } else {\n tree._ = q;\n }\n q.U = parent;\n p.U = q;\n p.L = q.R;\n if (p.L) p.L.U = p;\n q.R = p;\n }\n function d3_geom_voronoiRedBlackFirst(node) {\n while (node.L) node = node.L;\n return node;\n }\n function d3_geom_voronoi(sites, bbox) {\n var site = sites.sort(d3_geom_voronoiVertexOrder).pop(), x0, y0, circle;\n d3_geom_voronoiEdges = [];\n d3_geom_voronoiCells = new Array(sites.length);\n d3_geom_voronoiBeaches = new d3_geom_voronoiRedBlackTree();\n d3_geom_voronoiCircles = new d3_geom_voronoiRedBlackTree();\n while (true) {\n circle = d3_geom_voronoiFirstCircle;\n if (site && (!circle || site.y < circle.y || site.y === circle.y && site.x < circle.x)) {\n if (site.x !== x0 || site.y !== y0) {\n d3_geom_voronoiCells[site.i] = new d3_geom_voronoiCell(site);\n d3_geom_voronoiAddBeach(site);\n x0 = site.x, y0 = site.y;\n }\n site = sites.pop();\n } else if (circle) {\n d3_geom_voronoiRemoveBeach(circle.arc);\n } else {\n break;\n }\n }\n if (bbox) d3_geom_voronoiClipEdges(bbox), d3_geom_voronoiCloseCells(bbox);\n var diagram = {\n cells: d3_geom_voronoiCells,\n edges: d3_geom_voronoiEdges\n };\n d3_geom_voronoiBeaches = d3_geom_voronoiCircles = d3_geom_voronoiEdges = d3_geom_voronoiCells = null;\n return diagram;\n }\n function d3_geom_voronoiVertexOrder(a, b) {\n return b.y - a.y || b.x - a.x;\n }\n d3.geom.voronoi = function(points) {\n var x = d3_geom_pointX, y = d3_geom_pointY, fx = x, fy = y, clipExtent = d3_geom_voronoiClipExtent;\n if (points) return voronoi(points);\n function voronoi(data) {\n var polygons = new Array(data.length), x0 = clipExtent[0][0], y0 = clipExtent[0][1], x1 = clipExtent[1][0], y1 = clipExtent[1][1];\n d3_geom_voronoi(sites(data), clipExtent).cells.forEach(function(cell, i) {\n var edges = cell.edges, site = cell.site, polygon = polygons[i] = edges.length ? edges.map(function(e) {\n var s = e.start();\n return [s.x, s.y];\n }) : site.x >= x0 && site.x <= x1 && site.y >= y0 && site.y <= y1 ? [[x0, y1], [x1, y1], [x1, y0], [x0, y0]] : [];\n polygon.point = data[i];\n });\n return polygons;\n }\n function sites(data) {\n return data.map(function(d, i) {\n return {\n x: Math.round(fx(d, i) / \\u03B5) * \\u03B5,\n y: Math.round(fy(d, i) / \\u03B5) * \\u03B5,\n i\n };\n });\n }\n voronoi.links = function(data) {\n return d3_geom_voronoi(sites(data)).edges.filter(function(edge) {\n return edge.l && edge.r;\n }).map(function(edge) {\n return {\n source: data[edge.l.i],\n target: data[edge.r.i]\n };\n });\n };\n voronoi.triangles = function(data) {\n var triangles = [];\n d3_geom_voronoi(sites(data)).cells.forEach(function(cell, i) {\n var site = cell.site, edges = cell.edges.sort(d3_geom_voronoiHalfEdgeOrder), j = -1, m = edges.length, e0, s0, e1 = edges[m - 1].edge, s1 = e1.l === site ? e1.r : e1.l;\n while (++j < m) {\n e0 = e1;\n s0 = s1;\n e1 = edges[j].edge;\n s1 = e1.l === site ? e1.r : e1.l;\n if (i < s0.i && i < s1.i && d3_geom_voronoiTriangleArea(site, s0, s1) < 0) {\n triangles.push([data[i], data[s0.i], data[s1.i]]);\n }\n }\n });\n return triangles;\n };\n voronoi.x = function(_) {\n return arguments.length ? (fx = d3_functor(x = _), voronoi) : x;\n };\n voronoi.y = function(_) {\n return arguments.length ? (fy = d3_functor(y = _), voronoi) : y;\n };\n voronoi.clipExtent = function(_) {\n if (!arguments.length) return clipExtent === d3_geom_voronoiClipExtent ? null : clipExtent;\n clipExtent = _ == null ? d3_geom_voronoiClipExtent : _;\n return voronoi;\n };\n voronoi.size = function(_) {\n if (!arguments.length) return clipExtent === d3_geom_voronoiClipExtent ? null : clipExtent && clipExtent[1];\n return voronoi.clipExtent(_ && [[0, 0], _]);\n };\n return voronoi;\n };\n var d3_geom_voronoiClipExtent = [[-1e6, -1e6], [1e6, 1e6]];\n function d3_geom_voronoiTriangleArea(a, b, c) {\n return (a.x - c.x) * (b.y - a.y) - (a.x - b.x) * (c.y - a.y);\n }\n d3.geom.delaunay = function(vertices) {\n return d3.geom.voronoi().triangles(vertices);\n };\n d3.geom.quadtree = function(points, x1, y1, x2, y2) {\n var x = d3_geom_pointX, y = d3_geom_pointY, compat;\n if (compat = arguments.length) {\n x = d3_geom_quadtreeCompatX;\n y = d3_geom_quadtreeCompatY;\n if (compat === 3) {\n y2 = y1;\n x2 = x1;\n y1 = x1 = 0;\n }\n return quadtree(points);\n }\n function quadtree(data) {\n var d, fx = d3_functor(x), fy = d3_functor(y), xs, ys, i, n, x1_, y1_, x2_, y2_;\n if (x1 != null) {\n x1_ = x1, y1_ = y1, x2_ = x2, y2_ = y2;\n } else {\n x2_ = y2_ = -(x1_ = y1_ = Infinity);\n xs = [], ys = [];\n n = data.length;\n if (compat) for (i = 0; i < n; ++i) {\n d = data[i];\n if (d.x < x1_) x1_ = d.x;\n if (d.y < y1_) y1_ = d.y;\n if (d.x > x2_) x2_ = d.x;\n if (d.y > y2_) y2_ = d.y;\n xs.push(d.x);\n ys.push(d.y);\n }\n else for (i = 0; i < n; ++i) {\n var x_ = +fx(d = data[i], i), y_ = +fy(d, i);\n if (x_ < x1_) x1_ = x_;\n if (y_ < y1_) y1_ = y_;\n if (x_ > x2_) x2_ = x_;\n if (y_ > y2_) y2_ = y_;\n xs.push(x_);\n ys.push(y_);\n }\n }\n var dx = x2_ - x1_, dy = y2_ - y1_;\n if (dx > dy) y2_ = y1_ + dx;\n else x2_ = x1_ + dy;\n function insert(n2, d2, x3, y3, x12, y12, x22, y22) {\n if (isNaN(x3) || isNaN(y3)) return;\n if (n2.leaf) {\n var nx = n2.x, ny = n2.y;\n if (nx != null) {\n if (abs(nx - x3) + abs(ny - y3) < 0.01) {\n insertChild(n2, d2, x3, y3, x12, y12, x22, y22);\n } else {\n var nPoint = n2.point;\n n2.x = n2.y = n2.point = null;\n insertChild(n2, nPoint, nx, ny, x12, y12, x22, y22);\n insertChild(n2, d2, x3, y3, x12, y12, x22, y22);\n }\n } else {\n n2.x = x3, n2.y = y3, n2.point = d2;\n }\n } else {\n insertChild(n2, d2, x3, y3, x12, y12, x22, y22);\n }\n }\n function insertChild(n2, d2, x3, y3, x12, y12, x22, y22) {\n var xm = (x12 + x22) * 0.5, ym = (y12 + y22) * 0.5, right = x3 >= xm, below = y3 >= ym, i2 = below << 1 | right;\n n2.leaf = false;\n n2 = n2.nodes[i2] || (n2.nodes[i2] = d3_geom_quadtreeNode());\n if (right) x12 = xm;\n else x22 = xm;\n if (below) y12 = ym;\n else y22 = ym;\n insert(n2, d2, x3, y3, x12, y12, x22, y22);\n }\n var root = d3_geom_quadtreeNode();\n root.add = function(d2) {\n insert(root, d2, +fx(d2, ++i), +fy(d2, i), x1_, y1_, x2_, y2_);\n };\n root.visit = function(f) {\n d3_geom_quadtreeVisit(f, root, x1_, y1_, x2_, y2_);\n };\n root.find = function(point) {\n return d3_geom_quadtreeFind(root, point[0], point[1], x1_, y1_, x2_, y2_);\n };\n i = -1;\n if (x1 == null) {\n while (++i < n) {\n insert(root, data[i], xs[i], ys[i], x1_, y1_, x2_, y2_);\n }\n --i;\n } else data.forEach(root.add);\n xs = ys = data = d = null;\n return root;\n }\n quadtree.x = function(_) {\n return arguments.length ? (x = _, quadtree) : x;\n };\n quadtree.y = function(_) {\n return arguments.length ? (y = _, quadtree) : y;\n };\n quadtree.extent = function(_) {\n if (!arguments.length) return x1 == null ? null : [[x1, y1], [x2, y2]];\n if (_ == null) x1 = y1 = x2 = y2 = null;\n else x1 = +_[0][0], y1 = +_[0][1], x2 = +_[1][0], y2 = +_[1][1];\n return quadtree;\n };\n quadtree.size = function(_) {\n if (!arguments.length) return x1 == null ? null : [x2 - x1, y2 - y1];\n if (_ == null) x1 = y1 = x2 = y2 = null;\n else x1 = y1 = 0, x2 = +_[0], y2 = +_[1];\n return quadtree;\n };\n return quadtree;\n };\n function d3_geom_quadtreeCompatX(d) {\n return d.x;\n }\n function d3_geom_quadtreeCompatY(d) {\n return d.y;\n }\n function d3_geom_quadtreeNode() {\n return {\n leaf: true,\n nodes: [],\n point: null,\n x: null,\n y: null\n };\n }\n function d3_geom_quadtreeVisit(f, node, x1, y1, x2, y2) {\n if (!f(node, x1, y1, x2, y2)) {\n var sx = (x1 + x2) * 0.5, sy = (y1 + y2) * 0.5, children = node.nodes;\n if (children[0]) d3_geom_quadtreeVisit(f, children[0], x1, y1, sx, sy);\n if (children[1]) d3_geom_quadtreeVisit(f, children[1], sx, y1, x2, sy);\n if (children[2]) d3_geom_quadtreeVisit(f, children[2], x1, sy, sx, y2);\n if (children[3]) d3_geom_quadtreeVisit(f, children[3], sx, sy, x2, y2);\n }\n }\n function d3_geom_quadtreeFind(root, x, y, x0, y0, x3, y3) {\n var minDistance2 = Infinity, closestPoint;\n (function find(node, x1, y1, x2, y2) {\n if (x1 > x3 || y1 > y3 || x2 < x0 || y2 < y0) return;\n if (point = node.point) {\n var point, dx = x - node.x, dy = y - node.y, distance2 = dx * dx + dy * dy;\n if (distance2 < minDistance2) {\n var distance = Math.sqrt(minDistance2 = distance2);\n x0 = x - distance, y0 = y - distance;\n x3 = x + distance, y3 = y + distance;\n closestPoint = point;\n }\n }\n var children = node.nodes, xm = (x1 + x2) * 0.5, ym = (y1 + y2) * 0.5, right = x >= xm, below = y >= ym;\n for (var i = below << 1 | right, j = i + 4; i < j; ++i) {\n if (node = children[i & 3]) switch (i & 3) {\n case 0:\n find(node, x1, y1, xm, ym);\n break;\n case 1:\n find(node, xm, y1, x2, ym);\n break;\n case 2:\n find(node, x1, ym, xm, y2);\n break;\n case 3:\n find(node, xm, ym, x2, y2);\n break;\n }\n }\n })(root, x0, y0, x3, y3);\n return closestPoint;\n }\n d3.interpolateRgb = d3_interpolateRgb;\n function d3_interpolateRgb(a, b) {\n a = d3.rgb(a);\n b = d3.rgb(b);\n var ar = a.r, ag = a.g, ab = a.b, br = b.r - ar, bg = b.g - ag, bb = b.b - ab;\n return function(t) {\n return \"#\" + d3_rgb_hex(Math.round(ar + br * t)) + d3_rgb_hex(Math.round(ag + bg * t)) + d3_rgb_hex(Math.round(ab + bb * t));\n };\n }\n d3.interpolateObject = d3_interpolateObject;\n function d3_interpolateObject(a, b) {\n var i = {}, c = {}, k;\n for (k in a) {\n if (k in b) {\n i[k] = d3_interpolate(a[k], b[k]);\n } else {\n c[k] = a[k];\n }\n }\n for (k in b) {\n if (!(k in a)) {\n c[k] = b[k];\n }\n }\n return function(t) {\n for (k in i) c[k] = i[k](t);\n return c;\n };\n }\n d3.interpolateNumber = d3_interpolateNumber;\n function d3_interpolateNumber(a, b) {\n a = +a, b = +b;\n return function(t) {\n return a * (1 - t) + b * t;\n };\n }\n d3.interpolateString = d3_interpolateString;\n function d3_interpolateString(a, b) {\n var bi = d3_interpolate_numberA.lastIndex = d3_interpolate_numberB.lastIndex = 0, am, bm, bs, i = -1, s = [], q = [];\n a = a + \"\", b = b + \"\";\n while ((am = d3_interpolate_numberA.exec(a)) && (bm = d3_interpolate_numberB.exec(b))) {\n if ((bs = bm.index) > bi) {\n bs = b.slice(bi, bs);\n if (s[i]) s[i] += bs;\n else s[++i] = bs;\n }\n if ((am = am[0]) === (bm = bm[0])) {\n if (s[i]) s[i] += bm;\n else s[++i] = bm;\n } else {\n s[++i] = null;\n q.push({\n i,\n x: d3_interpolateNumber(am, bm)\n });\n }\n bi = d3_interpolate_numberB.lastIndex;\n }\n if (bi < b.length) {\n bs = b.slice(bi);\n if (s[i]) s[i] += bs;\n else s[++i] = bs;\n }\n return s.length < 2 ? q[0] ? (b = q[0].x, function(t) {\n return b(t) + \"\";\n }) : function() {\n return b;\n } : (b = q.length, function(t) {\n for (var i2 = 0, o; i2 < b; ++i2) s[(o = q[i2]).i] = o.x(t);\n return s.join(\"\");\n });\n }\n var d3_interpolate_numberA = /[-+]?(?:\\d+\\.?\\d*|\\.?\\d+)(?:[eE][-+]?\\d+)?/g, d3_interpolate_numberB = new RegExp(d3_interpolate_numberA.source, \"g\");\n d3.interpolate = d3_interpolate;\n function d3_interpolate(a, b) {\n var i = d3.interpolators.length, f;\n while (--i >= 0 && !(f = d3.interpolators[i](a, b))) ;\n return f;\n }\n d3.interpolators = [function(a, b) {\n var t = typeof b;\n return (t === \"string\" ? d3_rgb_names.has(b.toLowerCase()) || /^(#|rgb\\(|hsl\\()/i.test(b) ? d3_interpolateRgb : d3_interpolateString : b instanceof d3_color ? d3_interpolateRgb : Array.isArray(b) ? d3_interpolateArray : t === \"object\" && isNaN(b) ? d3_interpolateObject : d3_interpolateNumber)(a, b);\n }];\n d3.interpolateArray = d3_interpolateArray;\n function d3_interpolateArray(a, b) {\n var x = [], c = [], na = a.length, nb = b.length, n0 = Math.min(a.length, b.length), i;\n for (i = 0; i < n0; ++i) x.push(d3_interpolate(a[i], b[i]));\n for (; i < na; ++i) c[i] = a[i];\n for (; i < nb; ++i) c[i] = b[i];\n return function(t) {\n for (i = 0; i < n0; ++i) c[i] = x[i](t);\n return c;\n };\n }\n var d3_ease_default = function() {\n return d3_identity;\n };\n var d3_ease = d3.map({\n linear: d3_ease_default,\n poly: d3_ease_poly,\n quad: function() {\n return d3_ease_quad;\n },\n cubic: function() {\n return d3_ease_cubic;\n },\n sin: function() {\n return d3_ease_sin;\n },\n exp: function() {\n return d3_ease_exp;\n },\n circle: function() {\n return d3_ease_circle;\n },\n elastic: d3_ease_elastic,\n back: d3_ease_back,\n bounce: function() {\n return d3_ease_bounce;\n }\n });\n var d3_ease_mode = d3.map({\n \"in\": d3_identity,\n out: d3_ease_reverse,\n \"in-out\": d3_ease_reflect,\n \"out-in\": function(f) {\n return d3_ease_reflect(d3_ease_reverse(f));\n }\n });\n d3.ease = function(name) {\n var i = name.indexOf(\"-\"), t = i >= 0 ? name.slice(0, i) : name, m = i >= 0 ? name.slice(i + 1) : \"in\";\n t = d3_ease.get(t) || d3_ease_default;\n m = d3_ease_mode.get(m) || d3_identity;\n return d3_ease_clamp(m(t.apply(null, d3_arraySlice.call(arguments, 1))));\n };\n function d3_ease_clamp(f) {\n return function(t) {\n return t <= 0 ? 0 : t >= 1 ? 1 : f(t);\n };\n }\n function d3_ease_reverse(f) {\n return function(t) {\n return 1 - f(1 - t);\n };\n }\n function d3_ease_reflect(f) {\n return function(t) {\n return 0.5 * (t < 0.5 ? f(2 * t) : 2 - f(2 - 2 * t));\n };\n }\n function d3_ease_quad(t) {\n return t * t;\n }\n function d3_ease_cubic(t) {\n return t * t * t;\n }\n function d3_ease_cubicInOut(t) {\n if (t <= 0) return 0;\n if (t >= 1) return 1;\n var t2 = t * t, t3 = t2 * t;\n return 4 * (t < 0.5 ? t3 : 3 * (t - t2) + t3 - 0.75);\n }\n function d3_ease_poly(e) {\n return function(t) {\n return Math.pow(t, e);\n };\n }\n function d3_ease_sin(t) {\n return 1 - Math.cos(t * half\\u03C0);\n }\n function d3_ease_exp(t) {\n return Math.pow(2, 10 * (t - 1));\n }\n function d3_ease_circle(t) {\n return 1 - Math.sqrt(1 - t * t);\n }\n function d3_ease_elastic(a, p) {\n var s;\n if (arguments.length < 2) p = 0.45;\n if (arguments.length) s = p / \\u03C4 * Math.asin(1 / a);\n else a = 1, s = p / 4;\n return function(t) {\n return 1 + a * Math.pow(2, -10 * t) * Math.sin((t - s) * \\u03C4 / p);\n };\n }\n function d3_ease_back(s) {\n if (!s) s = 1.70158;\n return function(t) {\n return t * t * ((s + 1) * t - s);\n };\n }\n function d3_ease_bounce(t) {\n return t < 1 / 2.75 ? 7.5625 * t * t : t < 2 / 2.75 ? 7.5625 * (t -= 1.5 / 2.75) * t + 0.75 : t < 2.5 / 2.75 ? 7.5625 * (t -= 2.25 / 2.75) * t + 0.9375 : 7.5625 * (t -= 2.625 / 2.75) * t + 0.984375;\n }\n d3.interpolateHcl = d3_interpolateHcl;\n function d3_interpolateHcl(a, b) {\n a = d3.hcl(a);\n b = d3.hcl(b);\n var ah = a.h, ac = a.c, al = a.l, bh = b.h - ah, bc = b.c - ac, bl = b.l - al;\n if (isNaN(bc)) bc = 0, ac = isNaN(ac) ? b.c : ac;\n if (isNaN(bh)) bh = 0, ah = isNaN(ah) ? b.h : ah;\n else if (bh > 180) bh -= 360;\n else if (bh < -180) bh += 360;\n return function(t) {\n return d3_hcl_lab(ah + bh * t, ac + bc * t, al + bl * t) + \"\";\n };\n }\n d3.interpolateHsl = d3_interpolateHsl;\n function d3_interpolateHsl(a, b) {\n a = d3.hsl(a);\n b = d3.hsl(b);\n var ah = a.h, as = a.s, al = a.l, bh = b.h - ah, bs = b.s - as, bl = b.l - al;\n if (isNaN(bs)) bs = 0, as = isNaN(as) ? b.s : as;\n if (isNaN(bh)) bh = 0, ah = isNaN(ah) ? b.h : ah;\n else if (bh > 180) bh -= 360;\n else if (bh < -180) bh += 360;\n return function(t) {\n return d3_hsl_rgb(ah + bh * t, as + bs * t, al + bl * t) + \"\";\n };\n }\n d3.interpolateLab = d3_interpolateLab;\n function d3_interpolateLab(a, b) {\n a = d3.lab(a);\n b = d3.lab(b);\n var al = a.l, aa = a.a, ab = a.b, bl = b.l - al, ba = b.a - aa, bb = b.b - ab;\n return function(t) {\n return d3_lab_rgb(al + bl * t, aa + ba * t, ab + bb * t) + \"\";\n };\n }\n d3.interpolateRound = d3_interpolateRound;\n function d3_interpolateRound(a, b) {\n b -= a;\n return function(t) {\n return Math.round(a + b * t);\n };\n }\n d3.transform = function(string) {\n var g = d3_document.createElementNS(d3.ns.prefix.svg, \"g\");\n return (d3.transform = function(string2) {\n if (string2 != null) {\n g.setAttribute(\"transform\", string2);\n var t = g.transform.baseVal.consolidate();\n }\n return new d3_transform(t ? t.matrix : d3_transformIdentity);\n })(string);\n };\n function d3_transform(m) {\n var r0 = [m.a, m.b], r1 = [m.c, m.d], kx = d3_transformNormalize(r0), kz = d3_transformDot(r0, r1), ky = d3_transformNormalize(d3_transformCombine(r1, r0, -kz)) || 0;\n if (r0[0] * r1[1] < r1[0] * r0[1]) {\n r0[0] *= -1;\n r0[1] *= -1;\n kx *= -1;\n kz *= -1;\n }\n this.rotate = (kx ? Math.atan2(r0[1], r0[0]) : Math.atan2(-r1[0], r1[1])) * d3_degrees;\n this.translate = [m.e, m.f];\n this.scale = [kx, ky];\n this.skew = ky ? Math.atan2(kz, ky) * d3_degrees : 0;\n }\n d3_transform.prototype.toString = function() {\n return \"translate(\" + this.translate + \")rotate(\" + this.rotate + \")skewX(\" + this.skew + \")scale(\" + this.scale + \")\";\n };\n function d3_transformDot(a, b) {\n return a[0] * b[0] + a[1] * b[1];\n }\n function d3_transformNormalize(a) {\n var k = Math.sqrt(d3_transformDot(a, a));\n if (k) {\n a[0] /= k;\n a[1] /= k;\n }\n return k;\n }\n function d3_transformCombine(a, b, k) {\n a[0] += k * b[0];\n a[1] += k * b[1];\n return a;\n }\n var d3_transformIdentity = {\n a: 1,\n b: 0,\n c: 0,\n d: 1,\n e: 0,\n f: 0\n };\n d3.interpolateTransform = d3_interpolateTransform;\n function d3_interpolateTransformPop(s) {\n return s.length ? s.pop() + \",\" : \"\";\n }\n function d3_interpolateTranslate(ta, tb, s, q) {\n if (ta[0] !== tb[0] || ta[1] !== tb[1]) {\n var i = s.push(\"translate(\", null, \",\", null, \")\");\n q.push({\n i: i - 4,\n x: d3_interpolateNumber(ta[0], tb[0])\n }, {\n i: i - 2,\n x: d3_interpolateNumber(ta[1], tb[1])\n });\n } else if (tb[0] || tb[1]) {\n s.push(\"translate(\" + tb + \")\");\n }\n }\n function d3_interpolateRotate(ra, rb, s, q) {\n if (ra !== rb) {\n if (ra - rb > 180) rb += 360;\n else if (rb - ra > 180) ra += 360;\n q.push({\n i: s.push(d3_interpolateTransformPop(s) + \"rotate(\", null, \")\") - 2,\n x: d3_interpolateNumber(ra, rb)\n });\n } else if (rb) {\n s.push(d3_interpolateTransformPop(s) + \"rotate(\" + rb + \")\");\n }\n }\n function d3_interpolateSkew(wa, wb, s, q) {\n if (wa !== wb) {\n q.push({\n i: s.push(d3_interpolateTransformPop(s) + \"skewX(\", null, \")\") - 2,\n x: d3_interpolateNumber(wa, wb)\n });\n } else if (wb) {\n s.push(d3_interpolateTransformPop(s) + \"skewX(\" + wb + \")\");\n }\n }\n function d3_interpolateScale(ka, kb, s, q) {\n if (ka[0] !== kb[0] || ka[1] !== kb[1]) {\n var i = s.push(d3_interpolateTransformPop(s) + \"scale(\", null, \",\", null, \")\");\n q.push({\n i: i - 4,\n x: d3_interpolateNumber(ka[0], kb[0])\n }, {\n i: i - 2,\n x: d3_interpolateNumber(ka[1], kb[1])\n });\n } else if (kb[0] !== 1 || kb[1] !== 1) {\n s.push(d3_interpolateTransformPop(s) + \"scale(\" + kb + \")\");\n }\n }\n function d3_interpolateTransform(a, b) {\n var s = [], q = [];\n a = d3.transform(a), b = d3.transform(b);\n d3_interpolateTranslate(a.translate, b.translate, s, q);\n d3_interpolateRotate(a.rotate, b.rotate, s, q);\n d3_interpolateSkew(a.skew, b.skew, s, q);\n d3_interpolateScale(a.scale, b.scale, s, q);\n a = b = null;\n return function(t) {\n var i = -1, n = q.length, o;\n while (++i < n) s[(o = q[i]).i] = o.x(t);\n return s.join(\"\");\n };\n }\n function d3_uninterpolateNumber(a, b) {\n b = (b -= a = +a) || 1 / b;\n return function(x) {\n return (x - a) / b;\n };\n }\n function d3_uninterpolateClamp(a, b) {\n b = (b -= a = +a) || 1 / b;\n return function(x) {\n return Math.max(0, Math.min(1, (x - a) / b));\n };\n }\n d3.layout = {};\n d3.layout.bundle = function() {\n return function(links) {\n var paths = [], i = -1, n = links.length;\n while (++i < n) paths.push(d3_layout_bundlePath(links[i]));\n return paths;\n };\n };\n function d3_layout_bundlePath(link) {\n var start = link.source, end = link.target, lca = d3_layout_bundleLeastCommonAncestor(start, end), points = [start];\n while (start !== lca) {\n start = start.parent;\n points.push(start);\n }\n var k = points.length;\n while (end !== lca) {\n points.splice(k, 0, end);\n end = end.parent;\n }\n return points;\n }\n function d3_layout_bundleAncestors(node) {\n var ancestors = [], parent = node.parent;\n while (parent != null) {\n ancestors.push(node);\n node = parent;\n parent = parent.parent;\n }\n ancestors.push(node);\n return ancestors;\n }\n function d3_layout_bundleLeastCommonAncestor(a, b) {\n if (a === b) return a;\n var aNodes = d3_layout_bundleAncestors(a), bNodes = d3_layout_bundleAncestors(b), aNode = aNodes.pop(), bNode = bNodes.pop(), sharedNode = null;\n while (aNode === bNode) {\n sharedNode = aNode;\n aNode = aNodes.pop();\n bNode = bNodes.pop();\n }\n return sharedNode;\n }\n d3.layout.chord = function() {\n var chord = {}, chords, groups, matrix, n, padding = 0, sortGroups, sortSubgroups, sortChords;\n function relayout() {\n var subgroups = {}, groupSums = [], groupIndex = d3.range(n), subgroupIndex = [], k, x, x0, i, j;\n chords = [];\n groups = [];\n k = 0, i = -1;\n while (++i < n) {\n x = 0, j = -1;\n while (++j < n) {\n x += matrix[i][j];\n }\n groupSums.push(x);\n subgroupIndex.push(d3.range(n));\n k += x;\n }\n if (sortGroups) {\n groupIndex.sort(function(a, b) {\n return sortGroups(groupSums[a], groupSums[b]);\n });\n }\n if (sortSubgroups) {\n subgroupIndex.forEach(function(d, i2) {\n d.sort(function(a, b) {\n return sortSubgroups(matrix[i2][a], matrix[i2][b]);\n });\n });\n }\n k = (\\u03C4 - padding * n) / k;\n x = 0, i = -1;\n while (++i < n) {\n x0 = x, j = -1;\n while (++j < n) {\n var di = groupIndex[i], dj = subgroupIndex[di][j], v = matrix[di][dj], a0 = x, a1 = x += v * k;\n subgroups[di + \"-\" + dj] = {\n index: di,\n subindex: dj,\n startAngle: a0,\n endAngle: a1,\n value: v\n };\n }\n groups[di] = {\n index: di,\n startAngle: x0,\n endAngle: x,\n value: groupSums[di]\n };\n x += padding;\n }\n i = -1;\n while (++i < n) {\n j = i - 1;\n while (++j < n) {\n var source = subgroups[i + \"-\" + j], target = subgroups[j + \"-\" + i];\n if (source.value || target.value) {\n chords.push(source.value < target.value ? {\n source: target,\n target: source\n } : {\n source,\n target\n });\n }\n }\n }\n if (sortChords) resort();\n }\n function resort() {\n chords.sort(function(a, b) {\n return sortChords((a.source.value + a.target.value) / 2, (b.source.value + b.target.value) / 2);\n });\n }\n chord.matrix = function(x) {\n if (!arguments.length) return matrix;\n n = (matrix = x) && matrix.length;\n chords = groups = null;\n return chord;\n };\n chord.padding = function(x) {\n if (!arguments.length) return padding;\n padding = x;\n chords = groups = null;\n return chord;\n };\n chord.sortGroups = function(x) {\n if (!arguments.length) return sortGroups;\n sortGroups = x;\n chords = groups = null;\n return chord;\n };\n chord.sortSubgroups = function(x) {\n if (!arguments.length) return sortSubgroups;\n sortSubgroups = x;\n chords = null;\n return chord;\n };\n chord.sortChords = function(x) {\n if (!arguments.length) return sortChords;\n sortChords = x;\n if (chords) resort();\n return chord;\n };\n chord.chords = function() {\n if (!chords) relayout();\n return chords;\n };\n chord.groups = function() {\n if (!groups) relayout();\n return groups;\n };\n return chord;\n };\n d3.layout.force = function() {\n var force = {}, event = d3.dispatch(\"start\", \"tick\", \"end\"), timer, size = [1, 1], drag, alpha, friction = 0.9, linkDistance = d3_layout_forceLinkDistance, linkStrength = d3_layout_forceLinkStrength, charge = -30, chargeDistance2 = d3_layout_forceChargeDistance2, gravity = 0.1, theta2 = 0.64, nodes = [], links = [], distances, strengths, charges;\n function repulse(node) {\n return function(quad, x1, _, x2) {\n if (quad.point !== node) {\n var dx = quad.cx - node.x, dy = quad.cy - node.y, dw = x2 - x1, dn = dx * dx + dy * dy;\n if (dw * dw / theta2 < dn) {\n if (dn < chargeDistance2) {\n var k = quad.charge / dn;\n node.px -= dx * k;\n node.py -= dy * k;\n }\n return true;\n }\n if (quad.point && dn && dn < chargeDistance2) {\n var k = quad.pointCharge / dn;\n node.px -= dx * k;\n node.py -= dy * k;\n }\n }\n return !quad.charge;\n };\n }\n force.tick = function() {\n if ((alpha *= 0.99) < 5e-3) {\n timer = null;\n event.end({\n type: \"end\",\n alpha: alpha = 0\n });\n return true;\n }\n var n = nodes.length, m = links.length, q, i, o, s, t, l, k, x, y;\n for (i = 0; i < m; ++i) {\n o = links[i];\n s = o.source;\n t = o.target;\n x = t.x - s.x;\n y = t.y - s.y;\n if (l = x * x + y * y) {\n l = alpha * strengths[i] * ((l = Math.sqrt(l)) - distances[i]) / l;\n x *= l;\n y *= l;\n t.x -= x * (k = s.weight + t.weight ? s.weight / (s.weight + t.weight) : 0.5);\n t.y -= y * k;\n s.x += x * (k = 1 - k);\n s.y += y * k;\n }\n }\n if (k = alpha * gravity) {\n x = size[0] / 2;\n y = size[1] / 2;\n i = -1;\n if (k) while (++i < n) {\n o = nodes[i];\n o.x += (x - o.x) * k;\n o.y += (y - o.y) * k;\n }\n }\n if (charge) {\n d3_layout_forceAccumulate(q = d3.geom.quadtree(nodes), alpha, charges);\n i = -1;\n while (++i < n) {\n if (!(o = nodes[i]).fixed) {\n q.visit(repulse(o));\n }\n }\n }\n i = -1;\n while (++i < n) {\n o = nodes[i];\n if (o.fixed) {\n o.x = o.px;\n o.y = o.py;\n } else {\n o.x -= (o.px - (o.px = o.x)) * friction;\n o.y -= (o.py - (o.py = o.y)) * friction;\n }\n }\n event.tick({\n type: \"tick\",\n alpha\n });\n };\n force.nodes = function(x) {\n if (!arguments.length) return nodes;\n nodes = x;\n return force;\n };\n force.links = function(x) {\n if (!arguments.length) return links;\n links = x;\n return force;\n };\n force.size = function(x) {\n if (!arguments.length) return size;\n size = x;\n return force;\n };\n force.linkDistance = function(x) {\n if (!arguments.length) return linkDistance;\n linkDistance = typeof x === \"function\" ? x : +x;\n return force;\n };\n force.distance = force.linkDistance;\n force.linkStrength = function(x) {\n if (!arguments.length) return linkStrength;\n linkStrength = typeof x === \"function\" ? x : +x;\n return force;\n };\n force.friction = function(x) {\n if (!arguments.length) return friction;\n friction = +x;\n return force;\n };\n force.charge = function(x) {\n if (!arguments.length) return charge;\n charge = typeof x === \"function\" ? x : +x;\n return force;\n };\n force.chargeDistance = function(x) {\n if (!arguments.length) return Math.sqrt(chargeDistance2);\n chargeDistance2 = x * x;\n return force;\n };\n force.gravity = function(x) {\n if (!arguments.length) return gravity;\n gravity = +x;\n return force;\n };\n force.theta = function(x) {\n if (!arguments.length) return Math.sqrt(theta2);\n theta2 = x * x;\n return force;\n };\n force.alpha = function(x) {\n if (!arguments.length) return alpha;\n x = +x;\n if (alpha) {\n if (x > 0) {\n alpha = x;\n } else {\n timer.c = null, timer.t = NaN, timer = null;\n event.end({\n type: \"end\",\n alpha: alpha = 0\n });\n }\n } else if (x > 0) {\n event.start({\n type: \"start\",\n alpha: alpha = x\n });\n timer = d3_timer(force.tick);\n }\n return force;\n };\n force.start = function() {\n var i, n = nodes.length, m = links.length, w = size[0], h = size[1], neighbors, o;\n for (i = 0; i < n; ++i) {\n (o = nodes[i]).index = i;\n o.weight = 0;\n }\n for (i = 0; i < m; ++i) {\n o = links[i];\n if (typeof o.source == \"number\") o.source = nodes[o.source];\n if (typeof o.target == \"number\") o.target = nodes[o.target];\n ++o.source.weight;\n ++o.target.weight;\n }\n for (i = 0; i < n; ++i) {\n o = nodes[i];\n if (isNaN(o.x)) o.x = position(\"x\", w);\n if (isNaN(o.y)) o.y = position(\"y\", h);\n if (isNaN(o.px)) o.px = o.x;\n if (isNaN(o.py)) o.py = o.y;\n }\n distances = [];\n if (typeof linkDistance === \"function\") for (i = 0; i < m; ++i) distances[i] = +linkDistance.call(this, links[i], i);\n else for (i = 0; i < m; ++i) distances[i] = linkDistance;\n strengths = [];\n if (typeof linkStrength === \"function\") for (i = 0; i < m; ++i) strengths[i] = +linkStrength.call(this, links[i], i);\n else for (i = 0; i < m; ++i) strengths[i] = linkStrength;\n charges = [];\n if (typeof charge === \"function\") for (i = 0; i < n; ++i) charges[i] = +charge.call(this, nodes[i], i);\n else for (i = 0; i < n; ++i) charges[i] = charge;\n function position(dimension, size2) {\n if (!neighbors) {\n neighbors = new Array(n);\n for (j = 0; j < n; ++j) {\n neighbors[j] = [];\n }\n for (j = 0; j < m; ++j) {\n var o2 = links[j];\n neighbors[o2.source.index].push(o2.target);\n neighbors[o2.target.index].push(o2.source);\n }\n }\n var candidates = neighbors[i], j = -1, l = candidates.length, x;\n while (++j < l) if (!isNaN(x = candidates[j][dimension])) return x;\n return Math.random() * size2;\n }\n return force.resume();\n };\n force.resume = function() {\n return force.alpha(0.1);\n };\n force.stop = function() {\n return force.alpha(0);\n };\n force.drag = function() {\n if (!drag) drag = d3.behavior.drag().origin(d3_identity).on(\"dragstart.force\", d3_layout_forceDragstart).on(\"drag.force\", dragmove).on(\"dragend.force\", d3_layout_forceDragend);\n if (!arguments.length) return drag;\n this.on(\"mouseover.force\", d3_layout_forceMouseover).on(\"mouseout.force\", d3_layout_forceMouseout).call(drag);\n };\n function dragmove(d) {\n d.px = d3.event.x, d.py = d3.event.y;\n force.resume();\n }\n return d3.rebind(force, event, \"on\");\n };\n function d3_layout_forceDragstart(d) {\n d.fixed |= 2;\n }\n function d3_layout_forceDragend(d) {\n d.fixed &= ~6;\n }\n function d3_layout_forceMouseover(d) {\n d.fixed |= 4;\n d.px = d.x, d.py = d.y;\n }\n function d3_layout_forceMouseout(d) {\n d.fixed &= ~4;\n }\n function d3_layout_forceAccumulate(quad, alpha, charges) {\n var cx = 0, cy = 0;\n quad.charge = 0;\n if (!quad.leaf) {\n var nodes = quad.nodes, n = nodes.length, i = -1, c;\n while (++i < n) {\n c = nodes[i];\n if (c == null) continue;\n d3_layout_forceAccumulate(c, alpha, charges);\n quad.charge += c.charge;\n cx += c.charge * c.cx;\n cy += c.charge * c.cy;\n }\n }\n if (quad.point) {\n if (!quad.leaf) {\n quad.point.x += Math.random() - 0.5;\n quad.point.y += Math.random() - 0.5;\n }\n var k = alpha * charges[quad.point.index];\n quad.charge += quad.pointCharge = k;\n cx += k * quad.point.x;\n cy += k * quad.point.y;\n }\n quad.cx = cx / quad.charge;\n quad.cy = cy / quad.charge;\n }\n var d3_layout_forceLinkDistance = 20, d3_layout_forceLinkStrength = 1, d3_layout_forceChargeDistance2 = Infinity;\n d3.layout.hierarchy = function() {\n var sort = d3_layout_hierarchySort, children = d3_layout_hierarchyChildren, value = d3_layout_hierarchyValue;\n function hierarchy(root) {\n var stack = [root], nodes = [], node;\n root.depth = 0;\n while ((node = stack.pop()) != null) {\n nodes.push(node);\n if ((childs = children.call(hierarchy, node, node.depth)) && (n = childs.length)) {\n var n, childs, child;\n while (--n >= 0) {\n stack.push(child = childs[n]);\n child.parent = node;\n child.depth = node.depth + 1;\n }\n if (value) node.value = 0;\n node.children = childs;\n } else {\n if (value) node.value = +value.call(hierarchy, node, node.depth) || 0;\n delete node.children;\n }\n }\n d3_layout_hierarchyVisitAfter(root, function(node2) {\n var childs2, parent;\n if (sort && (childs2 = node2.children)) childs2.sort(sort);\n if (value && (parent = node2.parent)) parent.value += node2.value;\n });\n return nodes;\n }\n hierarchy.sort = function(x) {\n if (!arguments.length) return sort;\n sort = x;\n return hierarchy;\n };\n hierarchy.children = function(x) {\n if (!arguments.length) return children;\n children = x;\n return hierarchy;\n };\n hierarchy.value = function(x) {\n if (!arguments.length) return value;\n value = x;\n return hierarchy;\n };\n hierarchy.revalue = function(root) {\n if (value) {\n d3_layout_hierarchyVisitBefore(root, function(node) {\n if (node.children) node.value = 0;\n });\n d3_layout_hierarchyVisitAfter(root, function(node) {\n var parent;\n if (!node.children) node.value = +value.call(hierarchy, node, node.depth) || 0;\n if (parent = node.parent) parent.value += node.value;\n });\n }\n return root;\n };\n return hierarchy;\n };\n function d3_layout_hierarchyRebind(object, hierarchy) {\n d3.rebind(object, hierarchy, \"sort\", \"children\", \"value\");\n object.nodes = object;\n object.links = d3_layout_hierarchyLinks;\n return object;\n }\n function d3_layout_hierarchyVisitBefore(node, callback) {\n var nodes = [node];\n while ((node = nodes.pop()) != null) {\n callback(node);\n if ((children = node.children) && (n = children.length)) {\n var n, children;\n while (--n >= 0) nodes.push(children[n]);\n }\n }\n }\n function d3_layout_hierarchyVisitAfter(node, callback) {\n var nodes = [node], nodes2 = [];\n while ((node = nodes.pop()) != null) {\n nodes2.push(node);\n if ((children = node.children) && (n = children.length)) {\n var i = -1, n, children;\n while (++i < n) nodes.push(children[i]);\n }\n }\n while ((node = nodes2.pop()) != null) {\n callback(node);\n }\n }\n function d3_layout_hierarchyChildren(d) {\n return d.children;\n }\n function d3_layout_hierarchyValue(d) {\n return d.value;\n }\n function d3_layout_hierarchySort(a, b) {\n return b.value - a.value;\n }\n function d3_layout_hierarchyLinks(nodes) {\n return d3.merge(nodes.map(function(parent) {\n return (parent.children || []).map(function(child) {\n return {\n source: parent,\n target: child\n };\n });\n }));\n }\n d3.layout.partition = function() {\n var hierarchy = d3.layout.hierarchy(), size = [1, 1];\n function position(node, x, dx, dy) {\n var children = node.children;\n node.x = x;\n node.y = node.depth * dy;\n node.dx = dx;\n node.dy = dy;\n if (children && (n = children.length)) {\n var i = -1, n, c, d;\n dx = node.value ? dx / node.value : 0;\n while (++i < n) {\n position(c = children[i], x, d = c.value * dx, dy);\n x += d;\n }\n }\n }\n function depth(node) {\n var children = node.children, d = 0;\n if (children && (n = children.length)) {\n var i = -1, n;\n while (++i < n) d = Math.max(d, depth(children[i]));\n }\n return 1 + d;\n }\n function partition(d, i) {\n var nodes = hierarchy.call(this, d, i);\n position(nodes[0], 0, size[0], size[1] / depth(nodes[0]));\n return nodes;\n }\n partition.size = function(x) {\n if (!arguments.length) return size;\n size = x;\n return partition;\n };\n return d3_layout_hierarchyRebind(partition, hierarchy);\n };\n d3.layout.pie = function() {\n var value = Number, sort = d3_layout_pieSortByValue, startAngle = 0, endAngle = \\u03C4, padAngle = 0;\n function pie(data) {\n var n = data.length, values = data.map(function(d, i) {\n return +value.call(pie, d, i);\n }), a = +(typeof startAngle === \"function\" ? startAngle.apply(this, arguments) : startAngle), da = (typeof endAngle === \"function\" ? endAngle.apply(this, arguments) : endAngle) - a, p = Math.min(Math.abs(da) / n, +(typeof padAngle === \"function\" ? padAngle.apply(this, arguments) : padAngle)), pa = p * (da < 0 ? -1 : 1), sum = d3.sum(values), k = sum ? (da - n * pa) / sum : 0, index = d3.range(n), arcs = [], v;\n if (sort != null) index.sort(sort === d3_layout_pieSortByValue ? function(i, j) {\n return values[j] - values[i];\n } : function(i, j) {\n return sort(data[i], data[j]);\n });\n index.forEach(function(i) {\n arcs[i] = {\n data: data[i],\n value: v = values[i],\n startAngle: a,\n endAngle: a += v * k + pa,\n padAngle: p\n };\n });\n return arcs;\n }\n pie.value = function(_) {\n if (!arguments.length) return value;\n value = _;\n return pie;\n };\n pie.sort = function(_) {\n if (!arguments.length) return sort;\n sort = _;\n return pie;\n };\n pie.startAngle = function(_) {\n if (!arguments.length) return startAngle;\n startAngle = _;\n return pie;\n };\n pie.endAngle = function(_) {\n if (!arguments.length) return endAngle;\n endAngle = _;\n return pie;\n };\n pie.padAngle = function(_) {\n if (!arguments.length) return padAngle;\n padAngle = _;\n return pie;\n };\n return pie;\n };\n var d3_layout_pieSortByValue = {};\n d3.layout.stack = function() {\n var values = d3_identity, order = d3_layout_stackOrderDefault, offset = d3_layout_stackOffsetZero, out = d3_layout_stackOut, x = d3_layout_stackX, y = d3_layout_stackY;\n function stack(data, index) {\n if (!(n = data.length)) return data;\n var series = data.map(function(d, i2) {\n return values.call(stack, d, i2);\n });\n var points = series.map(function(d) {\n return d.map(function(v, i2) {\n return [x.call(stack, v, i2), y.call(stack, v, i2)];\n });\n });\n var orders = order.call(stack, points, index);\n series = d3.permute(series, orders);\n points = d3.permute(points, orders);\n var offsets = offset.call(stack, points, index);\n var m = series[0].length, n, i, j, o;\n for (j = 0; j < m; ++j) {\n out.call(stack, series[0][j], o = offsets[j], points[0][j][1]);\n for (i = 1; i < n; ++i) {\n out.call(stack, series[i][j], o += points[i - 1][j][1], points[i][j][1]);\n }\n }\n return data;\n }\n stack.values = function(x2) {\n if (!arguments.length) return values;\n values = x2;\n return stack;\n };\n stack.order = function(x2) {\n if (!arguments.length) return order;\n order = typeof x2 === \"function\" ? x2 : d3_layout_stackOrders.get(x2) || d3_layout_stackOrderDefault;\n return stack;\n };\n stack.offset = function(x2) {\n if (!arguments.length) return offset;\n offset = typeof x2 === \"function\" ? x2 : d3_layout_stackOffsets.get(x2) || d3_layout_stackOffsetZero;\n return stack;\n };\n stack.x = function(z) {\n if (!arguments.length) return x;\n x = z;\n return stack;\n };\n stack.y = function(z) {\n if (!arguments.length) return y;\n y = z;\n return stack;\n };\n stack.out = function(z) {\n if (!arguments.length) return out;\n out = z;\n return stack;\n };\n return stack;\n };\n function d3_layout_stackX(d) {\n return d.x;\n }\n function d3_layout_stackY(d) {\n return d.y;\n }\n function d3_layout_stackOut(d, y0, y) {\n d.y0 = y0;\n d.y = y;\n }\n var d3_layout_stackOrders = d3.map({\n \"inside-out\": function(data) {\n var n = data.length, i, j, max = data.map(d3_layout_stackMaxIndex), sums = data.map(d3_layout_stackReduceSum), index = d3.range(n).sort(function(a, b) {\n return max[a] - max[b];\n }), top = 0, bottom = 0, tops = [], bottoms = [];\n for (i = 0; i < n; ++i) {\n j = index[i];\n if (top < bottom) {\n top += sums[j];\n tops.push(j);\n } else {\n bottom += sums[j];\n bottoms.push(j);\n }\n }\n return bottoms.reverse().concat(tops);\n },\n reverse: function(data) {\n return d3.range(data.length).reverse();\n },\n \"default\": d3_layout_stackOrderDefault\n });\n var d3_layout_stackOffsets = d3.map({\n silhouette: function(data) {\n var n = data.length, m = data[0].length, sums = [], max = 0, i, j, o, y0 = [];\n for (j = 0; j < m; ++j) {\n for (i = 0, o = 0; i < n; i++) o += data[i][j][1];\n if (o > max) max = o;\n sums.push(o);\n }\n for (j = 0; j < m; ++j) {\n y0[j] = (max - sums[j]) / 2;\n }\n return y0;\n },\n wiggle: function(data) {\n var n = data.length, x = data[0], m = x.length, i, j, k, s1, s2, s3, dx, o, o0, y0 = [];\n y0[0] = o = o0 = 0;\n for (j = 1; j < m; ++j) {\n for (i = 0, s1 = 0; i < n; ++i) s1 += data[i][j][1];\n for (i = 0, s2 = 0, dx = x[j][0] - x[j - 1][0]; i < n; ++i) {\n for (k = 0, s3 = (data[i][j][1] - data[i][j - 1][1]) / (2 * dx); k < i; ++k) {\n s3 += (data[k][j][1] - data[k][j - 1][1]) / dx;\n }\n s2 += s3 * data[i][j][1];\n }\n y0[j] = o -= s1 ? s2 / s1 * dx : 0;\n if (o < o0) o0 = o;\n }\n for (j = 0; j < m; ++j) y0[j] -= o0;\n return y0;\n },\n expand: function(data) {\n var n = data.length, m = data[0].length, k = 1 / n, i, j, o, y0 = [];\n for (j = 0; j < m; ++j) {\n for (i = 0, o = 0; i < n; i++) o += data[i][j][1];\n if (o) for (i = 0; i < n; i++) data[i][j][1] /= o;\n else for (i = 0; i < n; i++) data[i][j][1] = k;\n }\n for (j = 0; j < m; ++j) y0[j] = 0;\n return y0;\n },\n zero: d3_layout_stackOffsetZero\n });\n function d3_layout_stackOrderDefault(data) {\n return d3.range(data.length);\n }\n function d3_layout_stackOffsetZero(data) {\n var j = -1, m = data[0].length, y0 = [];\n while (++j < m) y0[j] = 0;\n return y0;\n }\n function d3_layout_stackMaxIndex(array) {\n var i = 1, j = 0, v = array[0][1], k, n = array.length;\n for (; i < n; ++i) {\n if ((k = array[i][1]) > v) {\n j = i;\n v = k;\n }\n }\n return j;\n }\n function d3_layout_stackReduceSum(d) {\n return d.reduce(d3_layout_stackSum, 0);\n }\n function d3_layout_stackSum(p, d) {\n return p + d[1];\n }\n d3.layout.histogram = function() {\n var frequency = true, valuer = Number, ranger = d3_layout_histogramRange, binner = d3_layout_histogramBinSturges;\n function histogram(data, i) {\n var bins = [], values = data.map(valuer, this), range = ranger.call(this, values, i), thresholds = binner.call(this, range, values, i), bin, i = -1, n = values.length, m = thresholds.length - 1, k = frequency ? 1 : 1 / n, x;\n while (++i < m) {\n bin = bins[i] = [];\n bin.dx = thresholds[i + 1] - (bin.x = thresholds[i]);\n bin.y = 0;\n }\n if (m > 0) {\n i = -1;\n while (++i < n) {\n x = values[i];\n if (x >= range[0] && x <= range[1]) {\n bin = bins[d3.bisect(thresholds, x, 1, m) - 1];\n bin.y += k;\n bin.push(data[i]);\n }\n }\n }\n return bins;\n }\n histogram.value = function(x) {\n if (!arguments.length) return valuer;\n valuer = x;\n return histogram;\n };\n histogram.range = function(x) {\n if (!arguments.length) return ranger;\n ranger = d3_functor(x);\n return histogram;\n };\n histogram.bins = function(x) {\n if (!arguments.length) return binner;\n binner = typeof x === \"number\" ? function(range) {\n return d3_layout_histogramBinFixed(range, x);\n } : d3_functor(x);\n return histogram;\n };\n histogram.frequency = function(x) {\n if (!arguments.length) return frequency;\n frequency = !!x;\n return histogram;\n };\n return histogram;\n };\n function d3_layout_histogramBinSturges(range, values) {\n return d3_layout_histogramBinFixed(range, Math.ceil(Math.log(values.length) / Math.LN2 + 1));\n }\n function d3_layout_histogramBinFixed(range, n) {\n var x = -1, b = +range[0], m = (range[1] - b) / n, f = [];\n while (++x <= n) f[x] = m * x + b;\n return f;\n }\n function d3_layout_histogramRange(values) {\n return [d3.min(values), d3.max(values)];\n }\n d3.layout.pack = function() {\n var hierarchy = d3.layout.hierarchy().sort(d3_layout_packSort), padding = 0, size = [1, 1], radius;\n function pack(d, i) {\n var nodes = hierarchy.call(this, d, i), root = nodes[0], w = size[0], h = size[1], r = radius == null ? Math.sqrt : typeof radius === \"function\" ? radius : function() {\n return radius;\n };\n root.x = root.y = 0;\n d3_layout_hierarchyVisitAfter(root, function(d2) {\n d2.r = +r(d2.value);\n });\n d3_layout_hierarchyVisitAfter(root, d3_layout_packSiblings);\n if (padding) {\n var dr = padding * (radius ? 1 : Math.max(2 * root.r / w, 2 * root.r / h)) / 2;\n d3_layout_hierarchyVisitAfter(root, function(d2) {\n d2.r += dr;\n });\n d3_layout_hierarchyVisitAfter(root, d3_layout_packSiblings);\n d3_layout_hierarchyVisitAfter(root, function(d2) {\n d2.r -= dr;\n });\n }\n d3_layout_packTransform(root, w / 2, h / 2, radius ? 1 : 1 / Math.max(2 * root.r / w, 2 * root.r / h));\n return nodes;\n }\n pack.size = function(_) {\n if (!arguments.length) return size;\n size = _;\n return pack;\n };\n pack.radius = function(_) {\n if (!arguments.length) return radius;\n radius = _ == null || typeof _ === \"function\" ? _ : +_;\n return pack;\n };\n pack.padding = function(_) {\n if (!arguments.length) return padding;\n padding = +_;\n return pack;\n };\n return d3_layout_hierarchyRebind(pack, hierarchy);\n };\n function d3_layout_packSort(a, b) {\n return a.value - b.value;\n }\n function d3_layout_packInsert(a, b) {\n var c = a._pack_next;\n a._pack_next = b;\n b._pack_prev = a;\n b._pack_next = c;\n c._pack_prev = b;\n }\n function d3_layout_packSplice(a, b) {\n a._pack_next = b;\n b._pack_prev = a;\n }\n function d3_layout_packIntersects(a, b) {\n var dx = b.x - a.x, dy = b.y - a.y, dr = a.r + b.r;\n return 0.999 * dr * dr > dx * dx + dy * dy;\n }\n function d3_layout_packSiblings(node) {\n if (!(nodes = node.children) || !(n = nodes.length)) return;\n var nodes, xMin = Infinity, xMax = -Infinity, yMin = Infinity, yMax = -Infinity, a, b, c, i, j, k, n;\n function bound(node2) {\n xMin = Math.min(node2.x - node2.r, xMin);\n xMax = Math.max(node2.x + node2.r, xMax);\n yMin = Math.min(node2.y - node2.r, yMin);\n yMax = Math.max(node2.y + node2.r, yMax);\n }\n nodes.forEach(d3_layout_packLink);\n a = nodes[0];\n a.x = -a.r;\n a.y = 0;\n bound(a);\n if (n > 1) {\n b = nodes[1];\n b.x = b.r;\n b.y = 0;\n bound(b);\n if (n > 2) {\n c = nodes[2];\n d3_layout_packPlace(a, b, c);\n bound(c);\n d3_layout_packInsert(a, c);\n a._pack_prev = c;\n d3_layout_packInsert(c, b);\n b = a._pack_next;\n for (i = 3; i < n; i++) {\n d3_layout_packPlace(a, b, c = nodes[i]);\n var isect = 0, s1 = 1, s2 = 1;\n for (j = b._pack_next; j !== b; j = j._pack_next, s1++) {\n if (d3_layout_packIntersects(j, c)) {\n isect = 1;\n break;\n }\n }\n if (isect == 1) {\n for (k = a._pack_prev; k !== j._pack_prev; k = k._pack_prev, s2++) {\n if (d3_layout_packIntersects(k, c)) {\n break;\n }\n }\n }\n if (isect) {\n if (s1 < s2 || s1 == s2 && b.r < a.r) d3_layout_packSplice(a, b = j);\n else d3_layout_packSplice(a = k, b);\n i--;\n } else {\n d3_layout_packInsert(a, c);\n b = c;\n bound(c);\n }\n }\n }\n }\n var cx = (xMin + xMax) / 2, cy = (yMin + yMax) / 2, cr = 0;\n for (i = 0; i < n; i++) {\n c = nodes[i];\n c.x -= cx;\n c.y -= cy;\n cr = Math.max(cr, c.r + Math.sqrt(c.x * c.x + c.y * c.y));\n }\n node.r = cr;\n nodes.forEach(d3_layout_packUnlink);\n }\n function d3_layout_packLink(node) {\n node._pack_next = node._pack_prev = node;\n }\n function d3_layout_packUnlink(node) {\n delete node._pack_next;\n delete node._pack_prev;\n }\n function d3_layout_packTransform(node, x, y, k) {\n var children = node.children;\n node.x = x += k * node.x;\n node.y = y += k * node.y;\n node.r *= k;\n if (children) {\n var i = -1, n = children.length;\n while (++i < n) d3_layout_packTransform(children[i], x, y, k);\n }\n }\n function d3_layout_packPlace(a, b, c) {\n var db = a.r + c.r, dx = b.x - a.x, dy = b.y - a.y;\n if (db && (dx || dy)) {\n var da = b.r + c.r, dc = dx * dx + dy * dy;\n da *= da;\n db *= db;\n var x = 0.5 + (db - da) / (2 * dc), y = Math.sqrt(Math.max(0, 2 * da * (db + dc) - (db -= dc) * db - da * da)) / (2 * dc);\n c.x = a.x + x * dx + y * dy;\n c.y = a.y + x * dy - y * dx;\n } else {\n c.x = a.x + db;\n c.y = a.y;\n }\n }\n d3.layout.tree = function() {\n var hierarchy = d3.layout.hierarchy().sort(null).value(null), separation = d3_layout_treeSeparation, size = [1, 1], nodeSize = null;\n function tree(d, i) {\n var nodes = hierarchy.call(this, d, i), root0 = nodes[0], root1 = wrapTree(root0);\n d3_layout_hierarchyVisitAfter(root1, firstWalk), root1.parent.m = -root1.z;\n d3_layout_hierarchyVisitBefore(root1, secondWalk);\n if (nodeSize) d3_layout_hierarchyVisitBefore(root0, sizeNode);\n else {\n var left = root0, right = root0, bottom = root0;\n d3_layout_hierarchyVisitBefore(root0, function(node) {\n if (node.x < left.x) left = node;\n if (node.x > right.x) right = node;\n if (node.depth > bottom.depth) bottom = node;\n });\n var tx = separation(left, right) / 2 - left.x, kx = size[0] / (right.x + separation(right, left) / 2 + tx), ky = size[1] / (bottom.depth || 1);\n d3_layout_hierarchyVisitBefore(root0, function(node) {\n node.x = (node.x + tx) * kx;\n node.y = node.depth * ky;\n });\n }\n return nodes;\n }\n function wrapTree(root0) {\n var root1 = {\n A: null,\n children: [root0]\n }, queue = [root1], node1;\n while ((node1 = queue.pop()) != null) {\n for (var children = node1.children, child, i = 0, n = children.length; i < n; ++i) {\n queue.push((children[i] = child = {\n _: children[i],\n parent: node1,\n children: (child = children[i].children) && child.slice() || [],\n A: null,\n a: null,\n z: 0,\n m: 0,\n c: 0,\n s: 0,\n t: null,\n i\n }).a = child);\n }\n }\n return root1.children[0];\n }\n function firstWalk(v) {\n var children = v.children, siblings = v.parent.children, w = v.i ? siblings[v.i - 1] : null;\n if (children.length) {\n d3_layout_treeShift(v);\n var midpoint = (children[0].z + children[children.length - 1].z) / 2;\n if (w) {\n v.z = w.z + separation(v._, w._);\n v.m = v.z - midpoint;\n } else {\n v.z = midpoint;\n }\n } else if (w) {\n v.z = w.z + separation(v._, w._);\n }\n v.parent.A = apportion(v, w, v.parent.A || siblings[0]);\n }\n function secondWalk(v) {\n v._.x = v.z + v.parent.m;\n v.m += v.parent.m;\n }\n function apportion(v, w, ancestor) {\n if (w) {\n var vip = v, vop = v, vim = w, vom = vip.parent.children[0], sip = vip.m, sop = vop.m, sim = vim.m, som = vom.m, shift;\n while (vim = d3_layout_treeRight(vim), vip = d3_layout_treeLeft(vip), vim && vip) {\n vom = d3_layout_treeLeft(vom);\n vop = d3_layout_treeRight(vop);\n vop.a = v;\n shift = vim.z + sim - vip.z - sip + separation(vim._, vip._);\n if (shift > 0) {\n d3_layout_treeMove(d3_layout_treeAncestor(vim, v, ancestor), v, shift);\n sip += shift;\n sop += shift;\n }\n sim += vim.m;\n sip += vip.m;\n som += vom.m;\n sop += vop.m;\n }\n if (vim && !d3_layout_treeRight(vop)) {\n vop.t = vim;\n vop.m += sim - sop;\n }\n if (vip && !d3_layout_treeLeft(vom)) {\n vom.t = vip;\n vom.m += sip - som;\n ancestor = v;\n }\n }\n return ancestor;\n }\n function sizeNode(node) {\n node.x *= size[0];\n node.y = node.depth * size[1];\n }\n tree.separation = function(x) {\n if (!arguments.length) return separation;\n separation = x;\n return tree;\n };\n tree.size = function(x) {\n if (!arguments.length) return nodeSize ? null : size;\n nodeSize = (size = x) == null ? sizeNode : null;\n return tree;\n };\n tree.nodeSize = function(x) {\n if (!arguments.length) return nodeSize ? size : null;\n nodeSize = (size = x) == null ? null : sizeNode;\n return tree;\n };\n return d3_layout_hierarchyRebind(tree, hierarchy);\n };\n function d3_layout_treeSeparation(a, b) {\n return a.parent == b.parent ? 1 : 2;\n }\n function d3_layout_treeLeft(v) {\n var children = v.children;\n return children.length ? children[0] : v.t;\n }\n function d3_layout_treeRight(v) {\n var children = v.children, n;\n return (n = children.length) ? children[n - 1] : v.t;\n }\n function d3_layout_treeMove(wm, wp, shift) {\n var change = shift / (wp.i - wm.i);\n wp.c -= change;\n wp.s += shift;\n wm.c += change;\n wp.z += shift;\n wp.m += shift;\n }\n function d3_layout_treeShift(v) {\n var shift = 0, change = 0, children = v.children, i = children.length, w;\n while (--i >= 0) {\n w = children[i];\n w.z += shift;\n w.m += shift;\n shift += w.s + (change += w.c);\n }\n }\n function d3_layout_treeAncestor(vim, v, ancestor) {\n return vim.a.parent === v.parent ? vim.a : ancestor;\n }\n d3.layout.cluster = function() {\n var hierarchy = d3.layout.hierarchy().sort(null).value(null), separation = d3_layout_treeSeparation, size = [1, 1], nodeSize = false;\n function cluster(d, i) {\n var nodes = hierarchy.call(this, d, i), root = nodes[0], previousNode, x = 0;\n d3_layout_hierarchyVisitAfter(root, function(node) {\n var children = node.children;\n if (children && children.length) {\n node.x = d3_layout_clusterX(children);\n node.y = d3_layout_clusterY(children);\n } else {\n node.x = previousNode ? x += separation(node, previousNode) : 0;\n node.y = 0;\n previousNode = node;\n }\n });\n var left = d3_layout_clusterLeft(root), right = d3_layout_clusterRight(root), x0 = left.x - separation(left, right) / 2, x1 = right.x + separation(right, left) / 2;\n d3_layout_hierarchyVisitAfter(root, nodeSize ? function(node) {\n node.x = (node.x - root.x) * size[0];\n node.y = (root.y - node.y) * size[1];\n } : function(node) {\n node.x = (node.x - x0) / (x1 - x0) * size[0];\n node.y = (1 - (root.y ? node.y / root.y : 1)) * size[1];\n });\n return nodes;\n }\n cluster.separation = function(x) {\n if (!arguments.length) return separation;\n separation = x;\n return cluster;\n };\n cluster.size = function(x) {\n if (!arguments.length) return nodeSize ? null : size;\n nodeSize = (size = x) == null;\n return cluster;\n };\n cluster.nodeSize = function(x) {\n if (!arguments.length) return nodeSize ? size : null;\n nodeSize = (size = x) != null;\n return cluster;\n };\n return d3_layout_hierarchyRebind(cluster, hierarchy);\n };\n function d3_layout_clusterY(children) {\n return 1 + d3.max(children, function(child) {\n return child.y;\n });\n }\n function d3_layout_clusterX(children) {\n return children.reduce(function(x, child) {\n return x + child.x;\n }, 0) / children.length;\n }\n function d3_layout_clusterLeft(node) {\n var children = node.children;\n return children && children.length ? d3_layout_clusterLeft(children[0]) : node;\n }\n function d3_layout_clusterRight(node) {\n var children = node.children, n;\n return children && (n = children.length) ? d3_layout_clusterRight(children[n - 1]) : node;\n }\n d3.layout.treemap = function() {\n var hierarchy = d3.layout.hierarchy(), round = Math.round, size = [1, 1], padding = null, pad = d3_layout_treemapPadNull, sticky = false, stickies, mode = \"squarify\", ratio = 0.5 * (1 + Math.sqrt(5));\n function scale(children, k) {\n var i = -1, n = children.length, child, area;\n while (++i < n) {\n area = (child = children[i]).value * (k < 0 ? 0 : k);\n child.area = isNaN(area) || area <= 0 ? 0 : area;\n }\n }\n function squarify(node) {\n var children = node.children;\n if (children && children.length) {\n var rect = pad(node), row = [], remaining = children.slice(), child, best = Infinity, score, u = mode === \"slice\" ? rect.dx : mode === \"dice\" ? rect.dy : mode === \"slice-dice\" ? node.depth & 1 ? rect.dy : rect.dx : Math.min(rect.dx, rect.dy), n;\n scale(remaining, rect.dx * rect.dy / node.value);\n row.area = 0;\n while ((n = remaining.length) > 0) {\n row.push(child = remaining[n - 1]);\n row.area += child.area;\n if (mode !== \"squarify\" || (score = worst(row, u)) <= best) {\n remaining.pop();\n best = score;\n } else {\n row.area -= row.pop().area;\n position(row, u, rect, false);\n u = Math.min(rect.dx, rect.dy);\n row.length = row.area = 0;\n best = Infinity;\n }\n }\n if (row.length) {\n position(row, u, rect, true);\n row.length = row.area = 0;\n }\n children.forEach(squarify);\n }\n }\n function stickify(node) {\n var children = node.children;\n if (children && children.length) {\n var rect = pad(node), remaining = children.slice(), child, row = [];\n scale(remaining, rect.dx * rect.dy / node.value);\n row.area = 0;\n while (child = remaining.pop()) {\n row.push(child);\n row.area += child.area;\n if (child.z != null) {\n position(row, child.z ? rect.dx : rect.dy, rect, !remaining.length);\n row.length = row.area = 0;\n }\n }\n children.forEach(stickify);\n }\n }\n function worst(row, u) {\n var s = row.area, r, rmax = 0, rmin = Infinity, i = -1, n = row.length;\n while (++i < n) {\n if (!(r = row[i].area)) continue;\n if (r < rmin) rmin = r;\n if (r > rmax) rmax = r;\n }\n s *= s;\n u *= u;\n return s ? Math.max(u * rmax * ratio / s, s / (u * rmin * ratio)) : Infinity;\n }\n function position(row, u, rect, flush) {\n var i = -1, n = row.length, x = rect.x, y = rect.y, v = u ? round(row.area / u) : 0, o;\n if (u == rect.dx) {\n if (flush || v > rect.dy) v = rect.dy;\n while (++i < n) {\n o = row[i];\n o.x = x;\n o.y = y;\n o.dy = v;\n x += o.dx = Math.min(rect.x + rect.dx - x, v ? round(o.area / v) : 0);\n }\n o.z = true;\n o.dx += rect.x + rect.dx - x;\n rect.y += v;\n rect.dy -= v;\n } else {\n if (flush || v > rect.dx) v = rect.dx;\n while (++i < n) {\n o = row[i];\n o.x = x;\n o.y = y;\n o.dx = v;\n y += o.dy = Math.min(rect.y + rect.dy - y, v ? round(o.area / v) : 0);\n }\n o.z = false;\n o.dy += rect.y + rect.dy - y;\n rect.x += v;\n rect.dx -= v;\n }\n }\n function treemap(d) {\n var nodes = stickies || hierarchy(d), root = nodes[0];\n root.x = root.y = 0;\n if (root.value) root.dx = size[0], root.dy = size[1];\n else root.dx = root.dy = 0;\n if (stickies) hierarchy.revalue(root);\n scale([root], root.dx * root.dy / root.value);\n (stickies ? stickify : squarify)(root);\n if (sticky) stickies = nodes;\n return nodes;\n }\n treemap.size = function(x) {\n if (!arguments.length) return size;\n size = x;\n return treemap;\n };\n treemap.padding = function(x) {\n if (!arguments.length) return padding;\n function padFunction(node) {\n var p = x.call(treemap, node, node.depth);\n return p == null ? d3_layout_treemapPadNull(node) : d3_layout_treemapPad(node, typeof p === \"number\" ? [p, p, p, p] : p);\n }\n function padConstant(node) {\n return d3_layout_treemapPad(node, x);\n }\n var type;\n pad = (padding = x) == null ? d3_layout_treemapPadNull : (type = typeof x) === \"function\" ? padFunction : type === \"number\" ? (x = [x, x, x, x], padConstant) : padConstant;\n return treemap;\n };\n treemap.round = function(x) {\n if (!arguments.length) return round != Number;\n round = x ? Math.round : Number;\n return treemap;\n };\n treemap.sticky = function(x) {\n if (!arguments.length) return sticky;\n sticky = x;\n stickies = null;\n return treemap;\n };\n treemap.ratio = function(x) {\n if (!arguments.length) return ratio;\n ratio = x;\n return treemap;\n };\n treemap.mode = function(x) {\n if (!arguments.length) return mode;\n mode = x + \"\";\n return treemap;\n };\n return d3_layout_hierarchyRebind(treemap, hierarchy);\n };\n function d3_layout_treemapPadNull(node) {\n return {\n x: node.x,\n y: node.y,\n dx: node.dx,\n dy: node.dy\n };\n }\n function d3_layout_treemapPad(node, padding) {\n var x = node.x + padding[3], y = node.y + padding[0], dx = node.dx - padding[1] - padding[3], dy = node.dy - padding[0] - padding[2];\n if (dx < 0) {\n x += dx / 2;\n dx = 0;\n }\n if (dy < 0) {\n y += dy / 2;\n dy = 0;\n }\n return {\n x,\n y,\n dx,\n dy\n };\n }\n d3.random = {\n normal: function(mu, sigma) {\n var n = arguments.length;\n if (n < 2) sigma = 1;\n if (n < 1) mu = 0;\n return function() {\n var x, y, r;\n do {\n x = Math.random() * 2 - 1;\n y = Math.random() * 2 - 1;\n r = x * x + y * y;\n } while (!r || r > 1);\n return mu + sigma * x * Math.sqrt(-2 * Math.log(r) / r);\n };\n },\n logNormal: function() {\n var random = d3.random.normal.apply(d3, arguments);\n return function() {\n return Math.exp(random());\n };\n },\n bates: function(m) {\n var random = d3.random.irwinHall(m);\n return function() {\n return random() / m;\n };\n },\n irwinHall: function(m) {\n return function() {\n for (var s = 0, j = 0; j < m; j++) s += Math.random();\n return s;\n };\n }\n };\n d3.scale = {};\n function d3_scaleExtent(domain) {\n var start = domain[0], stop = domain[domain.length - 1];\n return start < stop ? [start, stop] : [stop, start];\n }\n function d3_scaleRange(scale) {\n return scale.rangeExtent ? scale.rangeExtent() : d3_scaleExtent(scale.range());\n }\n function d3_scale_bilinear(domain, range, uninterpolate, interpolate) {\n var u = uninterpolate(domain[0], domain[1]), i = interpolate(range[0], range[1]);\n return function(x) {\n return i(u(x));\n };\n }\n function d3_scale_nice(domain, nice) {\n var i0 = 0, i1 = domain.length - 1, x0 = domain[i0], x1 = domain[i1], dx;\n if (x1 < x0) {\n dx = i0, i0 = i1, i1 = dx;\n dx = x0, x0 = x1, x1 = dx;\n }\n domain[i0] = nice.floor(x0);\n domain[i1] = nice.ceil(x1);\n return domain;\n }\n function d3_scale_niceStep(step) {\n return step ? {\n floor: function(x) {\n return Math.floor(x / step) * step;\n },\n ceil: function(x) {\n return Math.ceil(x / step) * step;\n }\n } : d3_scale_niceIdentity;\n }\n var d3_scale_niceIdentity = {\n floor: d3_identity,\n ceil: d3_identity\n };\n function d3_scale_polylinear(domain, range, uninterpolate, interpolate) {\n var u = [], i = [], j = 0, k = Math.min(domain.length, range.length) - 1;\n if (domain[k] < domain[0]) {\n domain = domain.slice().reverse();\n range = range.slice().reverse();\n }\n while (++j <= k) {\n u.push(uninterpolate(domain[j - 1], domain[j]));\n i.push(interpolate(range[j - 1], range[j]));\n }\n return function(x) {\n var j2 = d3.bisect(domain, x, 1, k) - 1;\n return i[j2](u[j2](x));\n };\n }\n d3.scale.linear = function() {\n return d3_scale_linear([0, 1], [0, 1], d3_interpolate, false);\n };\n function d3_scale_linear(domain, range, interpolate, clamp) {\n var output, input;\n function rescale() {\n var linear = Math.min(domain.length, range.length) > 2 ? d3_scale_polylinear : d3_scale_bilinear, uninterpolate = clamp ? d3_uninterpolateClamp : d3_uninterpolateNumber;\n output = linear(domain, range, uninterpolate, interpolate);\n input = linear(range, domain, uninterpolate, d3_interpolate);\n return scale;\n }\n function scale(x) {\n return output(x);\n }\n scale.invert = function(y) {\n return input(y);\n };\n scale.domain = function(x) {\n if (!arguments.length) return domain;\n domain = x.map(Number);\n return rescale();\n };\n scale.range = function(x) {\n if (!arguments.length) return range;\n range = x;\n return rescale();\n };\n scale.rangeRound = function(x) {\n return scale.range(x).interpolate(d3_interpolateRound);\n };\n scale.clamp = function(x) {\n if (!arguments.length) return clamp;\n clamp = x;\n return rescale();\n };\n scale.interpolate = function(x) {\n if (!arguments.length) return interpolate;\n interpolate = x;\n return rescale();\n };\n scale.ticks = function(m) {\n return d3_scale_linearTicks(domain, m);\n };\n scale.tickFormat = function(m, format) {\n return d3_scale_linearTickFormat(domain, m, format);\n };\n scale.nice = function(m) {\n d3_scale_linearNice(domain, m);\n return rescale();\n };\n scale.copy = function() {\n return d3_scale_linear(domain, range, interpolate, clamp);\n };\n return rescale();\n }\n function d3_scale_linearRebind(scale, linear) {\n return d3.rebind(scale, linear, \"range\", \"rangeRound\", \"interpolate\", \"clamp\");\n }\n function d3_scale_linearNice(domain, m) {\n d3_scale_nice(domain, d3_scale_niceStep(d3_scale_linearTickRange(domain, m)[2]));\n d3_scale_nice(domain, d3_scale_niceStep(d3_scale_linearTickRange(domain, m)[2]));\n return domain;\n }\n function d3_scale_linearTickRange(domain, m) {\n if (m == null) m = 10;\n var extent = d3_scaleExtent(domain), span = extent[1] - extent[0], step = Math.pow(10, Math.floor(Math.log(span / m) / Math.LN10)), err = m / span * step;\n if (err <= 0.15) step *= 10;\n else if (err <= 0.35) step *= 5;\n else if (err <= 0.75) step *= 2;\n extent[0] = Math.ceil(extent[0] / step) * step;\n extent[1] = Math.floor(extent[1] / step) * step + step * 0.5;\n extent[2] = step;\n return extent;\n }\n function d3_scale_linearTicks(domain, m) {\n return d3.range.apply(d3, d3_scale_linearTickRange(domain, m));\n }\n var d3_scale_linearFormatSignificant = {\n s: 1,\n g: 1,\n p: 1,\n r: 1,\n e: 1\n };\n function d3_scale_linearPrecision(value) {\n return -Math.floor(Math.log(value) / Math.LN10 + 0.01);\n }\n function d3_scale_linearFormatPrecision(type, range) {\n var p = d3_scale_linearPrecision(range[2]);\n return type in d3_scale_linearFormatSignificant ? Math.abs(p - d3_scale_linearPrecision(Math.max(abs(range[0]), abs(range[1])))) + +(type !== \"e\") : p - (type === \"%\") * 2;\n }\n d3.scale.log = function() {\n return d3_scale_log(d3.scale.linear().domain([0, 1]), 10, true, [1, 10]);\n };\n function d3_scale_log(linear, base, positive, domain) {\n function log(x) {\n return (positive ? Math.log(x < 0 ? 0 : x) : -Math.log(x > 0 ? 0 : -x)) / Math.log(base);\n }\n function pow(x) {\n return positive ? Math.pow(base, x) : -Math.pow(base, -x);\n }\n function scale(x) {\n return linear(log(x));\n }\n scale.invert = function(x) {\n return pow(linear.invert(x));\n };\n scale.domain = function(x) {\n if (!arguments.length) return domain;\n positive = x[0] >= 0;\n linear.domain((domain = x.map(Number)).map(log));\n return scale;\n };\n scale.base = function(_) {\n if (!arguments.length) return base;\n base = +_;\n linear.domain(domain.map(log));\n return scale;\n };\n scale.nice = function() {\n var niced = d3_scale_nice(domain.map(log), positive ? Math : d3_scale_logNiceNegative);\n linear.domain(niced);\n domain = niced.map(pow);\n return scale;\n };\n scale.ticks = function() {\n var extent = d3_scaleExtent(domain), ticks = [], u = extent[0], v = extent[1], i = Math.floor(log(u)), j = Math.ceil(log(v)), n = base % 1 ? 2 : base;\n if (isFinite(j - i)) {\n if (positive) {\n for (; i < j; i++) for (var k = 1; k < n; k++) ticks.push(pow(i) * k);\n ticks.push(pow(i));\n } else {\n ticks.push(pow(i));\n for (; i++ < j; ) for (var k = n - 1; k > 0; k--) ticks.push(pow(i) * k);\n }\n for (i = 0; ticks[i] < u; i++) {\n }\n for (j = ticks.length; ticks[j - 1] > v; j--) {\n }\n ticks = ticks.slice(i, j);\n }\n return ticks;\n };\n scale.copy = function() {\n return d3_scale_log(linear.copy(), base, positive, domain);\n };\n return d3_scale_linearRebind(scale, linear);\n }\n var d3_scale_logNiceNegative = {\n floor: function(x) {\n return -Math.ceil(-x);\n },\n ceil: function(x) {\n return -Math.floor(-x);\n }\n };\n d3.scale.pow = function() {\n return d3_scale_pow(d3.scale.linear(), 1, [0, 1]);\n };\n function d3_scale_pow(linear, exponent, domain) {\n var powp = d3_scale_powPow(exponent), powb = d3_scale_powPow(1 / exponent);\n function scale(x) {\n return linear(powp(x));\n }\n scale.invert = function(x) {\n return powb(linear.invert(x));\n };\n scale.domain = function(x) {\n if (!arguments.length) return domain;\n linear.domain((domain = x.map(Number)).map(powp));\n return scale;\n };\n scale.ticks = function(m) {\n return d3_scale_linearTicks(domain, m);\n };\n scale.tickFormat = function(m, format) {\n return d3_scale_linearTickFormat(domain, m, format);\n };\n scale.nice = function(m) {\n return scale.domain(d3_scale_linearNice(domain, m));\n };\n scale.exponent = function(x) {\n if (!arguments.length) return exponent;\n powp = d3_scale_powPow(exponent = x);\n powb = d3_scale_powPow(1 / exponent);\n linear.domain(domain.map(powp));\n return scale;\n };\n scale.copy = function() {\n return d3_scale_pow(linear.copy(), exponent, domain);\n };\n return d3_scale_linearRebind(scale, linear);\n }\n function d3_scale_powPow(e) {\n return function(x) {\n return x < 0 ? -Math.pow(-x, e) : Math.pow(x, e);\n };\n }\n d3.scale.sqrt = function() {\n return d3.scale.pow().exponent(0.5);\n };\n d3.scale.ordinal = function() {\n return d3_scale_ordinal([], {\n t: \"range\",\n a: [[]]\n });\n };\n function d3_scale_ordinal(domain, ranger) {\n var index, range, rangeBand;\n function scale(x) {\n return range[((index.get(x) || (ranger.t === \"range\" ? index.set(x, domain.push(x)) : NaN)) - 1) % range.length];\n }\n function steps(start, step) {\n return d3.range(domain.length).map(function(i) {\n return start + step * i;\n });\n }\n scale.domain = function(x) {\n if (!arguments.length) return domain;\n domain = [];\n index = new d3_Map();\n var i = -1, n = x.length, xi;\n while (++i < n) if (!index.has(xi = x[i])) index.set(xi, domain.push(xi));\n return scale[ranger.t].apply(scale, ranger.a);\n };\n scale.range = function(x) {\n if (!arguments.length) return range;\n range = x;\n rangeBand = 0;\n ranger = {\n t: \"range\",\n a: arguments\n };\n return scale;\n };\n scale.rangePoints = function(x, padding) {\n if (arguments.length < 2) padding = 0;\n var start = x[0], stop = x[1], step = domain.length < 2 ? (start = (start + stop) / 2, 0) : (stop - start) / (domain.length - 1 + padding);\n range = steps(start + step * padding / 2, step);\n rangeBand = 0;\n ranger = {\n t: \"rangePoints\",\n a: arguments\n };\n return scale;\n };\n scale.rangeRoundPoints = function(x, padding) {\n if (arguments.length < 2) padding = 0;\n var start = x[0], stop = x[1], step = domain.length < 2 ? (start = stop = Math.round((start + stop) / 2), 0) : (stop - start) / (domain.length - 1 + padding) | 0;\n range = steps(start + Math.round(step * padding / 2 + (stop - start - (domain.length - 1 + padding) * step) / 2), step);\n rangeBand = 0;\n ranger = {\n t: \"rangeRoundPoints\",\n a: arguments\n };\n return scale;\n };\n scale.rangeBands = function(x, padding, outerPadding) {\n if (arguments.length < 2) padding = 0;\n if (arguments.length < 3) outerPadding = padding;\n var reverse = x[1] < x[0], start = x[reverse - 0], stop = x[1 - reverse], step = (stop - start) / (domain.length - padding + 2 * outerPadding);\n range = steps(start + step * outerPadding, step);\n if (reverse) range.reverse();\n rangeBand = step * (1 - padding);\n ranger = {\n t: \"rangeBands\",\n a: arguments\n };\n return scale;\n };\n scale.rangeRoundBands = function(x, padding, outerPadding) {\n if (arguments.length < 2) padding = 0;\n if (arguments.length < 3) outerPadding = padding;\n var reverse = x[1] < x[0], start = x[reverse - 0], stop = x[1 - reverse], step = Math.floor((stop - start) / (domain.length - padding + 2 * outerPadding));\n range = steps(start + Math.round((stop - start - (domain.length - padding) * step) / 2), step);\n if (reverse) range.reverse();\n rangeBand = Math.round(step * (1 - padding));\n ranger = {\n t: \"rangeRoundBands\",\n a: arguments\n };\n return scale;\n };\n scale.rangeBand = function() {\n return rangeBand;\n };\n scale.rangeExtent = function() {\n return d3_scaleExtent(ranger.a[0]);\n };\n scale.copy = function() {\n return d3_scale_ordinal(domain, ranger);\n };\n return scale.domain(domain);\n }\n d3.scale.category10 = function() {\n return d3.scale.ordinal().range(d3_category10);\n };\n d3.scale.category20 = function() {\n return d3.scale.ordinal().range(d3_category20);\n };\n d3.scale.category20b = function() {\n return d3.scale.ordinal().range(d3_category20b);\n };\n d3.scale.category20c = function() {\n return d3.scale.ordinal().range(d3_category20c);\n };\n var d3_category10 = [2062260, 16744206, 2924588, 14034728, 9725885, 9197131, 14907330, 8355711, 12369186, 1556175].map(d3_rgbString);\n var d3_category20 = [2062260, 11454440, 16744206, 16759672, 2924588, 10018698, 14034728, 16750742, 9725885, 12955861, 9197131, 12885140, 14907330, 16234194, 8355711, 13092807, 12369186, 14408589, 1556175, 10410725].map(d3_rgbString);\n var d3_category20b = [3750777, 5395619, 7040719, 10264286, 6519097, 9216594, 11915115, 13556636, 9202993, 12426809, 15186514, 15190932, 8666169, 11356490, 14049643, 15177372, 8077683, 10834324, 13528509, 14589654].map(d3_rgbString);\n var d3_category20c = [3244733, 7057110, 10406625, 13032431, 15095053, 16616764, 16625259, 16634018, 3253076, 7652470, 10607003, 13101504, 7695281, 10394312, 12369372, 14342891, 6513507, 9868950, 12434877, 14277081].map(d3_rgbString);\n d3.scale.quantile = function() {\n return d3_scale_quantile([], []);\n };\n function d3_scale_quantile(domain, range) {\n var thresholds;\n function rescale() {\n var k = 0, q = range.length;\n thresholds = [];\n while (++k < q) thresholds[k - 1] = d3.quantile(domain, k / q);\n return scale;\n }\n function scale(x) {\n if (!isNaN(x = +x)) return range[d3.bisect(thresholds, x)];\n }\n scale.domain = function(x) {\n if (!arguments.length) return domain;\n domain = x.map(d3_number).filter(d3_numeric).sort(d3_ascending);\n return rescale();\n };\n scale.range = function(x) {\n if (!arguments.length) return range;\n range = x;\n return rescale();\n };\n scale.quantiles = function() {\n return thresholds;\n };\n scale.invertExtent = function(y) {\n y = range.indexOf(y);\n return y < 0 ? [NaN, NaN] : [y > 0 ? thresholds[y - 1] : domain[0], y < thresholds.length ? thresholds[y] : domain[domain.length - 1]];\n };\n scale.copy = function() {\n return d3_scale_quantile(domain, range);\n };\n return rescale();\n }\n d3.scale.quantize = function() {\n return d3_scale_quantize(0, 1, [0, 1]);\n };\n function d3_scale_quantize(x0, x1, range) {\n var kx, i;\n function scale(x) {\n return range[Math.max(0, Math.min(i, Math.floor(kx * (x - x0))))];\n }\n function rescale() {\n kx = range.length / (x1 - x0);\n i = range.length - 1;\n return scale;\n }\n scale.domain = function(x) {\n if (!arguments.length) return [x0, x1];\n x0 = +x[0];\n x1 = +x[x.length - 1];\n return rescale();\n };\n scale.range = function(x) {\n if (!arguments.length) return range;\n range = x;\n return rescale();\n };\n scale.invertExtent = function(y) {\n y = range.indexOf(y);\n y = y < 0 ? NaN : y / kx + x0;\n return [y, y + 1 / kx];\n };\n scale.copy = function() {\n return d3_scale_quantize(x0, x1, range);\n };\n return rescale();\n }\n d3.scale.threshold = function() {\n return d3_scale_threshold([0.5], [0, 1]);\n };\n function d3_scale_threshold(domain, range) {\n function scale(x) {\n if (x <= x) return range[d3.bisect(domain, x)];\n }\n scale.domain = function(_) {\n if (!arguments.length) return domain;\n domain = _;\n return scale;\n };\n scale.range = function(_) {\n if (!arguments.length) return range;\n range = _;\n return scale;\n };\n scale.invertExtent = function(y) {\n y = range.indexOf(y);\n return [domain[y - 1], domain[y]];\n };\n scale.copy = function() {\n return d3_scale_threshold(domain, range);\n };\n return scale;\n }\n d3.scale.identity = function() {\n return d3_scale_identity([0, 1]);\n };\n function d3_scale_identity(domain) {\n function identity(x) {\n return +x;\n }\n identity.invert = identity;\n identity.domain = identity.range = function(x) {\n if (!arguments.length) return domain;\n domain = x.map(identity);\n return identity;\n };\n identity.ticks = function(m) {\n return d3_scale_linearTicks(domain, m);\n };\n identity.tickFormat = function(m, format) {\n return d3_scale_linearTickFormat(domain, m, format);\n };\n identity.copy = function() {\n return d3_scale_identity(domain);\n };\n return identity;\n }\n d3.svg = {};\n function d3_zero() {\n return 0;\n }\n d3.svg.arc = function() {\n var innerRadius = d3_svg_arcInnerRadius, outerRadius = d3_svg_arcOuterRadius, cornerRadius = d3_zero, padRadius = d3_svg_arcAuto, startAngle = d3_svg_arcStartAngle, endAngle = d3_svg_arcEndAngle, padAngle = d3_svg_arcPadAngle;\n function arc() {\n var r0 = Math.max(0, +innerRadius.apply(this, arguments)), r1 = Math.max(0, +outerRadius.apply(this, arguments)), a0 = startAngle.apply(this, arguments) - half\\u03C0, a1 = endAngle.apply(this, arguments) - half\\u03C0, da = Math.abs(a1 - a0), cw = a0 > a1 ? 0 : 1;\n if (r1 < r0) rc = r1, r1 = r0, r0 = rc;\n if (da >= \\u03C4\\u03B5) return circleSegment(r1, cw) + (r0 ? circleSegment(r0, 1 - cw) : \"\") + \"Z\";\n var rc, cr, rp, ap, p0 = 0, p1 = 0, x0, y0, x1, y1, x2, y2, x3, y3, path = [];\n if (ap = (+padAngle.apply(this, arguments) || 0) / 2) {\n rp = padRadius === d3_svg_arcAuto ? Math.sqrt(r0 * r0 + r1 * r1) : +padRadius.apply(this, arguments);\n if (!cw) p1 *= -1;\n if (r1) p1 = d3_asin(rp / r1 * Math.sin(ap));\n if (r0) p0 = d3_asin(rp / r0 * Math.sin(ap));\n }\n if (r1) {\n x0 = r1 * Math.cos(a0 + p1);\n y0 = r1 * Math.sin(a0 + p1);\n x1 = r1 * Math.cos(a1 - p1);\n y1 = r1 * Math.sin(a1 - p1);\n var l1 = Math.abs(a1 - a0 - 2 * p1) <= \\u03C0 ? 0 : 1;\n if (p1 && d3_svg_arcSweep(x0, y0, x1, y1) === cw ^ l1) {\n var h1 = (a0 + a1) / 2;\n x0 = r1 * Math.cos(h1);\n y0 = r1 * Math.sin(h1);\n x1 = y1 = null;\n }\n } else {\n x0 = y0 = 0;\n }\n if (r0) {\n x2 = r0 * Math.cos(a1 - p0);\n y2 = r0 * Math.sin(a1 - p0);\n x3 = r0 * Math.cos(a0 + p0);\n y3 = r0 * Math.sin(a0 + p0);\n var l0 = Math.abs(a0 - a1 + 2 * p0) <= \\u03C0 ? 0 : 1;\n if (p0 && d3_svg_arcSweep(x2, y2, x3, y3) === 1 - cw ^ l0) {\n var h0 = (a0 + a1) / 2;\n x2 = r0 * Math.cos(h0);\n y2 = r0 * Math.sin(h0);\n x3 = y3 = null;\n }\n } else {\n x2 = y2 = 0;\n }\n if (da > \\u03B5 && (rc = Math.min(Math.abs(r1 - r0) / 2, +cornerRadius.apply(this, arguments))) > 1e-3) {\n cr = r0 < r1 ^ cw ? 0 : 1;\n var rc1 = rc, rc0 = rc;\n if (da < \\u03C0) {\n var oc = x3 == null ? [x2, y2] : x1 == null ? [x0, y0] : d3_geom_polygonIntersect([x0, y0], [x3, y3], [x1, y1], [x2, y2]), ax = x0 - oc[0], ay = y0 - oc[1], bx = x1 - oc[0], by = y1 - oc[1], kc = 1 / Math.sin(Math.acos((ax * bx + ay * by) / (Math.sqrt(ax * ax + ay * ay) * Math.sqrt(bx * bx + by * by))) / 2), lc = Math.sqrt(oc[0] * oc[0] + oc[1] * oc[1]);\n rc0 = Math.min(rc, (r0 - lc) / (kc - 1));\n rc1 = Math.min(rc, (r1 - lc) / (kc + 1));\n }\n if (x1 != null) {\n var t30 = d3_svg_arcCornerTangents(x3 == null ? [x2, y2] : [x3, y3], [x0, y0], r1, rc1, cw), t12 = d3_svg_arcCornerTangents([x1, y1], [x2, y2], r1, rc1, cw);\n if (rc === rc1) {\n path.push(\"M\", t30[0], \"A\", rc1, \",\", rc1, \" 0 0,\", cr, \" \", t30[1], \"A\", r1, \",\", r1, \" 0 \", 1 - cw ^ d3_svg_arcSweep(t30[1][0], t30[1][1], t12[1][0], t12[1][1]), \",\", cw, \" \", t12[1], \"A\", rc1, \",\", rc1, \" 0 0,\", cr, \" \", t12[0]);\n } else {\n path.push(\"M\", t30[0], \"A\", rc1, \",\", rc1, \" 0 1,\", cr, \" \", t12[0]);\n }\n } else {\n path.push(\"M\", x0, \",\", y0);\n }\n if (x3 != null) {\n var t03 = d3_svg_arcCornerTangents([x0, y0], [x3, y3], r0, -rc0, cw), t21 = d3_svg_arcCornerTangents([x2, y2], x1 == null ? [x0, y0] : [x1, y1], r0, -rc0, cw);\n if (rc === rc0) {\n path.push(\"L\", t21[0], \"A\", rc0, \",\", rc0, \" 0 0,\", cr, \" \", t21[1], \"A\", r0, \",\", r0, \" 0 \", cw ^ d3_svg_arcSweep(t21[1][0], t21[1][1], t03[1][0], t03[1][1]), \",\", 1 - cw, \" \", t03[1], \"A\", rc0, \",\", rc0, \" 0 0,\", cr, \" \", t03[0]);\n } else {\n path.push(\"L\", t21[0], \"A\", rc0, \",\", rc0, \" 0 0,\", cr, \" \", t03[0]);\n }\n } else {\n path.push(\"L\", x2, \",\", y2);\n }\n } else {\n path.push(\"M\", x0, \",\", y0);\n if (x1 != null) path.push(\"A\", r1, \",\", r1, \" 0 \", l1, \",\", cw, \" \", x1, \",\", y1);\n path.push(\"L\", x2, \",\", y2);\n if (x3 != null) path.push(\"A\", r0, \",\", r0, \" 0 \", l0, \",\", 1 - cw, \" \", x3, \",\", y3);\n }\n path.push(\"Z\");\n return path.join(\"\");\n }\n function circleSegment(r1, cw) {\n return \"M0,\" + r1 + \"A\" + r1 + \",\" + r1 + \" 0 1,\" + cw + \" 0,\" + -r1 + \"A\" + r1 + \",\" + r1 + \" 0 1,\" + cw + \" 0,\" + r1;\n }\n arc.innerRadius = function(v) {\n if (!arguments.length) return innerRadius;\n innerRadius = d3_functor(v);\n return arc;\n };\n arc.outerRadius = function(v) {\n if (!arguments.length) return outerRadius;\n outerRadius = d3_functor(v);\n return arc;\n };\n arc.cornerRadius = function(v) {\n if (!arguments.length) return cornerRadius;\n cornerRadius = d3_functor(v);\n return arc;\n };\n arc.padRadius = function(v) {\n if (!arguments.length) return padRadius;\n padRadius = v == d3_svg_arcAuto ? d3_svg_arcAuto : d3_functor(v);\n return arc;\n };\n arc.startAngle = function(v) {\n if (!arguments.length) return startAngle;\n startAngle = d3_functor(v);\n return arc;\n };\n arc.endAngle = function(v) {\n if (!arguments.length) return endAngle;\n endAngle = d3_functor(v);\n return arc;\n };\n arc.padAngle = function(v) {\n if (!arguments.length) return padAngle;\n padAngle = d3_functor(v);\n return arc;\n };\n arc.centroid = function() {\n var r = (+innerRadius.apply(this, arguments) + +outerRadius.apply(this, arguments)) / 2, a = (+startAngle.apply(this, arguments) + +endAngle.apply(this, arguments)) / 2 - half\\u03C0;\n return [Math.cos(a) * r, Math.sin(a) * r];\n };\n return arc;\n };\n var d3_svg_arcAuto = \"auto\";\n function d3_svg_arcInnerRadius(d) {\n return d.innerRadius;\n }\n function d3_svg_arcOuterRadius(d) {\n return d.outerRadius;\n }\n function d3_svg_arcStartAngle(d) {\n return d.startAngle;\n }\n function d3_svg_arcEndAngle(d) {\n return d.endAngle;\n }\n function d3_svg_arcPadAngle(d) {\n return d && d.padAngle;\n }\n function d3_svg_arcSweep(x0, y0, x1, y1) {\n return (x0 - x1) * y0 - (y0 - y1) * x0 > 0 ? 0 : 1;\n }\n function d3_svg_arcCornerTangents(p0, p1, r1, rc, cw) {\n var x01 = p0[0] - p1[0], y01 = p0[1] - p1[1], lo = (cw ? rc : -rc) / Math.sqrt(x01 * x01 + y01 * y01), ox = lo * y01, oy = -lo * x01, x1 = p0[0] + ox, y1 = p0[1] + oy, x2 = p1[0] + ox, y2 = p1[1] + oy, x3 = (x1 + x2) / 2, y3 = (y1 + y2) / 2, dx = x2 - x1, dy = y2 - y1, d2 = dx * dx + dy * dy, r = r1 - rc, D = x1 * y2 - x2 * y1, d = (dy < 0 ? -1 : 1) * Math.sqrt(Math.max(0, r * r * d2 - D * D)), cx0 = (D * dy - dx * d) / d2, cy0 = (-D * dx - dy * d) / d2, cx1 = (D * dy + dx * d) / d2, cy1 = (-D * dx + dy * d) / d2, dx0 = cx0 - x3, dy0 = cy0 - y3, dx1 = cx1 - x3, dy1 = cy1 - y3;\n if (dx0 * dx0 + dy0 * dy0 > dx1 * dx1 + dy1 * dy1) cx0 = cx1, cy0 = cy1;\n return [[cx0 - ox, cy0 - oy], [cx0 * r1 / r, cy0 * r1 / r]];\n }\n function d3_true() {\n return true;\n }\n function d3_svg_line(projection) {\n var x = d3_geom_pointX, y = d3_geom_pointY, defined = d3_true, interpolate = d3_svg_lineLinear, interpolateKey = interpolate.key, tension = 0.7;\n function line(data) {\n var segments = [], points = [], i = -1, n = data.length, d, fx = d3_functor(x), fy = d3_functor(y);\n function segment() {\n segments.push(\"M\", interpolate(projection(points), tension));\n }\n while (++i < n) {\n if (defined.call(this, d = data[i], i)) {\n points.push([+fx.call(this, d, i), +fy.call(this, d, i)]);\n } else if (points.length) {\n segment();\n points = [];\n }\n }\n if (points.length) segment();\n return segments.length ? segments.join(\"\") : null;\n }\n line.x = function(_) {\n if (!arguments.length) return x;\n x = _;\n return line;\n };\n line.y = function(_) {\n if (!arguments.length) return y;\n y = _;\n return line;\n };\n line.defined = function(_) {\n if (!arguments.length) return defined;\n defined = _;\n return line;\n };\n line.interpolate = function(_) {\n if (!arguments.length) return interpolateKey;\n if (typeof _ === \"function\") interpolateKey = interpolate = _;\n else interpolateKey = (interpolate = d3_svg_lineInterpolators.get(_) || d3_svg_lineLinear).key;\n return line;\n };\n line.tension = function(_) {\n if (!arguments.length) return tension;\n tension = _;\n return line;\n };\n return line;\n }\n d3.svg.line = function() {\n return d3_svg_line(d3_identity);\n };\n var d3_svg_lineInterpolators = d3.map({\n linear: d3_svg_lineLinear,\n \"linear-closed\": d3_svg_lineLinearClosed,\n step: d3_svg_lineStep,\n \"step-before\": d3_svg_lineStepBefore,\n \"step-after\": d3_svg_lineStepAfter,\n basis: d3_svg_lineBasis,\n \"basis-open\": d3_svg_lineBasisOpen,\n \"basis-closed\": d3_svg_lineBasisClosed,\n bundle: d3_svg_lineBundle,\n cardinal: d3_svg_lineCardinal,\n \"cardinal-open\": d3_svg_lineCardinalOpen,\n \"cardinal-closed\": d3_svg_lineCardinalClosed,\n monotone: d3_svg_lineMonotone\n });\n d3_svg_lineInterpolators.forEach(function(key, value) {\n value.key = key;\n value.closed = /-closed$/.test(key);\n });\n function d3_svg_lineLinear(points) {\n return points.length > 1 ? points.join(\"L\") : points + \"Z\";\n }\n function d3_svg_lineLinearClosed(points) {\n return points.join(\"L\") + \"Z\";\n }\n function d3_svg_lineStep(points) {\n var i = 0, n = points.length, p = points[0], path = [p[0], \",\", p[1]];\n while (++i < n) path.push(\"H\", (p[0] + (p = points[i])[0]) / 2, \"V\", p[1]);\n if (n > 1) path.push(\"H\", p[0]);\n return path.join(\"\");\n }\n function d3_svg_lineStepBefore(points) {\n var i = 0, n = points.length, p = points[0], path = [p[0], \",\", p[1]];\n while (++i < n) path.push(\"V\", (p = points[i])[1], \"H\", p[0]);\n return path.join(\"\");\n }\n function d3_svg_lineStepAfter(points) {\n var i = 0, n = points.length, p = points[0], path = [p[0], \",\", p[1]];\n while (++i < n) path.push(\"H\", (p = points[i])[0], \"V\", p[1]);\n return path.join(\"\");\n }\n function d3_svg_lineCardinalOpen(points, tension) {\n return points.length < 4 ? d3_svg_lineLinear(points) : points[1] + d3_svg_lineHermite(points.slice(1, -1), d3_svg_lineCardinalTangents(points, tension));\n }\n function d3_svg_lineCardinalClosed(points, tension) {\n return points.length < 3 ? d3_svg_lineLinearClosed(points) : points[0] + d3_svg_lineHermite((points.push(points[0]), points), d3_svg_lineCardinalTangents([points[points.length - 2]].concat(points, [points[1]]), tension));\n }\n function d3_svg_lineCardinal(points, tension) {\n return points.length < 3 ? d3_svg_lineLinear(points) : points[0] + d3_svg_lineHermite(points, d3_svg_lineCardinalTangents(points, tension));\n }\n function d3_svg_lineHermite(points, tangents) {\n if (tangents.length < 1 || points.length != tangents.length && points.length != tangents.length + 2) {\n return d3_svg_lineLinear(points);\n }\n var quad = points.length != tangents.length, path = \"\", p0 = points[0], p = points[1], t0 = tangents[0], t = t0, pi = 1;\n if (quad) {\n path += \"Q\" + (p[0] - t0[0] * 2 / 3) + \",\" + (p[1] - t0[1] * 2 / 3) + \",\" + p[0] + \",\" + p[1];\n p0 = points[1];\n pi = 2;\n }\n if (tangents.length > 1) {\n t = tangents[1];\n p = points[pi];\n pi++;\n path += \"C\" + (p0[0] + t0[0]) + \",\" + (p0[1] + t0[1]) + \",\" + (p[0] - t[0]) + \",\" + (p[1] - t[1]) + \",\" + p[0] + \",\" + p[1];\n for (var i = 2; i < tangents.length; i++, pi++) {\n p = points[pi];\n t = tangents[i];\n path += \"S\" + (p[0] - t[0]) + \",\" + (p[1] - t[1]) + \",\" + p[0] + \",\" + p[1];\n }\n }\n if (quad) {\n var lp = points[pi];\n path += \"Q\" + (p[0] + t[0] * 2 / 3) + \",\" + (p[1] + t[1] * 2 / 3) + \",\" + lp[0] + \",\" + lp[1];\n }\n return path;\n }\n function d3_svg_lineCardinalTangents(points, tension) {\n var tangents = [], a = (1 - tension) / 2, p0, p1 = points[0], p2 = points[1], i = 1, n = points.length;\n while (++i < n) {\n p0 = p1;\n p1 = p2;\n p2 = points[i];\n tangents.push([a * (p2[0] - p0[0]), a * (p2[1] - p0[1])]);\n }\n return tangents;\n }\n function d3_svg_lineBasis(points) {\n if (points.length < 3) return d3_svg_lineLinear(points);\n var i = 1, n = points.length, pi = points[0], x0 = pi[0], y0 = pi[1], px = [x0, x0, x0, (pi = points[1])[0]], py = [y0, y0, y0, pi[1]], path = [x0, \",\", y0, \"L\", d3_svg_lineDot4(d3_svg_lineBasisBezier3, px), \",\", d3_svg_lineDot4(d3_svg_lineBasisBezier3, py)];\n points.push(points[n - 1]);\n while (++i <= n) {\n pi = points[i];\n px.shift();\n px.push(pi[0]);\n py.shift();\n py.push(pi[1]);\n d3_svg_lineBasisBezier(path, px, py);\n }\n points.pop();\n path.push(\"L\", pi);\n return path.join(\"\");\n }\n function d3_svg_lineBasisOpen(points) {\n if (points.length < 4) return d3_svg_lineLinear(points);\n var path = [], i = -1, n = points.length, pi, px = [0], py = [0];\n while (++i < 3) {\n pi = points[i];\n px.push(pi[0]);\n py.push(pi[1]);\n }\n path.push(d3_svg_lineDot4(d3_svg_lineBasisBezier3, px) + \",\" + d3_svg_lineDot4(d3_svg_lineBasisBezier3, py));\n --i;\n while (++i < n) {\n pi = points[i];\n px.shift();\n px.push(pi[0]);\n py.shift();\n py.push(pi[1]);\n d3_svg_lineBasisBezier(path, px, py);\n }\n return path.join(\"\");\n }\n function d3_svg_lineBasisClosed(points) {\n var path, i = -1, n = points.length, m = n + 4, pi, px = [], py = [];\n while (++i < 4) {\n pi = points[i % n];\n px.push(pi[0]);\n py.push(pi[1]);\n }\n path = [d3_svg_lineDot4(d3_svg_lineBasisBezier3, px), \",\", d3_svg_lineDot4(d3_svg_lineBasisBezier3, py)];\n --i;\n while (++i < m) {\n pi = points[i % n];\n px.shift();\n px.push(pi[0]);\n py.shift();\n py.push(pi[1]);\n d3_svg_lineBasisBezier(path, px, py);\n }\n return path.join(\"\");\n }\n function d3_svg_lineBundle(points, tension) {\n var n = points.length - 1;\n if (n) {\n var x0 = points[0][0], y0 = points[0][1], dx = points[n][0] - x0, dy = points[n][1] - y0, i = -1, p, t;\n while (++i <= n) {\n p = points[i];\n t = i / n;\n p[0] = tension * p[0] + (1 - tension) * (x0 + t * dx);\n p[1] = tension * p[1] + (1 - tension) * (y0 + t * dy);\n }\n }\n return d3_svg_lineBasis(points);\n }\n function d3_svg_lineDot4(a, b) {\n return a[0] * b[0] + a[1] * b[1] + a[2] * b[2] + a[3] * b[3];\n }\n var d3_svg_lineBasisBezier1 = [0, 2 / 3, 1 / 3, 0], d3_svg_lineBasisBezier2 = [0, 1 / 3, 2 / 3, 0], d3_svg_lineBasisBezier3 = [0, 1 / 6, 2 / 3, 1 / 6];\n function d3_svg_lineBasisBezier(path, x, y) {\n path.push(\"C\", d3_svg_lineDot4(d3_svg_lineBasisBezier1, x), \",\", d3_svg_lineDot4(d3_svg_lineBasisBezier1, y), \",\", d3_svg_lineDot4(d3_svg_lineBasisBezier2, x), \",\", d3_svg_lineDot4(d3_svg_lineBasisBezier2, y), \",\", d3_svg_lineDot4(d3_svg_lineBasisBezier3, x), \",\", d3_svg_lineDot4(d3_svg_lineBasisBezier3, y));\n }\n function d3_svg_lineSlope(p0, p1) {\n return (p1[1] - p0[1]) / (p1[0] - p0[0]);\n }\n function d3_svg_lineFiniteDifferences(points) {\n var i = 0, j = points.length - 1, m = [], p0 = points[0], p1 = points[1], d = m[0] = d3_svg_lineSlope(p0, p1);\n while (++i < j) {\n m[i] = (d + (d = d3_svg_lineSlope(p0 = p1, p1 = points[i + 1]))) / 2;\n }\n m[i] = d;\n return m;\n }\n function d3_svg_lineMonotoneTangents(points) {\n var tangents = [], d, a, b, s, m = d3_svg_lineFiniteDifferences(points), i = -1, j = points.length - 1;\n while (++i < j) {\n d = d3_svg_lineSlope(points[i], points[i + 1]);\n if (abs(d) < \\u03B5) {\n m[i] = m[i + 1] = 0;\n } else {\n a = m[i] / d;\n b = m[i + 1] / d;\n s = a * a + b * b;\n if (s > 9) {\n s = d * 3 / Math.sqrt(s);\n m[i] = s * a;\n m[i + 1] = s * b;\n }\n }\n }\n i = -1;\n while (++i <= j) {\n s = (points[Math.min(j, i + 1)][0] - points[Math.max(0, i - 1)][0]) / (6 * (1 + m[i] * m[i]));\n tangents.push([s || 0, m[i] * s || 0]);\n }\n return tangents;\n }\n function d3_svg_lineMonotone(points) {\n return points.length < 3 ? d3_svg_lineLinear(points) : points[0] + d3_svg_lineHermite(points, d3_svg_lineMonotoneTangents(points));\n }\n d3.svg.line.radial = function() {\n var line = d3_svg_line(d3_svg_lineRadial);\n line.radius = line.x, delete line.x;\n line.angle = line.y, delete line.y;\n return line;\n };\n function d3_svg_lineRadial(points) {\n var point, i = -1, n = points.length, r, a;\n while (++i < n) {\n point = points[i];\n r = point[0];\n a = point[1] - half\\u03C0;\n point[0] = r * Math.cos(a);\n point[1] = r * Math.sin(a);\n }\n return points;\n }\n function d3_svg_area(projection) {\n var x0 = d3_geom_pointX, x1 = d3_geom_pointX, y0 = 0, y1 = d3_geom_pointY, defined = d3_true, interpolate = d3_svg_lineLinear, interpolateKey = interpolate.key, interpolateReverse = interpolate, L = \"L\", tension = 0.7;\n function area(data) {\n var segments = [], points0 = [], points1 = [], i = -1, n = data.length, d, fx0 = d3_functor(x0), fy0 = d3_functor(y0), fx1 = x0 === x1 ? function() {\n return x;\n } : d3_functor(x1), fy1 = y0 === y1 ? function() {\n return y;\n } : d3_functor(y1), x, y;\n function segment() {\n segments.push(\"M\", interpolate(projection(points1), tension), L, interpolateReverse(projection(points0.reverse()), tension), \"Z\");\n }\n while (++i < n) {\n if (defined.call(this, d = data[i], i)) {\n points0.push([x = +fx0.call(this, d, i), y = +fy0.call(this, d, i)]);\n points1.push([+fx1.call(this, d, i), +fy1.call(this, d, i)]);\n } else if (points0.length) {\n segment();\n points0 = [];\n points1 = [];\n }\n }\n if (points0.length) segment();\n return segments.length ? segments.join(\"\") : null;\n }\n area.x = function(_) {\n if (!arguments.length) return x1;\n x0 = x1 = _;\n return area;\n };\n area.x0 = function(_) {\n if (!arguments.length) return x0;\n x0 = _;\n return area;\n };\n area.x1 = function(_) {\n if (!arguments.length) return x1;\n x1 = _;\n return area;\n };\n area.y = function(_) {\n if (!arguments.length) return y1;\n y0 = y1 = _;\n return area;\n };\n area.y0 = function(_) {\n if (!arguments.length) return y0;\n y0 = _;\n return area;\n };\n area.y1 = function(_) {\n if (!arguments.length) return y1;\n y1 = _;\n return area;\n };\n area.defined = function(_) {\n if (!arguments.length) return defined;\n defined = _;\n return area;\n };\n area.interpolate = function(_) {\n if (!arguments.length) return interpolateKey;\n if (typeof _ === \"function\") interpolateKey = interpolate = _;\n else interpolateKey = (interpolate = d3_svg_lineInterpolators.get(_) || d3_svg_lineLinear).key;\n interpolateReverse = interpolate.reverse || interpolate;\n L = interpolate.closed ? \"M\" : \"L\";\n return area;\n };\n area.tension = function(_) {\n if (!arguments.length) return tension;\n tension = _;\n return area;\n };\n return area;\n }\n d3_svg_lineStepBefore.reverse = d3_svg_lineStepAfter;\n d3_svg_lineStepAfter.reverse = d3_svg_lineStepBefore;\n d3.svg.area = function() {\n return d3_svg_area(d3_identity);\n };\n d3.svg.area.radial = function() {\n var area = d3_svg_area(d3_svg_lineRadial);\n area.radius = area.x, delete area.x;\n area.innerRadius = area.x0, delete area.x0;\n area.outerRadius = area.x1, delete area.x1;\n area.angle = area.y, delete area.y;\n area.startAngle = area.y0, delete area.y0;\n area.endAngle = area.y1, delete area.y1;\n return area;\n };\n function d3_source(d) {\n return d.source;\n }\n function d3_target(d) {\n return d.target;\n }\n d3.svg.chord = function() {\n var source = d3_source, target = d3_target, radius = d3_svg_chordRadius, startAngle = d3_svg_arcStartAngle, endAngle = d3_svg_arcEndAngle;\n function chord(d, i) {\n var s = subgroup(this, source, d, i), t = subgroup(this, target, d, i);\n return \"M\" + s.p0 + arc(s.r, s.p1, s.a1 - s.a0) + (equals(s, t) ? curve(s.r, s.p1, s.r, s.p0) : curve(s.r, s.p1, t.r, t.p0) + arc(t.r, t.p1, t.a1 - t.a0) + curve(t.r, t.p1, s.r, s.p0)) + \"Z\";\n }\n function subgroup(self2, f, d, i) {\n var subgroup2 = f.call(self2, d, i), r = radius.call(self2, subgroup2, i), a0 = startAngle.call(self2, subgroup2, i) - half\\u03C0, a1 = endAngle.call(self2, subgroup2, i) - half\\u03C0;\n return {\n r,\n a0,\n a1,\n p0: [r * Math.cos(a0), r * Math.sin(a0)],\n p1: [r * Math.cos(a1), r * Math.sin(a1)]\n };\n }\n function equals(a, b) {\n return a.a0 == b.a0 && a.a1 == b.a1;\n }\n function arc(r, p, a) {\n return \"A\" + r + \",\" + r + \" 0 \" + +(a > \\u03C0) + \",1 \" + p;\n }\n function curve(r0, p0, r1, p1) {\n return \"Q 0,0 \" + p1;\n }\n chord.radius = function(v) {\n if (!arguments.length) return radius;\n radius = d3_functor(v);\n return chord;\n };\n chord.source = function(v) {\n if (!arguments.length) return source;\n source = d3_functor(v);\n return chord;\n };\n chord.target = function(v) {\n if (!arguments.length) return target;\n target = d3_functor(v);\n return chord;\n };\n chord.startAngle = function(v) {\n if (!arguments.length) return startAngle;\n startAngle = d3_functor(v);\n return chord;\n };\n chord.endAngle = function(v) {\n if (!arguments.length) return endAngle;\n endAngle = d3_functor(v);\n return chord;\n };\n return chord;\n };\n function d3_svg_chordRadius(d) {\n return d.radius;\n }\n d3.svg.diagonal = function() {\n var source = d3_source, target = d3_target, projection = d3_svg_diagonalProjection;\n function diagonal(d, i) {\n var p0 = source.call(this, d, i), p3 = target.call(this, d, i), m = (p0.y + p3.y) / 2, p = [p0, {\n x: p0.x,\n y: m\n }, {\n x: p3.x,\n y: m\n }, p3];\n p = p.map(projection);\n return \"M\" + p[0] + \"C\" + p[1] + \" \" + p[2] + \" \" + p[3];\n }\n diagonal.source = function(x) {\n if (!arguments.length) return source;\n source = d3_functor(x);\n return diagonal;\n };\n diagonal.target = function(x) {\n if (!arguments.length) return target;\n target = d3_functor(x);\n return diagonal;\n };\n diagonal.projection = function(x) {\n if (!arguments.length) return projection;\n projection = x;\n return diagonal;\n };\n return diagonal;\n };\n function d3_svg_diagonalProjection(d) {\n return [d.x, d.y];\n }\n d3.svg.diagonal.radial = function() {\n var diagonal = d3.svg.diagonal(), projection = d3_svg_diagonalProjection, projection_ = diagonal.projection;\n diagonal.projection = function(x) {\n return arguments.length ? projection_(d3_svg_diagonalRadialProjection(projection = x)) : projection;\n };\n return diagonal;\n };\n function d3_svg_diagonalRadialProjection(projection) {\n return function() {\n var d = projection.apply(this, arguments), r = d[0], a = d[1] - half\\u03C0;\n return [r * Math.cos(a), r * Math.sin(a)];\n };\n }\n d3.svg.symbol = function() {\n var type = d3_svg_symbolType, size = d3_svg_symbolSize;\n function symbol(d, i) {\n return (d3_svg_symbols.get(type.call(this, d, i)) || d3_svg_symbolCircle)(size.call(this, d, i));\n }\n symbol.type = function(x) {\n if (!arguments.length) return type;\n type = d3_functor(x);\n return symbol;\n };\n symbol.size = function(x) {\n if (!arguments.length) return size;\n size = d3_functor(x);\n return symbol;\n };\n return symbol;\n };\n function d3_svg_symbolSize() {\n return 64;\n }\n function d3_svg_symbolType() {\n return \"circle\";\n }\n function d3_svg_symbolCircle(size) {\n var r = Math.sqrt(size / \\u03C0);\n return \"M0,\" + r + \"A\" + r + \",\" + r + \" 0 1,1 0,\" + -r + \"A\" + r + \",\" + r + \" 0 1,1 0,\" + r + \"Z\";\n }\n var d3_svg_symbols = d3.map({\n circle: d3_svg_symbolCircle,\n cross: function(size) {\n var r = Math.sqrt(size / 5) / 2;\n return \"M\" + -3 * r + \",\" + -r + \"H\" + -r + \"V\" + -3 * r + \"H\" + r + \"V\" + -r + \"H\" + 3 * r + \"V\" + r + \"H\" + r + \"V\" + 3 * r + \"H\" + -r + \"V\" + r + \"H\" + -3 * r + \"Z\";\n },\n diamond: function(size) {\n var ry = Math.sqrt(size / (2 * d3_svg_symbolTan30)), rx = ry * d3_svg_symbolTan30;\n return \"M0,\" + -ry + \"L\" + rx + \",0 0,\" + ry + \" \" + -rx + \",0Z\";\n },\n square: function(size) {\n var r = Math.sqrt(size) / 2;\n return \"M\" + -r + \",\" + -r + \"L\" + r + \",\" + -r + \" \" + r + \",\" + r + \" \" + -r + \",\" + r + \"Z\";\n },\n \"triangle-down\": function(size) {\n var rx = Math.sqrt(size / d3_svg_symbolSqrt3), ry = rx * d3_svg_symbolSqrt3 / 2;\n return \"M0,\" + ry + \"L\" + rx + \",\" + -ry + \" \" + -rx + \",\" + -ry + \"Z\";\n },\n \"triangle-up\": function(size) {\n var rx = Math.sqrt(size / d3_svg_symbolSqrt3), ry = rx * d3_svg_symbolSqrt3 / 2;\n return \"M0,\" + -ry + \"L\" + rx + \",\" + ry + \" \" + -rx + \",\" + ry + \"Z\";\n }\n });\n d3.svg.symbolTypes = d3_svg_symbols.keys();\n var d3_svg_symbolSqrt3 = Math.sqrt(3), d3_svg_symbolTan30 = Math.tan(30 * d3_radians);\n d3_selectionPrototype.transition = function(name) {\n var id = d3_transitionInheritId || ++d3_transitionId, ns = d3_transitionNamespace(name), subgroups = [], subgroup, node, transition = d3_transitionInherit || {\n time: Date.now(),\n ease: d3_ease_cubicInOut,\n delay: 0,\n duration: 250\n };\n for (var j = -1, m = this.length; ++j < m; ) {\n subgroups.push(subgroup = []);\n for (var group = this[j], i = -1, n = group.length; ++i < n; ) {\n if (node = group[i]) d3_transitionNode(node, i, ns, id, transition);\n subgroup.push(node);\n }\n }\n return d3_transition(subgroups, ns, id);\n };\n d3_selectionPrototype.interrupt = function(name) {\n return this.each(name == null ? d3_selection_interrupt : d3_selection_interruptNS(d3_transitionNamespace(name)));\n };\n var d3_selection_interrupt = d3_selection_interruptNS(d3_transitionNamespace());\n function d3_selection_interruptNS(ns) {\n return function() {\n var lock, activeId, active;\n if ((lock = this[ns]) && (active = lock[activeId = lock.active])) {\n active.timer.c = null;\n active.timer.t = NaN;\n if (--lock.count) delete lock[activeId];\n else delete this[ns];\n lock.active += 0.5;\n active.event && active.event.interrupt.call(this, this.__data__, active.index);\n }\n };\n }\n function d3_transition(groups, ns, id) {\n d3_subclass(groups, d3_transitionPrototype);\n groups.namespace = ns;\n groups.id = id;\n return groups;\n }\n var d3_transitionPrototype = [], d3_transitionId = 0, d3_transitionInheritId, d3_transitionInherit;\n d3_transitionPrototype.call = d3_selectionPrototype.call;\n d3_transitionPrototype.empty = d3_selectionPrototype.empty;\n d3_transitionPrototype.node = d3_selectionPrototype.node;\n d3_transitionPrototype.size = d3_selectionPrototype.size;\n d3.transition = function(selection, name) {\n return selection && selection.transition ? d3_transitionInheritId ? selection.transition(name) : selection : d3.selection().transition(selection);\n };\n d3.transition.prototype = d3_transitionPrototype;\n d3_transitionPrototype.select = function(selector) {\n var id = this.id, ns = this.namespace, subgroups = [], subgroup, subnode, node;\n selector = d3_selection_selector(selector);\n for (var j = -1, m = this.length; ++j < m; ) {\n subgroups.push(subgroup = []);\n for (var group = this[j], i = -1, n = group.length; ++i < n; ) {\n if ((node = group[i]) && (subnode = selector.call(node, node.__data__, i, j))) {\n if (\"__data__\" in node) subnode.__data__ = node.__data__;\n d3_transitionNode(subnode, i, ns, id, node[ns][id]);\n subgroup.push(subnode);\n } else {\n subgroup.push(null);\n }\n }\n }\n return d3_transition(subgroups, ns, id);\n };\n d3_transitionPrototype.selectAll = function(selector) {\n var id = this.id, ns = this.namespace, subgroups = [], subgroup, subnodes, node, subnode, transition;\n selector = d3_selection_selectorAll(selector);\n for (var j = -1, m = this.length; ++j < m; ) {\n for (var group = this[j], i = -1, n = group.length; ++i < n; ) {\n if (node = group[i]) {\n transition = node[ns][id];\n subnodes = selector.call(node, node.__data__, i, j);\n subgroups.push(subgroup = []);\n for (var k = -1, o = subnodes.length; ++k < o; ) {\n if (subnode = subnodes[k]) d3_transitionNode(subnode, k, ns, id, transition);\n subgroup.push(subnode);\n }\n }\n }\n }\n return d3_transition(subgroups, ns, id);\n };\n d3_transitionPrototype.filter = function(filter) {\n var subgroups = [], subgroup, group, node;\n if (typeof filter !== \"function\") filter = d3_selection_filter(filter);\n for (var j = 0, m = this.length; j < m; j++) {\n subgroups.push(subgroup = []);\n for (var group = this[j], i = 0, n = group.length; i < n; i++) {\n if ((node = group[i]) && filter.call(node, node.__data__, i, j)) {\n subgroup.push(node);\n }\n }\n }\n return d3_transition(subgroups, this.namespace, this.id);\n };\n d3_transitionPrototype.tween = function(name, tween) {\n var id = this.id, ns = this.namespace;\n if (arguments.length < 2) return this.node()[ns][id].tween.get(name);\n return d3_selection_each(this, tween == null ? function(node) {\n node[ns][id].tween.remove(name);\n } : function(node) {\n node[ns][id].tween.set(name, tween);\n });\n };\n function d3_transition_tween(groups, name, value, tween) {\n var id = groups.id, ns = groups.namespace;\n return d3_selection_each(groups, typeof value === \"function\" ? function(node, i, j) {\n node[ns][id].tween.set(name, tween(value.call(node, node.__data__, i, j)));\n } : (value = tween(value), function(node) {\n node[ns][id].tween.set(name, value);\n }));\n }\n d3_transitionPrototype.attr = function(nameNS, value) {\n if (arguments.length < 2) {\n for (value in nameNS) this.attr(value, nameNS[value]);\n return this;\n }\n var interpolate = nameNS == \"transform\" ? d3_interpolateTransform : d3_interpolate, name = d3.ns.qualify(nameNS);\n function attrNull() {\n this.removeAttribute(name);\n }\n function attrNullNS() {\n this.removeAttributeNS(name.space, name.local);\n }\n function attrTween(b) {\n return b == null ? attrNull : (b += \"\", function() {\n var a = this.getAttribute(name), i;\n return a !== b && (i = interpolate(a, b), function(t) {\n this.setAttribute(name, i(t));\n });\n });\n }\n function attrTweenNS(b) {\n return b == null ? attrNullNS : (b += \"\", function() {\n var a = this.getAttributeNS(name.space, name.local), i;\n return a !== b && (i = interpolate(a, b), function(t) {\n this.setAttributeNS(name.space, name.local, i(t));\n });\n });\n }\n return d3_transition_tween(this, \"attr.\" + nameNS, value, name.local ? attrTweenNS : attrTween);\n };\n d3_transitionPrototype.attrTween = function(nameNS, tween) {\n var name = d3.ns.qualify(nameNS);\n function attrTween(d, i) {\n var f = tween.call(this, d, i, this.getAttribute(name));\n return f && function(t) {\n this.setAttribute(name, f(t));\n };\n }\n function attrTweenNS(d, i) {\n var f = tween.call(this, d, i, this.getAttributeNS(name.space, name.local));\n return f && function(t) {\n this.setAttributeNS(name.space, name.local, f(t));\n };\n }\n return this.tween(\"attr.\" + nameNS, name.local ? attrTweenNS : attrTween);\n };\n d3_transitionPrototype.style = function(name, value, priority) {\n var n = arguments.length;\n if (n < 3) {\n if (typeof name !== \"string\") {\n if (n < 2) value = \"\";\n for (priority in name) this.style(priority, name[priority], value);\n return this;\n }\n priority = \"\";\n }\n function styleNull() {\n this.style.removeProperty(name);\n }\n function styleString(b) {\n return b == null ? styleNull : (b += \"\", function() {\n var a = d3_window(this).getComputedStyle(this, null).getPropertyValue(name), i;\n return a !== b && (i = d3_interpolate(a, b), function(t) {\n this.style.setProperty(name, i(t), priority);\n });\n });\n }\n return d3_transition_tween(this, \"style.\" + name, value, styleString);\n };\n d3_transitionPrototype.styleTween = function(name, tween, priority) {\n if (arguments.length < 3) priority = \"\";\n function styleTween(d, i) {\n var f = tween.call(this, d, i, d3_window(this).getComputedStyle(this, null).getPropertyValue(name));\n return f && function(t) {\n this.style.setProperty(name, f(t), priority);\n };\n }\n return this.tween(\"style.\" + name, styleTween);\n };\n d3_transitionPrototype.text = function(value) {\n return d3_transition_tween(this, \"text\", value, d3_transition_text);\n };\n function d3_transition_text(b) {\n if (b == null) b = \"\";\n return function() {\n this.textContent = b;\n };\n }\n d3_transitionPrototype.remove = function() {\n var ns = this.namespace;\n return this.each(\"end.transition\", function() {\n var p;\n if (this[ns].count < 2 && (p = this.parentNode)) p.removeChild(this);\n });\n };\n d3_transitionPrototype.ease = function(value) {\n var id = this.id, ns = this.namespace;\n if (arguments.length < 1) return this.node()[ns][id].ease;\n if (typeof value !== \"function\") value = d3.ease.apply(d3, arguments);\n return d3_selection_each(this, function(node) {\n node[ns][id].ease = value;\n });\n };\n d3_transitionPrototype.delay = function(value) {\n var id = this.id, ns = this.namespace;\n if (arguments.length < 1) return this.node()[ns][id].delay;\n return d3_selection_each(this, typeof value === \"function\" ? function(node, i, j) {\n node[ns][id].delay = +value.call(node, node.__data__, i, j);\n } : (value = +value, function(node) {\n node[ns][id].delay = value;\n }));\n };\n d3_transitionPrototype.duration = function(value) {\n var id = this.id, ns = this.namespace;\n if (arguments.length < 1) return this.node()[ns][id].duration;\n return d3_selection_each(this, typeof value === \"function\" ? function(node, i, j) {\n node[ns][id].duration = Math.max(1, value.call(node, node.__data__, i, j));\n } : (value = Math.max(1, value), function(node) {\n node[ns][id].duration = value;\n }));\n };\n d3_transitionPrototype.each = function(type, listener) {\n var id = this.id, ns = this.namespace;\n if (arguments.length < 2) {\n var inherit = d3_transitionInherit, inheritId = d3_transitionInheritId;\n try {\n d3_transitionInheritId = id;\n d3_selection_each(this, function(node, i, j) {\n d3_transitionInherit = node[ns][id];\n type.call(node, node.__data__, i, j);\n });\n } finally {\n d3_transitionInherit = inherit;\n d3_transitionInheritId = inheritId;\n }\n } else {\n d3_selection_each(this, function(node) {\n var transition = node[ns][id];\n (transition.event || (transition.event = d3.dispatch(\"start\", \"end\", \"interrupt\"))).on(type, listener);\n });\n }\n return this;\n };\n d3_transitionPrototype.transition = function() {\n var id0 = this.id, id1 = ++d3_transitionId, ns = this.namespace, subgroups = [], subgroup, group, node, transition;\n for (var j = 0, m = this.length; j < m; j++) {\n subgroups.push(subgroup = []);\n for (var group = this[j], i = 0, n = group.length; i < n; i++) {\n if (node = group[i]) {\n transition = node[ns][id0];\n d3_transitionNode(node, i, ns, id1, {\n time: transition.time,\n ease: transition.ease,\n delay: transition.delay + transition.duration,\n duration: transition.duration\n });\n }\n subgroup.push(node);\n }\n }\n return d3_transition(subgroups, ns, id1);\n };\n function d3_transitionNamespace(name) {\n return name == null ? \"__transition__\" : \"__transition_\" + name + \"__\";\n }\n function d3_transitionNode(node, i, ns, id, inherit) {\n var lock = node[ns] || (node[ns] = {\n active: 0,\n count: 0\n }), transition = lock[id], time, timer, duration, ease, tweens;\n function schedule(elapsed) {\n var delay = transition.delay;\n timer.t = delay + time;\n if (delay <= elapsed) return start(elapsed - delay);\n timer.c = start;\n }\n function start(elapsed) {\n var activeId = lock.active, active = lock[activeId];\n if (active) {\n active.timer.c = null;\n active.timer.t = NaN;\n --lock.count;\n delete lock[activeId];\n active.event && active.event.interrupt.call(node, node.__data__, active.index);\n }\n for (var cancelId in lock) {\n if (+cancelId < id) {\n var cancel = lock[cancelId];\n cancel.timer.c = null;\n cancel.timer.t = NaN;\n --lock.count;\n delete lock[cancelId];\n }\n }\n timer.c = tick;\n d3_timer(function() {\n if (timer.c && tick(elapsed || 1)) {\n timer.c = null;\n timer.t = NaN;\n }\n return 1;\n }, 0, time);\n lock.active = id;\n transition.event && transition.event.start.call(node, node.__data__, i);\n tweens = [];\n transition.tween.forEach(function(key, value) {\n if (value = value.call(node, node.__data__, i)) {\n tweens.push(value);\n }\n });\n ease = transition.ease;\n duration = transition.duration;\n }\n function tick(elapsed) {\n var t = elapsed / duration, e = ease(t), n = tweens.length;\n while (n > 0) {\n tweens[--n].call(node, e);\n }\n if (t >= 1) {\n transition.event && transition.event.end.call(node, node.__data__, i);\n if (--lock.count) delete lock[id];\n else delete node[ns];\n return 1;\n }\n }\n if (!transition) {\n time = inherit.time;\n timer = d3_timer(schedule, 0, time);\n transition = lock[id] = {\n tween: new d3_Map(),\n time,\n timer,\n delay: inherit.delay,\n duration: inherit.duration,\n ease: inherit.ease,\n index: i\n };\n inherit = null;\n ++lock.count;\n }\n }\n d3.svg.axis = function() {\n var scale = d3.scale.linear(), orient = d3_svg_axisDefaultOrient, innerTickSize = 6, outerTickSize = 6, tickPadding = 3, tickArguments_ = [10], tickValues = null, tickFormat_;\n function axis(g) {\n g.each(function() {\n var g2 = d3.select(this);\n var scale0 = this.__chart__ || scale, scale1 = this.__chart__ = scale.copy();\n var ticks = tickValues == null ? scale1.ticks ? scale1.ticks.apply(scale1, tickArguments_) : scale1.domain() : tickValues, tickFormat = tickFormat_ == null ? scale1.tickFormat ? scale1.tickFormat.apply(scale1, tickArguments_) : d3_identity : tickFormat_, tick = g2.selectAll(\".tick\").data(ticks, scale1), tickEnter = tick.enter().insert(\"g\", \".domain\").attr(\"class\", \"tick\").style(\"opacity\", \\u03B5), tickExit = d3.transition(tick.exit()).style(\"opacity\", \\u03B5).remove(), tickUpdate = d3.transition(tick.order()).style(\"opacity\", 1), tickSpacing = Math.max(innerTickSize, 0) + tickPadding, tickTransform;\n var range = d3_scaleRange(scale1), path = g2.selectAll(\".domain\").data([0]), pathUpdate = (path.enter().append(\"path\").attr(\"class\", \"domain\"), d3.transition(path));\n tickEnter.append(\"line\");\n tickEnter.append(\"text\");\n var lineEnter = tickEnter.select(\"line\"), lineUpdate = tickUpdate.select(\"line\"), text = tick.select(\"text\").text(tickFormat), textEnter = tickEnter.select(\"text\"), textUpdate = tickUpdate.select(\"text\"), sign = orient === \"top\" || orient === \"left\" ? -1 : 1, x1, x2, y1, y2;\n if (orient === \"bottom\" || orient === \"top\") {\n tickTransform = d3_svg_axisX, x1 = \"x\", y1 = \"y\", x2 = \"x2\", y2 = \"y2\";\n text.attr(\"dy\", sign < 0 ? \"0em\" : \".71em\").style(\"text-anchor\", \"middle\");\n pathUpdate.attr(\"d\", \"M\" + range[0] + \",\" + sign * outerTickSize + \"V0H\" + range[1] + \"V\" + sign * outerTickSize);\n } else {\n tickTransform = d3_svg_axisY, x1 = \"y\", y1 = \"x\", x2 = \"y2\", y2 = \"x2\";\n text.attr(\"dy\", \".32em\").style(\"text-anchor\", sign < 0 ? \"end\" : \"start\");\n pathUpdate.attr(\"d\", \"M\" + sign * outerTickSize + \",\" + range[0] + \"H0V\" + range[1] + \"H\" + sign * outerTickSize);\n }\n lineEnter.attr(y2, sign * innerTickSize);\n textEnter.attr(y1, sign * tickSpacing);\n lineUpdate.attr(x2, 0).attr(y2, sign * innerTickSize);\n textUpdate.attr(x1, 0).attr(y1, sign * tickSpacing);\n if (scale1.rangeBand) {\n var x = scale1, dx = x.rangeBand() / 2;\n scale0 = scale1 = function(d) {\n return x(d) + dx;\n };\n } else if (scale0.rangeBand) {\n scale0 = scale1;\n } else {\n tickExit.call(tickTransform, scale1, scale0);\n }\n tickEnter.call(tickTransform, scale0, scale1);\n tickUpdate.call(tickTransform, scale1, scale1);\n });\n }\n axis.scale = function(x) {\n if (!arguments.length) return scale;\n scale = x;\n return axis;\n };\n axis.orient = function(x) {\n if (!arguments.length) return orient;\n orient = x in d3_svg_axisOrients ? x + \"\" : d3_svg_axisDefaultOrient;\n return axis;\n };\n axis.ticks = function() {\n if (!arguments.length) return tickArguments_;\n tickArguments_ = d3_array(arguments);\n return axis;\n };\n axis.tickValues = function(x) {\n if (!arguments.length) return tickValues;\n tickValues = x;\n return axis;\n };\n axis.tickFormat = function(x) {\n if (!arguments.length) return tickFormat_;\n tickFormat_ = x;\n return axis;\n };\n axis.tickSize = function(x) {\n var n = arguments.length;\n if (!n) return innerTickSize;\n innerTickSize = +x;\n outerTickSize = +arguments[n - 1];\n return axis;\n };\n axis.innerTickSize = function(x) {\n if (!arguments.length) return innerTickSize;\n innerTickSize = +x;\n return axis;\n };\n axis.outerTickSize = function(x) {\n if (!arguments.length) return outerTickSize;\n outerTickSize = +x;\n return axis;\n };\n axis.tickPadding = function(x) {\n if (!arguments.length) return tickPadding;\n tickPadding = +x;\n return axis;\n };\n axis.tickSubdivide = function() {\n return arguments.length && axis;\n };\n return axis;\n };\n var d3_svg_axisDefaultOrient = \"bottom\", d3_svg_axisOrients = {\n top: 1,\n right: 1,\n bottom: 1,\n left: 1\n };\n function d3_svg_axisX(selection, x0, x1) {\n selection.attr(\"transform\", function(d) {\n var v0 = x0(d);\n return \"translate(\" + (isFinite(v0) ? v0 : x1(d)) + \",0)\";\n });\n }\n function d3_svg_axisY(selection, y0, y1) {\n selection.attr(\"transform\", function(d) {\n var v0 = y0(d);\n return \"translate(0,\" + (isFinite(v0) ? v0 : y1(d)) + \")\";\n });\n }\n d3.svg.brush = function() {\n var event = d3_eventDispatch(brush, \"brushstart\", \"brush\", \"brushend\"), x = null, y = null, xExtent = [0, 0], yExtent = [0, 0], xExtentDomain, yExtentDomain, xClamp = true, yClamp = true, resizes = d3_svg_brushResizes[0];\n function brush(g) {\n g.each(function() {\n var g2 = d3.select(this).style(\"pointer-events\", \"all\").style(\"-webkit-tap-highlight-color\", \"rgba(0,0,0,0)\").on(\"mousedown.brush\", brushstart).on(\"touchstart.brush\", brushstart);\n var background = g2.selectAll(\".background\").data([0]);\n background.enter().append(\"rect\").attr(\"class\", \"background\").style(\"visibility\", \"hidden\").style(\"cursor\", \"crosshair\");\n g2.selectAll(\".extent\").data([0]).enter().append(\"rect\").attr(\"class\", \"extent\").style(\"cursor\", \"move\");\n var resize = g2.selectAll(\".resize\").data(resizes, d3_identity);\n resize.exit().remove();\n resize.enter().append(\"g\").attr(\"class\", function(d) {\n return \"resize \" + d;\n }).style(\"cursor\", function(d) {\n return d3_svg_brushCursor[d];\n }).append(\"rect\").attr(\"x\", function(d) {\n return /[ew]$/.test(d) ? -3 : null;\n }).attr(\"y\", function(d) {\n return /^[ns]/.test(d) ? -3 : null;\n }).attr(\"width\", 6).attr(\"height\", 6).style(\"visibility\", \"hidden\");\n resize.style(\"display\", brush.empty() ? \"none\" : null);\n var gUpdate = d3.transition(g2), backgroundUpdate = d3.transition(background), range;\n if (x) {\n range = d3_scaleRange(x);\n backgroundUpdate.attr(\"x\", range[0]).attr(\"width\", range[1] - range[0]);\n redrawX(gUpdate);\n }\n if (y) {\n range = d3_scaleRange(y);\n backgroundUpdate.attr(\"y\", range[0]).attr(\"height\", range[1] - range[0]);\n redrawY(gUpdate);\n }\n redraw(gUpdate);\n });\n }\n brush.event = function(g) {\n g.each(function() {\n var event_ = event.of(this, arguments), extent1 = {\n x: xExtent,\n y: yExtent,\n i: xExtentDomain,\n j: yExtentDomain\n }, extent0 = this.__chart__ || extent1;\n this.__chart__ = extent1;\n if (d3_transitionInheritId) {\n d3.select(this).transition().each(\"start.brush\", function() {\n xExtentDomain = extent0.i;\n yExtentDomain = extent0.j;\n xExtent = extent0.x;\n yExtent = extent0.y;\n event_({\n type: \"brushstart\"\n });\n }).tween(\"brush:brush\", function() {\n var xi = d3_interpolateArray(xExtent, extent1.x), yi = d3_interpolateArray(yExtent, extent1.y);\n xExtentDomain = yExtentDomain = null;\n return function(t) {\n xExtent = extent1.x = xi(t);\n yExtent = extent1.y = yi(t);\n event_({\n type: \"brush\",\n mode: \"resize\"\n });\n };\n }).each(\"end.brush\", function() {\n xExtentDomain = extent1.i;\n yExtentDomain = extent1.j;\n event_({\n type: \"brush\",\n mode: \"resize\"\n });\n event_({\n type: \"brushend\"\n });\n });\n } else {\n event_({\n type: \"brushstart\"\n });\n event_({\n type: \"brush\",\n mode: \"resize\"\n });\n event_({\n type: \"brushend\"\n });\n }\n });\n };\n function redraw(g) {\n g.selectAll(\".resize\").attr(\"transform\", function(d) {\n return \"translate(\" + xExtent[+/e$/.test(d)] + \",\" + yExtent[+/^s/.test(d)] + \")\";\n });\n }\n function redrawX(g) {\n g.select(\".extent\").attr(\"x\", xExtent[0]);\n g.selectAll(\".extent,.n>rect,.s>rect\").attr(\"width\", xExtent[1] - xExtent[0]);\n }\n function redrawY(g) {\n g.select(\".extent\").attr(\"y\", yExtent[0]);\n g.selectAll(\".extent,.e>rect,.w>rect\").attr(\"height\", yExtent[1] - yExtent[0]);\n }\n function brushstart() {\n var target = this, eventTarget = d3.select(d3.event.target), event_ = event.of(target, arguments), g = d3.select(target), resizing = eventTarget.datum(), resizingX = !/^(n|s)$/.test(resizing) && x, resizingY = !/^(e|w)$/.test(resizing) && y, dragging = eventTarget.classed(\"extent\"), dragRestore = d3_event_dragSuppress(target), center, origin = d3.mouse(target), offset;\n var w = d3.select(d3_window(target)).on(\"keydown.brush\", keydown).on(\"keyup.brush\", keyup);\n if (d3.event.changedTouches) {\n w.on(\"touchmove.brush\", brushmove).on(\"touchend.brush\", brushend);\n } else {\n w.on(\"mousemove.brush\", brushmove).on(\"mouseup.brush\", brushend);\n }\n g.interrupt().selectAll(\"*\").interrupt();\n if (dragging) {\n origin[0] = xExtent[0] - origin[0];\n origin[1] = yExtent[0] - origin[1];\n } else if (resizing) {\n var ex = +/w$/.test(resizing), ey = +/^n/.test(resizing);\n offset = [xExtent[1 - ex] - origin[0], yExtent[1 - ey] - origin[1]];\n origin[0] = xExtent[ex];\n origin[1] = yExtent[ey];\n } else if (d3.event.altKey) center = origin.slice();\n g.style(\"pointer-events\", \"none\").selectAll(\".resize\").style(\"display\", null);\n d3.select(\"body\").style(\"cursor\", eventTarget.style(\"cursor\"));\n event_({\n type: \"brushstart\"\n });\n brushmove();\n function keydown() {\n if (d3.event.keyCode == 32) {\n if (!dragging) {\n center = null;\n origin[0] -= xExtent[1];\n origin[1] -= yExtent[1];\n dragging = 2;\n }\n d3_eventPreventDefault();\n }\n }\n function keyup() {\n if (d3.event.keyCode == 32 && dragging == 2) {\n origin[0] += xExtent[1];\n origin[1] += yExtent[1];\n dragging = 0;\n d3_eventPreventDefault();\n }\n }\n function brushmove() {\n var point = d3.mouse(target), moved = false;\n if (offset) {\n point[0] += offset[0];\n point[1] += offset[1];\n }\n if (!dragging) {\n if (d3.event.altKey) {\n if (!center) center = [(xExtent[0] + xExtent[1]) / 2, (yExtent[0] + yExtent[1]) / 2];\n origin[0] = xExtent[+(point[0] < center[0])];\n origin[1] = yExtent[+(point[1] < center[1])];\n } else center = null;\n }\n if (resizingX && move1(point, x, 0)) {\n redrawX(g);\n moved = true;\n }\n if (resizingY && move1(point, y, 1)) {\n redrawY(g);\n moved = true;\n }\n if (moved) {\n redraw(g);\n event_({\n type: \"brush\",\n mode: dragging ? \"move\" : \"resize\"\n });\n }\n }\n function move1(point, scale, i) {\n var range = d3_scaleRange(scale), r0 = range[0], r1 = range[1], position = origin[i], extent = i ? yExtent : xExtent, size = extent[1] - extent[0], min, max;\n if (dragging) {\n r0 -= position;\n r1 -= size + position;\n }\n min = (i ? yClamp : xClamp) ? Math.max(r0, Math.min(r1, point[i])) : point[i];\n if (dragging) {\n max = (min += position) + size;\n } else {\n if (center) position = Math.max(r0, Math.min(r1, 2 * center[i] - min));\n if (position < min) {\n max = min;\n min = position;\n } else {\n max = position;\n }\n }\n if (extent[0] != min || extent[1] != max) {\n if (i) yExtentDomain = null;\n else xExtentDomain = null;\n extent[0] = min;\n extent[1] = max;\n return true;\n }\n }\n function brushend() {\n brushmove();\n g.style(\"pointer-events\", \"all\").selectAll(\".resize\").style(\"display\", brush.empty() ? \"none\" : null);\n d3.select(\"body\").style(\"cursor\", null);\n w.on(\"mousemove.brush\", null).on(\"mouseup.brush\", null).on(\"touchmove.brush\", null).on(\"touchend.brush\", null).on(\"keydown.brush\", null).on(\"keyup.brush\", null);\n dragRestore();\n event_({\n type: \"brushend\"\n });\n }\n }\n brush.x = function(z) {\n if (!arguments.length) return x;\n x = z;\n resizes = d3_svg_brushResizes[!x << 1 | !y];\n return brush;\n };\n brush.y = function(z) {\n if (!arguments.length) return y;\n y = z;\n resizes = d3_svg_brushResizes[!x << 1 | !y];\n return brush;\n };\n brush.clamp = function(z) {\n if (!arguments.length) return x && y ? [xClamp, yClamp] : x ? xClamp : y ? yClamp : null;\n if (x && y) xClamp = !!z[0], yClamp = !!z[1];\n else if (x) xClamp = !!z;\n else if (y) yClamp = !!z;\n return brush;\n };\n brush.extent = function(z) {\n var x0, x1, y0, y1, t;\n if (!arguments.length) {\n if (x) {\n if (xExtentDomain) {\n x0 = xExtentDomain[0], x1 = xExtentDomain[1];\n } else {\n x0 = xExtent[0], x1 = xExtent[1];\n if (x.invert) x0 = x.invert(x0), x1 = x.invert(x1);\n if (x1 < x0) t = x0, x0 = x1, x1 = t;\n }\n }\n if (y) {\n if (yExtentDomain) {\n y0 = yExtentDomain[0], y1 = yExtentDomain[1];\n } else {\n y0 = yExtent[0], y1 = yExtent[1];\n if (y.invert) y0 = y.invert(y0), y1 = y.invert(y1);\n if (y1 < y0) t = y0, y0 = y1, y1 = t;\n }\n }\n return x && y ? [[x0, y0], [x1, y1]] : x ? [x0, x1] : y && [y0, y1];\n }\n if (x) {\n x0 = z[0], x1 = z[1];\n if (y) x0 = x0[0], x1 = x1[0];\n xExtentDomain = [x0, x1];\n if (x.invert) x0 = x(x0), x1 = x(x1);\n if (x1 < x0) t = x0, x0 = x1, x1 = t;\n if (x0 != xExtent[0] || x1 != xExtent[1]) xExtent = [x0, x1];\n }\n if (y) {\n y0 = z[0], y1 = z[1];\n if (x) y0 = y0[1], y1 = y1[1];\n yExtentDomain = [y0, y1];\n if (y.invert) y0 = y(y0), y1 = y(y1);\n if (y1 < y0) t = y0, y0 = y1, y1 = t;\n if (y0 != yExtent[0] || y1 != yExtent[1]) yExtent = [y0, y1];\n }\n return brush;\n };\n brush.clear = function() {\n if (!brush.empty()) {\n xExtent = [0, 0], yExtent = [0, 0];\n xExtentDomain = yExtentDomain = null;\n }\n return brush;\n };\n brush.empty = function() {\n return !!x && xExtent[0] == xExtent[1] || !!y && yExtent[0] == yExtent[1];\n };\n return d3.rebind(brush, event, \"on\");\n };\n var d3_svg_brushCursor = {\n n: \"ns-resize\",\n e: \"ew-resize\",\n s: \"ns-resize\",\n w: \"ew-resize\",\n nw: \"nwse-resize\",\n ne: \"nesw-resize\",\n se: \"nwse-resize\",\n sw: \"nesw-resize\"\n };\n var d3_svg_brushResizes = [[\"n\", \"e\", \"s\", \"w\", \"nw\", \"ne\", \"se\", \"sw\"], [\"e\", \"w\"], [\"n\", \"s\"], []];\n d3.text = d3_xhrType(function(request) {\n return request.responseText;\n });\n d3.json = function(url, callback) {\n return d3_xhr(url, \"application/json\", d3_json, callback);\n };\n function d3_json(request) {\n return JSON.parse(request.responseText);\n }\n d3.html = function(url, callback) {\n return d3_xhr(url, \"text/html\", d3_html, callback);\n };\n function d3_html(request) {\n var range = d3_document.createRange();\n range.selectNode(d3_document.body);\n return range.createContextualFragment(request.responseText);\n }\n d3.xml = d3_xhrType(function(request) {\n return request.responseXML;\n });\n if (typeof define === \"function\" && define.amd) define(d3);\n else if (typeof module === \"object\" && module.exports) module.exports = d3;\n else this.d3 = d3;\n }.apply(self);\n }\n });\n\n // node_modules/d3-time/dist/d3-time.js\n var require_d3_time = __commonJS({\n \"node_modules/d3-time/dist/d3-time.js\"(exports, module) {\n (function(global2, factory) {\n typeof exports === \"object\" && typeof module !== \"undefined\" ? factory(exports) : typeof define === \"function\" && define.amd ? define([\"exports\"], factory) : (global2 = global2 || self, factory(global2.d3 = global2.d3 || {}));\n })(exports, function(exports2) {\n \"use strict\";\n var t0 = /* @__PURE__ */ new Date(), t1 = /* @__PURE__ */ new Date();\n function newInterval(floori, offseti, count, field) {\n function interval(date) {\n return floori(date = arguments.length === 0 ? /* @__PURE__ */ new Date() : /* @__PURE__ */ new Date(+date)), date;\n }\n interval.floor = function(date) {\n return floori(date = /* @__PURE__ */ new Date(+date)), date;\n };\n interval.ceil = function(date) {\n return floori(date = new Date(date - 1)), offseti(date, 1), floori(date), date;\n };\n interval.round = function(date) {\n var d0 = interval(date), d1 = interval.ceil(date);\n return date - d0 < d1 - date ? d0 : d1;\n };\n interval.offset = function(date, step) {\n return offseti(date = /* @__PURE__ */ new Date(+date), step == null ? 1 : Math.floor(step)), date;\n };\n interval.range = function(start, stop, step) {\n var range = [], previous;\n start = interval.ceil(start);\n step = step == null ? 1 : Math.floor(step);\n if (!(start < stop) || !(step > 0)) return range;\n do\n range.push(previous = /* @__PURE__ */ new Date(+start)), offseti(start, step), floori(start);\n while (previous < start && start < stop);\n return range;\n };\n interval.filter = function(test) {\n return newInterval(function(date) {\n if (date >= date) while (floori(date), !test(date)) date.setTime(date - 1);\n }, function(date, step) {\n if (date >= date) {\n if (step < 0) while (++step <= 0) {\n while (offseti(date, -1), !test(date)) {\n }\n }\n else while (--step >= 0) {\n while (offseti(date, 1), !test(date)) {\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 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 return interval;\n }\n var millisecond = newInterval(function() {\n }, function(date, step) {\n date.setTime(+date + step);\n }, function(start, end) {\n return end - start;\n });\n millisecond.every = function(k) {\n k = Math.floor(k);\n if (!isFinite(k) || !(k > 0)) return null;\n if (!(k > 1)) return millisecond;\n return newInterval(function(date) {\n date.setTime(Math.floor(date / k) * k);\n }, function(date, step) {\n date.setTime(+date + step * k);\n }, function(start, end) {\n return (end - start) / k;\n });\n };\n var milliseconds = millisecond.range;\n var durationSecond = 1e3;\n var durationMinute = 6e4;\n var durationHour = 36e5;\n var durationDay = 864e5;\n var durationWeek = 6048e5;\n var second = newInterval(function(date) {\n date.setTime(date - date.getMilliseconds());\n }, function(date, step) {\n date.setTime(+date + step * durationSecond);\n }, function(start, end) {\n return (end - start) / durationSecond;\n }, function(date) {\n return date.getUTCSeconds();\n });\n var seconds = second.range;\n var minute = newInterval(function(date) {\n date.setTime(date - date.getMilliseconds() - date.getSeconds() * durationSecond);\n }, function(date, step) {\n date.setTime(+date + step * durationMinute);\n }, function(start, end) {\n return (end - start) / durationMinute;\n }, function(date) {\n return date.getMinutes();\n });\n var minutes = minute.range;\n var hour = newInterval(function(date) {\n date.setTime(date - date.getMilliseconds() - date.getSeconds() * durationSecond - date.getMinutes() * durationMinute);\n }, function(date, step) {\n date.setTime(+date + step * durationHour);\n }, function(start, end) {\n return (end - start) / durationHour;\n }, function(date) {\n return date.getHours();\n });\n var hours = hour.range;\n var day = newInterval(function(date) {\n date.setHours(0, 0, 0, 0);\n }, function(date, step) {\n date.setDate(date.getDate() + step);\n }, function(start, end) {\n return (end - start - (end.getTimezoneOffset() - start.getTimezoneOffset()) * durationMinute) / durationDay;\n }, function(date) {\n return date.getDate() - 1;\n });\n var days = day.range;\n function weekday(i) {\n return newInterval(function(date) {\n date.setDate(date.getDate() - (date.getDay() + 7 - i) % 7);\n date.setHours(0, 0, 0, 0);\n }, function(date, step) {\n date.setDate(date.getDate() + step * 7);\n }, function(start, end) {\n return (end - start - (end.getTimezoneOffset() - start.getTimezoneOffset()) * durationMinute) / durationWeek;\n });\n }\n var sunday = weekday(0);\n var monday = weekday(1);\n var tuesday = weekday(2);\n var wednesday = weekday(3);\n var thursday = weekday(4);\n var friday = weekday(5);\n var saturday = weekday(6);\n var sundays = sunday.range;\n var mondays = monday.range;\n var tuesdays = tuesday.range;\n var wednesdays = wednesday.range;\n var thursdays = thursday.range;\n var fridays = friday.range;\n var saturdays = saturday.range;\n var month = newInterval(function(date) {\n date.setDate(1);\n date.setHours(0, 0, 0, 0);\n }, function(date, step) {\n date.setMonth(date.getMonth() + step);\n }, function(start, end) {\n return end.getMonth() - start.getMonth() + (end.getFullYear() - start.getFullYear()) * 12;\n }, function(date) {\n return date.getMonth();\n });\n var months = month.range;\n var year = newInterval(function(date) {\n date.setMonth(0, 1);\n date.setHours(0, 0, 0, 0);\n }, function(date, step) {\n date.setFullYear(date.getFullYear() + step);\n }, function(start, end) {\n return end.getFullYear() - start.getFullYear();\n }, function(date) {\n return date.getFullYear();\n });\n year.every = function(k) {\n return !isFinite(k = Math.floor(k)) || !(k > 0) ? null : newInterval(function(date) {\n date.setFullYear(Math.floor(date.getFullYear() / k) * k);\n date.setMonth(0, 1);\n date.setHours(0, 0, 0, 0);\n }, function(date, step) {\n date.setFullYear(date.getFullYear() + step * k);\n });\n };\n var years = year.range;\n var utcMinute = newInterval(function(date) {\n date.setUTCSeconds(0, 0);\n }, function(date, step) {\n date.setTime(+date + step * durationMinute);\n }, function(start, end) {\n return (end - start) / durationMinute;\n }, function(date) {\n return date.getUTCMinutes();\n });\n var utcMinutes = utcMinute.range;\n var utcHour = newInterval(function(date) {\n date.setUTCMinutes(0, 0, 0);\n }, function(date, step) {\n date.setTime(+date + step * durationHour);\n }, function(start, end) {\n return (end - start) / durationHour;\n }, function(date) {\n return date.getUTCHours();\n });\n var utcHours = utcHour.range;\n var utcDay = newInterval(function(date) {\n date.setUTCHours(0, 0, 0, 0);\n }, function(date, step) {\n date.setUTCDate(date.getUTCDate() + step);\n }, function(start, end) {\n return (end - start) / durationDay;\n }, function(date) {\n return date.getUTCDate() - 1;\n });\n var utcDays = utcDay.range;\n function utcWeekday(i) {\n return newInterval(function(date) {\n date.setUTCDate(date.getUTCDate() - (date.getUTCDay() + 7 - i) % 7);\n date.setUTCHours(0, 0, 0, 0);\n }, function(date, step) {\n date.setUTCDate(date.getUTCDate() + step * 7);\n }, function(start, end) {\n return (end - start) / durationWeek;\n });\n }\n var utcSunday = utcWeekday(0);\n var utcMonday = utcWeekday(1);\n var utcTuesday = utcWeekday(2);\n var utcWednesday = utcWeekday(3);\n var utcThursday = utcWeekday(4);\n var utcFriday = utcWeekday(5);\n var utcSaturday = utcWeekday(6);\n var utcSundays = utcSunday.range;\n var utcMondays = utcMonday.range;\n var utcTuesdays = utcTuesday.range;\n var utcWednesdays = utcWednesday.range;\n var utcThursdays = utcThursday.range;\n var utcFridays = utcFriday.range;\n var utcSaturdays = utcSaturday.range;\n var utcMonth = newInterval(function(date) {\n date.setUTCDate(1);\n date.setUTCHours(0, 0, 0, 0);\n }, function(date, step) {\n date.setUTCMonth(date.getUTCMonth() + step);\n }, function(start, end) {\n return end.getUTCMonth() - start.getUTCMonth() + (end.getUTCFullYear() - start.getUTCFullYear()) * 12;\n }, function(date) {\n return date.getUTCMonth();\n });\n var utcMonths = utcMonth.range;\n var utcYear = newInterval(function(date) {\n date.setUTCMonth(0, 1);\n date.setUTCHours(0, 0, 0, 0);\n }, function(date, step) {\n date.setUTCFullYear(date.getUTCFullYear() + step);\n }, function(start, end) {\n return end.getUTCFullYear() - start.getUTCFullYear();\n }, function(date) {\n return date.getUTCFullYear();\n });\n utcYear.every = function(k) {\n return !isFinite(k = Math.floor(k)) || !(k > 0) ? null : newInterval(function(date) {\n date.setUTCFullYear(Math.floor(date.getUTCFullYear() / k) * k);\n date.setUTCMonth(0, 1);\n date.setUTCHours(0, 0, 0, 0);\n }, function(date, step) {\n date.setUTCFullYear(date.getUTCFullYear() + step * k);\n });\n };\n var utcYears = utcYear.range;\n exports2.timeDay = day;\n exports2.timeDays = days;\n exports2.timeFriday = friday;\n exports2.timeFridays = fridays;\n exports2.timeHour = hour;\n exports2.timeHours = hours;\n exports2.timeInterval = newInterval;\n exports2.timeMillisecond = millisecond;\n exports2.timeMilliseconds = milliseconds;\n exports2.timeMinute = minute;\n exports2.timeMinutes = minutes;\n exports2.timeMonday = monday;\n exports2.timeMondays = mondays;\n exports2.timeMonth = month;\n exports2.timeMonths = months;\n exports2.timeSaturday = saturday;\n exports2.timeSaturdays = saturdays;\n exports2.timeSecond = second;\n exports2.timeSeconds = seconds;\n exports2.timeSunday = sunday;\n exports2.timeSundays = sundays;\n exports2.timeThursday = thursday;\n exports2.timeThursdays = thursdays;\n exports2.timeTuesday = tuesday;\n exports2.timeTuesdays = tuesdays;\n exports2.timeWednesday = wednesday;\n exports2.timeWednesdays = wednesdays;\n exports2.timeWeek = sunday;\n exports2.timeWeeks = sundays;\n exports2.timeYear = year;\n exports2.timeYears = years;\n exports2.utcDay = utcDay;\n exports2.utcDays = utcDays;\n exports2.utcFriday = utcFriday;\n exports2.utcFridays = utcFridays;\n exports2.utcHour = utcHour;\n exports2.utcHours = utcHours;\n exports2.utcMillisecond = millisecond;\n exports2.utcMilliseconds = milliseconds;\n exports2.utcMinute = utcMinute;\n exports2.utcMinutes = utcMinutes;\n exports2.utcMonday = utcMonday;\n exports2.utcMondays = utcMondays;\n exports2.utcMonth = utcMonth;\n exports2.utcMonths = utcMonths;\n exports2.utcSaturday = utcSaturday;\n exports2.utcSaturdays = utcSaturdays;\n exports2.utcSecond = second;\n exports2.utcSeconds = seconds;\n exports2.utcSunday = utcSunday;\n exports2.utcSundays = utcSundays;\n exports2.utcThursday = utcThursday;\n exports2.utcThursdays = utcThursdays;\n exports2.utcTuesday = utcTuesday;\n exports2.utcTuesdays = utcTuesdays;\n exports2.utcWednesday = utcWednesday;\n exports2.utcWednesdays = utcWednesdays;\n exports2.utcWeek = utcSunday;\n exports2.utcWeeks = utcSundays;\n exports2.utcYear = utcYear;\n exports2.utcYears = utcYears;\n Object.defineProperty(exports2, \"__esModule\", { value: true });\n });\n }\n });\n\n // node_modules/d3-time-format/dist/d3-time-format.js\n var require_d3_time_format = __commonJS({\n \"node_modules/d3-time-format/dist/d3-time-format.js\"(exports, module) {\n (function(global2, factory) {\n typeof exports === \"object\" && typeof module !== \"undefined\" ? factory(exports, require_d3_time()) : typeof define === \"function\" && define.amd ? define([\"exports\", \"d3-time\"], factory) : (global2 = global2 || self, factory(global2.d3 = global2.d3 || {}, global2.d3));\n })(exports, function(exports2, d3Time) {\n \"use strict\";\n function localDate(d) {\n if (0 <= d.y && d.y < 100) {\n var date = new Date(-1, d.m, d.d, d.H, d.M, d.S, d.L);\n date.setFullYear(d.y);\n return date;\n }\n return new Date(d.y, d.m, d.d, d.H, d.M, d.S, d.L);\n }\n function utcDate(d) {\n if (0 <= d.y && d.y < 100) {\n var date = new Date(Date.UTC(-1, d.m, d.d, d.H, d.M, d.S, d.L));\n date.setUTCFullYear(d.y);\n return date;\n }\n return new Date(Date.UTC(d.y, d.m, d.d, d.H, d.M, d.S, d.L));\n }\n function newDate(y, m, d) {\n return { y, m, d, H: 0, M: 0, S: 0, L: 0 };\n }\n function formatLocale(locale2) {\n var locale_dateTime = locale2.dateTime, locale_date = locale2.date, locale_time = locale2.time, locale_periods = locale2.periods, locale_weekdays = locale2.days, locale_shortWeekdays = locale2.shortDays, locale_months = locale2.months, locale_shortMonths = locale2.shortMonths;\n var periodRe = formatRe(locale_periods), periodLookup = formatLookup(locale_periods), weekdayRe = formatRe(locale_weekdays), weekdayLookup = formatLookup(locale_weekdays), shortWeekdayRe = formatRe(locale_shortWeekdays), shortWeekdayLookup = formatLookup(locale_shortWeekdays), monthRe = formatRe(locale_months), monthLookup = formatLookup(locale_months), shortMonthRe = formatRe(locale_shortMonths), shortMonthLookup = formatLookup(locale_shortMonths);\n var formats = {\n \"a\": formatShortWeekday,\n \"A\": formatWeekday,\n \"b\": formatShortMonth,\n \"B\": formatMonth,\n \"c\": null,\n \"d\": formatDayOfMonth,\n \"e\": formatDayOfMonth,\n \"f\": formatMicroseconds,\n \"H\": formatHour24,\n \"I\": formatHour12,\n \"j\": formatDayOfYear,\n \"L\": formatMilliseconds,\n \"m\": formatMonthNumber,\n \"M\": formatMinutes,\n \"p\": formatPeriod,\n \"q\": formatQuarter,\n \"Q\": formatUnixTimestamp,\n \"s\": formatUnixTimestampSeconds,\n \"S\": formatSeconds,\n \"u\": formatWeekdayNumberMonday,\n \"U\": formatWeekNumberSunday,\n \"V\": formatWeekNumberISO,\n \"w\": formatWeekdayNumberSunday,\n \"W\": formatWeekNumberMonday,\n \"x\": null,\n \"X\": null,\n \"y\": formatYear,\n \"Y\": formatFullYear,\n \"Z\": formatZone,\n \"%\": formatLiteralPercent\n };\n var utcFormats = {\n \"a\": formatUTCShortWeekday,\n \"A\": formatUTCWeekday,\n \"b\": formatUTCShortMonth,\n \"B\": formatUTCMonth,\n \"c\": null,\n \"d\": formatUTCDayOfMonth,\n \"e\": formatUTCDayOfMonth,\n \"f\": formatUTCMicroseconds,\n \"H\": formatUTCHour24,\n \"I\": formatUTCHour12,\n \"j\": formatUTCDayOfYear,\n \"L\": formatUTCMilliseconds,\n \"m\": formatUTCMonthNumber,\n \"M\": formatUTCMinutes,\n \"p\": formatUTCPeriod,\n \"q\": formatUTCQuarter,\n \"Q\": formatUnixTimestamp,\n \"s\": formatUnixTimestampSeconds,\n \"S\": formatUTCSeconds,\n \"u\": formatUTCWeekdayNumberMonday,\n \"U\": formatUTCWeekNumberSunday,\n \"V\": formatUTCWeekNumberISO,\n \"w\": formatUTCWeekdayNumberSunday,\n \"W\": formatUTCWeekNumberMonday,\n \"x\": null,\n \"X\": null,\n \"y\": formatUTCYear,\n \"Y\": formatUTCFullYear,\n \"Z\": formatUTCZone,\n \"%\": formatLiteralPercent\n };\n var parses = {\n \"a\": parseShortWeekday,\n \"A\": parseWeekday,\n \"b\": parseShortMonth,\n \"B\": parseMonth,\n \"c\": parseLocaleDateTime,\n \"d\": parseDayOfMonth,\n \"e\": parseDayOfMonth,\n \"f\": parseMicroseconds,\n \"H\": parseHour24,\n \"I\": parseHour24,\n \"j\": parseDayOfYear,\n \"L\": parseMilliseconds,\n \"m\": parseMonthNumber,\n \"M\": parseMinutes,\n \"p\": parsePeriod,\n \"q\": parseQuarter,\n \"Q\": parseUnixTimestamp,\n \"s\": parseUnixTimestampSeconds,\n \"S\": parseSeconds,\n \"u\": parseWeekdayNumberMonday,\n \"U\": parseWeekNumberSunday,\n \"V\": parseWeekNumberISO,\n \"w\": parseWeekdayNumberSunday,\n \"W\": parseWeekNumberMonday,\n \"x\": parseLocaleDate,\n \"X\": parseLocaleTime,\n \"y\": parseYear,\n \"Y\": parseFullYear,\n \"Z\": parseZone,\n \"%\": parseLiteralPercent\n };\n formats.x = newFormat(locale_date, formats);\n formats.X = newFormat(locale_time, formats);\n formats.c = newFormat(locale_dateTime, formats);\n utcFormats.x = newFormat(locale_date, utcFormats);\n utcFormats.X = newFormat(locale_time, utcFormats);\n utcFormats.c = newFormat(locale_dateTime, utcFormats);\n function newFormat(specifier, formats2) {\n return function(date) {\n var string = [], i = -1, j = 0, n = specifier.length, c, pad2, format;\n if (!(date instanceof Date)) date = /* @__PURE__ */ new Date(+date);\n while (++i < n) {\n if (specifier.charCodeAt(i) === 37) {\n string.push(specifier.slice(j, i));\n if ((pad2 = pads[c = specifier.charAt(++i)]) != null) c = specifier.charAt(++i);\n else pad2 = c === \"e\" ? \" \" : \"0\";\n if (format = formats2[c]) c = format(date, pad2);\n string.push(c);\n j = i + 1;\n }\n }\n string.push(specifier.slice(j, i));\n return string.join(\"\");\n };\n }\n function newParse(specifier, Z) {\n return function(string) {\n var d = newDate(1900, void 0, 1), i = parseSpecifier(d, specifier, string += \"\", 0), week, day;\n if (i != string.length) return null;\n if (\"Q\" in d) return new Date(d.Q);\n if (\"s\" in d) return new Date(d.s * 1e3 + (\"L\" in d ? d.L : 0));\n if (Z && !(\"Z\" in d)) d.Z = 0;\n if (\"p\" in d) d.H = d.H % 12 + d.p * 12;\n if (d.m === void 0) d.m = \"q\" in d ? d.q : 0;\n if (\"V\" in d) {\n if (d.V < 1 || d.V > 53) return null;\n if (!(\"w\" in d)) d.w = 1;\n if (\"Z\" in d) {\n week = utcDate(newDate(d.y, 0, 1)), day = week.getUTCDay();\n week = day > 4 || day === 0 ? d3Time.utcMonday.ceil(week) : d3Time.utcMonday(week);\n week = d3Time.utcDay.offset(week, (d.V - 1) * 7);\n d.y = week.getUTCFullYear();\n d.m = week.getUTCMonth();\n d.d = week.getUTCDate() + (d.w + 6) % 7;\n } else {\n week = localDate(newDate(d.y, 0, 1)), day = week.getDay();\n week = day > 4 || day === 0 ? d3Time.timeMonday.ceil(week) : d3Time.timeMonday(week);\n week = d3Time.timeDay.offset(week, (d.V - 1) * 7);\n d.y = week.getFullYear();\n d.m = week.getMonth();\n d.d = week.getDate() + (d.w + 6) % 7;\n }\n } else if (\"W\" in d || \"U\" in d) {\n if (!(\"w\" in d)) d.w = \"u\" in d ? d.u % 7 : \"W\" in d ? 1 : 0;\n day = \"Z\" in d ? utcDate(newDate(d.y, 0, 1)).getUTCDay() : localDate(newDate(d.y, 0, 1)).getDay();\n d.m = 0;\n d.d = \"W\" in d ? (d.w + 6) % 7 + d.W * 7 - (day + 5) % 7 : d.w + d.U * 7 - (day + 6) % 7;\n }\n if (\"Z\" in d) {\n d.H += d.Z / 100 | 0;\n d.M += d.Z % 100;\n return utcDate(d);\n }\n return localDate(d);\n };\n }\n function parseSpecifier(d, specifier, string, j) {\n var i = 0, n = specifier.length, m = string.length, c, parse;\n while (i < n) {\n if (j >= m) return -1;\n c = specifier.charCodeAt(i++);\n if (c === 37) {\n c = specifier.charAt(i++);\n parse = parses[c in pads ? specifier.charAt(i++) : c];\n if (!parse || (j = parse(d, string, j)) < 0) return -1;\n } else if (c != string.charCodeAt(j++)) {\n return -1;\n }\n }\n return j;\n }\n function parsePeriod(d, string, i) {\n var n = periodRe.exec(string.slice(i));\n return n ? (d.p = periodLookup[n[0].toLowerCase()], i + n[0].length) : -1;\n }\n function parseShortWeekday(d, string, i) {\n var n = shortWeekdayRe.exec(string.slice(i));\n return n ? (d.w = shortWeekdayLookup[n[0].toLowerCase()], i + n[0].length) : -1;\n }\n function parseWeekday(d, string, i) {\n var n = weekdayRe.exec(string.slice(i));\n return n ? (d.w = weekdayLookup[n[0].toLowerCase()], i + n[0].length) : -1;\n }\n function parseShortMonth(d, string, i) {\n var n = shortMonthRe.exec(string.slice(i));\n return n ? (d.m = shortMonthLookup[n[0].toLowerCase()], i + n[0].length) : -1;\n }\n function parseMonth(d, string, i) {\n var n = monthRe.exec(string.slice(i));\n return n ? (d.m = monthLookup[n[0].toLowerCase()], i + n[0].length) : -1;\n }\n function parseLocaleDateTime(d, string, i) {\n return parseSpecifier(d, locale_dateTime, string, i);\n }\n function parseLocaleDate(d, string, i) {\n return parseSpecifier(d, locale_date, string, i);\n }\n function parseLocaleTime(d, string, i) {\n return parseSpecifier(d, locale_time, string, i);\n }\n function formatShortWeekday(d) {\n return locale_shortWeekdays[d.getDay()];\n }\n function formatWeekday(d) {\n return locale_weekdays[d.getDay()];\n }\n function formatShortMonth(d) {\n return locale_shortMonths[d.getMonth()];\n }\n function formatMonth(d) {\n return locale_months[d.getMonth()];\n }\n function formatPeriod(d) {\n return locale_periods[+(d.getHours() >= 12)];\n }\n function formatQuarter(d) {\n return 1 + ~~(d.getMonth() / 3);\n }\n function formatUTCShortWeekday(d) {\n return locale_shortWeekdays[d.getUTCDay()];\n }\n function formatUTCWeekday(d) {\n return locale_weekdays[d.getUTCDay()];\n }\n function formatUTCShortMonth(d) {\n return locale_shortMonths[d.getUTCMonth()];\n }\n function formatUTCMonth(d) {\n return locale_months[d.getUTCMonth()];\n }\n function formatUTCPeriod(d) {\n return locale_periods[+(d.getUTCHours() >= 12)];\n }\n function formatUTCQuarter(d) {\n return 1 + ~~(d.getUTCMonth() / 3);\n }\n return {\n format: function(specifier) {\n var f = newFormat(specifier += \"\", formats);\n f.toString = function() {\n return specifier;\n };\n return f;\n },\n parse: function(specifier) {\n var p = newParse(specifier += \"\", false);\n p.toString = function() {\n return specifier;\n };\n return p;\n },\n utcFormat: function(specifier) {\n var f = newFormat(specifier += \"\", utcFormats);\n f.toString = function() {\n return specifier;\n };\n return f;\n },\n utcParse: function(specifier) {\n var p = newParse(specifier += \"\", true);\n p.toString = function() {\n return specifier;\n };\n return p;\n }\n };\n }\n var pads = { \"-\": \"\", \"_\": \" \", \"0\": \"0\" }, numberRe = /^\\s*\\d+/, percentRe = /^%/, requoteRe = /[\\\\^$*+?|[\\]().{}]/g;\n function pad(value, fill, width) {\n var sign = value < 0 ? \"-\" : \"\", string = (sign ? -value : value) + \"\", length = string.length;\n return sign + (length < width ? new Array(width - length + 1).join(fill) + string : string);\n }\n function requote(s) {\n return s.replace(requoteRe, \"\\\\$&\");\n }\n function formatRe(names) {\n return new RegExp(\"^(?:\" + names.map(requote).join(\"|\") + \")\", \"i\");\n }\n function formatLookup(names) {\n var map = {}, i = -1, n = names.length;\n while (++i < n) map[names[i].toLowerCase()] = i;\n return map;\n }\n function parseWeekdayNumberSunday(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 1));\n return n ? (d.w = +n[0], i + n[0].length) : -1;\n }\n function parseWeekdayNumberMonday(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 1));\n return n ? (d.u = +n[0], i + n[0].length) : -1;\n }\n function parseWeekNumberSunday(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 2));\n return n ? (d.U = +n[0], i + n[0].length) : -1;\n }\n function parseWeekNumberISO(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 2));\n return n ? (d.V = +n[0], i + n[0].length) : -1;\n }\n function parseWeekNumberMonday(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 2));\n return n ? (d.W = +n[0], i + n[0].length) : -1;\n }\n function parseFullYear(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 4));\n return n ? (d.y = +n[0], i + n[0].length) : -1;\n }\n function parseYear(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 2));\n return n ? (d.y = +n[0] + (+n[0] > 68 ? 1900 : 2e3), i + n[0].length) : -1;\n }\n function parseZone(d, string, i) {\n var n = /^(Z)|([+-]\\d\\d)(?::?(\\d\\d))?/.exec(string.slice(i, i + 6));\n return n ? (d.Z = n[1] ? 0 : -(n[2] + (n[3] || \"00\")), i + n[0].length) : -1;\n }\n function parseQuarter(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 1));\n return n ? (d.q = n[0] * 3 - 3, i + n[0].length) : -1;\n }\n function parseMonthNumber(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 2));\n return n ? (d.m = n[0] - 1, i + n[0].length) : -1;\n }\n function parseDayOfMonth(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 2));\n return n ? (d.d = +n[0], i + n[0].length) : -1;\n }\n function parseDayOfYear(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 3));\n return n ? (d.m = 0, d.d = +n[0], i + n[0].length) : -1;\n }\n function parseHour24(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 2));\n return n ? (d.H = +n[0], i + n[0].length) : -1;\n }\n function parseMinutes(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 2));\n return n ? (d.M = +n[0], i + n[0].length) : -1;\n }\n function parseSeconds(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 2));\n return n ? (d.S = +n[0], i + n[0].length) : -1;\n }\n function parseMilliseconds(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 3));\n return n ? (d.L = +n[0], i + n[0].length) : -1;\n }\n function parseMicroseconds(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 6));\n return n ? (d.L = Math.floor(n[0] / 1e3), i + n[0].length) : -1;\n }\n function parseLiteralPercent(d, string, i) {\n var n = percentRe.exec(string.slice(i, i + 1));\n return n ? i + n[0].length : -1;\n }\n function parseUnixTimestamp(d, string, i) {\n var n = numberRe.exec(string.slice(i));\n return n ? (d.Q = +n[0], i + n[0].length) : -1;\n }\n function parseUnixTimestampSeconds(d, string, i) {\n var n = numberRe.exec(string.slice(i));\n return n ? (d.s = +n[0], i + n[0].length) : -1;\n }\n function formatDayOfMonth(d, p) {\n return pad(d.getDate(), p, 2);\n }\n function formatHour24(d, p) {\n return pad(d.getHours(), p, 2);\n }\n function formatHour12(d, p) {\n return pad(d.getHours() % 12 || 12, p, 2);\n }\n function formatDayOfYear(d, p) {\n return pad(1 + d3Time.timeDay.count(d3Time.timeYear(d), d), p, 3);\n }\n function formatMilliseconds(d, p) {\n return pad(d.getMilliseconds(), p, 3);\n }\n function formatMicroseconds(d, p) {\n return formatMilliseconds(d, p) + \"000\";\n }\n function formatMonthNumber(d, p) {\n return pad(d.getMonth() + 1, p, 2);\n }\n function formatMinutes(d, p) {\n return pad(d.getMinutes(), p, 2);\n }\n function formatSeconds(d, p) {\n return pad(d.getSeconds(), p, 2);\n }\n function formatWeekdayNumberMonday(d) {\n var day = d.getDay();\n return day === 0 ? 7 : day;\n }\n function formatWeekNumberSunday(d, p) {\n return pad(d3Time.timeSunday.count(d3Time.timeYear(d) - 1, d), p, 2);\n }\n function formatWeekNumberISO(d, p) {\n var day = d.getDay();\n d = day >= 4 || day === 0 ? d3Time.timeThursday(d) : d3Time.timeThursday.ceil(d);\n return pad(d3Time.timeThursday.count(d3Time.timeYear(d), d) + (d3Time.timeYear(d).getDay() === 4), p, 2);\n }\n function formatWeekdayNumberSunday(d) {\n return d.getDay();\n }\n function formatWeekNumberMonday(d, p) {\n return pad(d3Time.timeMonday.count(d3Time.timeYear(d) - 1, d), p, 2);\n }\n function formatYear(d, p) {\n return pad(d.getFullYear() % 100, p, 2);\n }\n function formatFullYear(d, p) {\n return pad(d.getFullYear() % 1e4, p, 4);\n }\n function formatZone(d) {\n var z = d.getTimezoneOffset();\n return (z > 0 ? \"-\" : (z *= -1, \"+\")) + pad(z / 60 | 0, \"0\", 2) + pad(z % 60, \"0\", 2);\n }\n function formatUTCDayOfMonth(d, p) {\n return pad(d.getUTCDate(), p, 2);\n }\n function formatUTCHour24(d, p) {\n return pad(d.getUTCHours(), p, 2);\n }\n function formatUTCHour12(d, p) {\n return pad(d.getUTCHours() % 12 || 12, p, 2);\n }\n function formatUTCDayOfYear(d, p) {\n return pad(1 + d3Time.utcDay.count(d3Time.utcYear(d), d), p, 3);\n }\n function formatUTCMilliseconds(d, p) {\n return pad(d.getUTCMilliseconds(), p, 3);\n }\n function formatUTCMicroseconds(d, p) {\n return formatUTCMilliseconds(d, p) + \"000\";\n }\n function formatUTCMonthNumber(d, p) {\n return pad(d.getUTCMonth() + 1, p, 2);\n }\n function formatUTCMinutes(d, p) {\n return pad(d.getUTCMinutes(), p, 2);\n }\n function formatUTCSeconds(d, p) {\n return pad(d.getUTCSeconds(), p, 2);\n }\n function formatUTCWeekdayNumberMonday(d) {\n var dow = d.getUTCDay();\n return dow === 0 ? 7 : dow;\n }\n function formatUTCWeekNumberSunday(d, p) {\n return pad(d3Time.utcSunday.count(d3Time.utcYear(d) - 1, d), p, 2);\n }\n function formatUTCWeekNumberISO(d, p) {\n var day = d.getUTCDay();\n d = day >= 4 || day === 0 ? d3Time.utcThursday(d) : d3Time.utcThursday.ceil(d);\n return pad(d3Time.utcThursday.count(d3Time.utcYear(d), d) + (d3Time.utcYear(d).getUTCDay() === 4), p, 2);\n }\n function formatUTCWeekdayNumberSunday(d) {\n return d.getUTCDay();\n }\n function formatUTCWeekNumberMonday(d, p) {\n return pad(d3Time.utcMonday.count(d3Time.utcYear(d) - 1, d), p, 2);\n }\n function formatUTCYear(d, p) {\n return pad(d.getUTCFullYear() % 100, p, 2);\n }\n function formatUTCFullYear(d, p) {\n return pad(d.getUTCFullYear() % 1e4, p, 4);\n }\n function formatUTCZone() {\n return \"+0000\";\n }\n function formatLiteralPercent() {\n return \"%\";\n }\n function formatUnixTimestamp(d) {\n return +d;\n }\n function formatUnixTimestampSeconds(d) {\n return Math.floor(+d / 1e3);\n }\n var locale;\n defaultLocale({\n dateTime: \"%x, %X\",\n date: \"%-m/%-d/%Y\",\n time: \"%-I:%M:%S %p\",\n periods: [\"AM\", \"PM\"],\n days: [\"Sunday\", \"Monday\", \"Tuesday\", \"Wednesday\", \"Thursday\", \"Friday\", \"Saturday\"],\n shortDays: [\"Sun\", \"Mon\", \"Tue\", \"Wed\", \"Thu\", \"Fri\", \"Sat\"],\n months: [\"January\", \"February\", \"March\", \"April\", \"May\", \"June\", \"July\", \"August\", \"September\", \"October\", \"November\", \"December\"],\n shortMonths: [\"Jan\", \"Feb\", \"Mar\", \"Apr\", \"May\", \"Jun\", \"Jul\", \"Aug\", \"Sep\", \"Oct\", \"Nov\", \"Dec\"]\n });\n function defaultLocale(definition) {\n locale = formatLocale(definition);\n exports2.timeFormat = locale.format;\n exports2.timeParse = locale.parse;\n exports2.utcFormat = locale.utcFormat;\n exports2.utcParse = locale.utcParse;\n return locale;\n }\n var isoSpecifier = \"%Y-%m-%dT%H:%M:%S.%LZ\";\n function formatIsoNative(date) {\n return date.toISOString();\n }\n var formatIso = Date.prototype.toISOString ? formatIsoNative : exports2.utcFormat(isoSpecifier);\n function parseIsoNative(string) {\n var date = new Date(string);\n return isNaN(date) ? null : date;\n }\n var parseIso = +/* @__PURE__ */ new Date(\"2000-01-01T00:00:00.000Z\") ? parseIsoNative : exports2.utcParse(isoSpecifier);\n exports2.isoFormat = formatIso;\n exports2.isoParse = parseIso;\n exports2.timeFormatDefaultLocale = defaultLocale;\n exports2.timeFormatLocale = formatLocale;\n Object.defineProperty(exports2, \"__esModule\", { value: true });\n });\n }\n });\n\n // node_modules/d3-format/dist/d3-format.js\n var require_d3_format = __commonJS({\n \"node_modules/d3-format/dist/d3-format.js\"(exports, module) {\n (function(global2, factory) {\n typeof exports === \"object\" && typeof module !== \"undefined\" ? factory(exports) : typeof define === \"function\" && define.amd ? define([\"exports\"], factory) : (global2 = typeof globalThis !== \"undefined\" ? globalThis : global2 || self, factory(global2.d3 = global2.d3 || {}));\n })(exports, function(exports2) {\n \"use strict\";\n function formatDecimal(x) {\n return Math.abs(x = Math.round(x)) >= 1e21 ? x.toLocaleString(\"en\").replace(/,/g, \"\") : x.toString(10);\n }\n function formatDecimalParts(x, p) {\n if ((i = (x = p ? x.toExponential(p - 1) : x.toExponential()).indexOf(\"e\")) < 0) return null;\n var i, coefficient = x.slice(0, i);\n return [\n coefficient.length > 1 ? coefficient[0] + coefficient.slice(2) : coefficient,\n +x.slice(i + 1)\n ];\n }\n function exponent(x) {\n return x = formatDecimalParts(Math.abs(x)), x ? x[1] : NaN;\n }\n function formatGroup(grouping, thousands) {\n return function(value, width) {\n var i = value.length, t = [], j = 0, g = grouping[0], length = 0;\n while (i > 0 && g > 0) {\n if (length + g + 1 > width) g = Math.max(1, width - length);\n t.push(value.substring(i -= g, i + g));\n if ((length += g + 1) > width) break;\n g = grouping[j = (j + 1) % grouping.length];\n }\n return t.reverse().join(thousands);\n };\n }\n function formatNumerals(numerals) {\n return function(value) {\n return value.replace(/[0-9]/g, function(i) {\n return numerals[+i];\n });\n };\n }\n var re = /^(?:(.)?([<>=^]))?([+\\-( ])?([$#])?(0)?(\\d+)?(,)?(\\.\\d+)?(~)?([a-z%])?$/i;\n function formatSpecifier(specifier) {\n if (!(match = re.exec(specifier))) throw new Error(\"invalid format: \" + specifier);\n var match;\n return new FormatSpecifier({\n fill: match[1],\n align: match[2],\n sign: match[3],\n symbol: match[4],\n zero: match[5],\n width: match[6],\n comma: match[7],\n precision: match[8] && match[8].slice(1),\n trim: match[9],\n type: match[10]\n });\n }\n formatSpecifier.prototype = FormatSpecifier.prototype;\n function FormatSpecifier(specifier) {\n this.fill = specifier.fill === void 0 ? \" \" : specifier.fill + \"\";\n this.align = specifier.align === void 0 ? \">\" : specifier.align + \"\";\n this.sign = specifier.sign === void 0 ? \"-\" : specifier.sign + \"\";\n this.symbol = specifier.symbol === void 0 ? \"\" : specifier.symbol + \"\";\n this.zero = !!specifier.zero;\n this.width = specifier.width === void 0 ? void 0 : +specifier.width;\n this.comma = !!specifier.comma;\n this.precision = specifier.precision === void 0 ? void 0 : +specifier.precision;\n this.trim = !!specifier.trim;\n this.type = specifier.type === void 0 ? \"\" : specifier.type + \"\";\n }\n FormatSpecifier.prototype.toString = function() {\n return this.fill + this.align + this.sign + this.symbol + (this.zero ? \"0\" : \"\") + (this.width === void 0 ? \"\" : Math.max(1, this.width | 0)) + (this.comma ? \",\" : \"\") + (this.precision === void 0 ? \"\" : \".\" + Math.max(0, this.precision | 0)) + (this.trim ? \"~\" : \"\") + this.type;\n };\n function formatTrim(s) {\n out: for (var n = s.length, i = 1, i0 = -1, i1; i < n; ++i) {\n switch (s[i]) {\n case \".\":\n i0 = i1 = i;\n break;\n case \"0\":\n if (i0 === 0) i0 = i;\n i1 = i;\n break;\n default:\n if (!+s[i]) break out;\n if (i0 > 0) i0 = 0;\n break;\n }\n }\n return i0 > 0 ? s.slice(0, i0) + s.slice(i1 + 1) : s;\n }\n var prefixExponent;\n function formatPrefixAuto(x, p) {\n var d = formatDecimalParts(x, p);\n if (!d) return x + \"\";\n var coefficient = d[0], exponent2 = d[1], i = exponent2 - (prefixExponent = Math.max(-8, Math.min(8, Math.floor(exponent2 / 3))) * 3) + 1, n = coefficient.length;\n return i === n ? coefficient : i > n ? coefficient + new Array(i - n + 1).join(\"0\") : i > 0 ? coefficient.slice(0, i) + \".\" + coefficient.slice(i) : \"0.\" + new Array(1 - i).join(\"0\") + formatDecimalParts(x, Math.max(0, p + i - 1))[0];\n }\n function formatRounded(x, p) {\n var d = formatDecimalParts(x, p);\n if (!d) return x + \"\";\n var coefficient = d[0], exponent2 = d[1];\n return exponent2 < 0 ? \"0.\" + new Array(-exponent2).join(\"0\") + coefficient : coefficient.length > exponent2 + 1 ? coefficient.slice(0, exponent2 + 1) + \".\" + coefficient.slice(exponent2 + 1) : coefficient + new Array(exponent2 - coefficient.length + 2).join(\"0\");\n }\n var formatTypes = {\n \"%\": function(x, p) {\n return (x * 100).toFixed(p);\n },\n \"b\": function(x) {\n return Math.round(x).toString(2);\n },\n \"c\": function(x) {\n return x + \"\";\n },\n \"d\": formatDecimal,\n \"e\": function(x, p) {\n return x.toExponential(p);\n },\n \"f\": function(x, p) {\n return x.toFixed(p);\n },\n \"g\": function(x, p) {\n return x.toPrecision(p);\n },\n \"o\": function(x) {\n return Math.round(x).toString(8);\n },\n \"p\": function(x, p) {\n return formatRounded(x * 100, p);\n },\n \"r\": formatRounded,\n \"s\": formatPrefixAuto,\n \"X\": function(x) {\n return Math.round(x).toString(16).toUpperCase();\n },\n \"x\": function(x) {\n return Math.round(x).toString(16);\n }\n };\n function identity(x) {\n return x;\n }\n var map = Array.prototype.map, prefixes = [\"y\", \"z\", \"a\", \"f\", \"p\", \"n\", \"\\xB5\", \"m\", \"\", \"k\", \"M\", \"G\", \"T\", \"P\", \"E\", \"Z\", \"Y\"];\n function formatLocale(locale2) {\n var group = locale2.grouping === void 0 || locale2.thousands === void 0 ? identity : formatGroup(map.call(locale2.grouping, Number), locale2.thousands + \"\"), currencyPrefix = locale2.currency === void 0 ? \"\" : locale2.currency[0] + \"\", currencySuffix = locale2.currency === void 0 ? \"\" : locale2.currency[1] + \"\", decimal = locale2.decimal === void 0 ? \".\" : locale2.decimal + \"\", numerals = locale2.numerals === void 0 ? identity : formatNumerals(map.call(locale2.numerals, String)), percent = locale2.percent === void 0 ? \"%\" : locale2.percent + \"\", minus = locale2.minus === void 0 ? \"-\" : locale2.minus + \"\", nan = locale2.nan === void 0 ? \"NaN\" : locale2.nan + \"\";\n function newFormat(specifier) {\n specifier = formatSpecifier(specifier);\n var fill = specifier.fill, align = specifier.align, sign = specifier.sign, symbol = specifier.symbol, zero = specifier.zero, width = specifier.width, comma = specifier.comma, precision = specifier.precision, trim = specifier.trim, type = specifier.type;\n if (type === \"n\") comma = true, type = \"g\";\n else if (!formatTypes[type]) precision === void 0 && (precision = 12), trim = true, type = \"g\";\n if (zero || fill === \"0\" && align === \"=\") zero = true, fill = \"0\", align = \"=\";\n var prefix = symbol === \"$\" ? currencyPrefix : symbol === \"#\" && /[boxX]/.test(type) ? \"0\" + type.toLowerCase() : \"\", suffix = symbol === \"$\" ? currencySuffix : /[%p]/.test(type) ? percent : \"\";\n var formatType = formatTypes[type], maybeSuffix = /[defgprs%]/.test(type);\n precision = precision === void 0 ? 6 : /[gprs]/.test(type) ? Math.max(1, Math.min(21, precision)) : Math.max(0, Math.min(20, precision));\n function format(value) {\n var valuePrefix = prefix, valueSuffix = suffix, i, n, c;\n if (type === \"c\") {\n valueSuffix = formatType(value) + valueSuffix;\n value = \"\";\n } else {\n value = +value;\n var valueNegative = value < 0 || 1 / value < 0;\n value = isNaN(value) ? nan : formatType(Math.abs(value), precision);\n if (trim) value = formatTrim(value);\n if (valueNegative && +value === 0 && sign !== \"+\") valueNegative = false;\n valuePrefix = (valueNegative ? sign === \"(\" ? sign : minus : sign === \"-\" || sign === \"(\" ? \"\" : sign) + valuePrefix;\n valueSuffix = (type === \"s\" ? prefixes[8 + prefixExponent / 3] : \"\") + valueSuffix + (valueNegative && sign === \"(\" ? \")\" : \"\");\n if (maybeSuffix) {\n i = -1, n = value.length;\n while (++i < n) {\n if (c = value.charCodeAt(i), 48 > c || c > 57) {\n valueSuffix = (c === 46 ? decimal + value.slice(i + 1) : value.slice(i)) + valueSuffix;\n value = value.slice(0, i);\n break;\n }\n }\n }\n }\n if (comma && !zero) value = group(value, Infinity);\n var length = valuePrefix.length + value.length + valueSuffix.length, padding = length < width ? new Array(width - length + 1).join(fill) : \"\";\n if (comma && zero) value = group(padding + value, padding.length ? width - valueSuffix.length : Infinity), padding = \"\";\n switch (align) {\n case \"<\":\n value = valuePrefix + value + valueSuffix + padding;\n break;\n case \"=\":\n value = valuePrefix + padding + value + valueSuffix;\n break;\n case \"^\":\n value = padding.slice(0, length = padding.length >> 1) + valuePrefix + value + valueSuffix + padding.slice(length);\n break;\n default:\n value = padding + valuePrefix + value + valueSuffix;\n break;\n }\n return numerals(value);\n }\n format.toString = function() {\n return specifier + \"\";\n };\n return format;\n }\n function formatPrefix(specifier, value) {\n var f = newFormat((specifier = formatSpecifier(specifier), specifier.type = \"f\", specifier)), e = Math.max(-8, Math.min(8, Math.floor(exponent(value) / 3))) * 3, k = Math.pow(10, -e), prefix = prefixes[8 + e / 3];\n return function(value2) {\n return f(k * value2) + prefix;\n };\n }\n return {\n format: newFormat,\n formatPrefix\n };\n }\n var locale;\n defaultLocale({\n decimal: \".\",\n thousands: \",\",\n grouping: [3],\n currency: [\"$\", \"\"],\n minus: \"-\"\n });\n function defaultLocale(definition) {\n locale = formatLocale(definition);\n exports2.format = locale.format;\n exports2.formatPrefix = locale.formatPrefix;\n return locale;\n }\n function precisionFixed(step) {\n return Math.max(0, -exponent(Math.abs(step)));\n }\n function precisionPrefix(step, value) {\n return Math.max(0, Math.max(-8, Math.min(8, Math.floor(exponent(value) / 3))) * 3 - exponent(Math.abs(step)));\n }\n function precisionRound(step, max) {\n step = Math.abs(step), max = Math.abs(max) - step;\n return Math.max(0, exponent(max) - exponent(step)) + 1;\n }\n exports2.FormatSpecifier = FormatSpecifier;\n exports2.formatDefaultLocale = defaultLocale;\n exports2.formatLocale = formatLocale;\n exports2.formatSpecifier = formatSpecifier;\n exports2.precisionFixed = precisionFixed;\n exports2.precisionPrefix = precisionPrefix;\n exports2.precisionRound = precisionRound;\n Object.defineProperty(exports2, \"__esModule\", { value: true });\n });\n }\n });\n\n // node_modules/is-string-blank/index.js\n var require_is_string_blank = __commonJS({\n \"node_modules/is-string-blank/index.js\"(exports, module) {\n \"use strict\";\n module.exports = function(str) {\n var l = str.length, a;\n for (var i = 0; i < l; i++) {\n a = str.charCodeAt(i);\n if ((a < 9 || a > 13) && a !== 32 && a !== 133 && a !== 160 && a !== 5760 && a !== 6158 && (a < 8192 || a > 8205) && a !== 8232 && a !== 8233 && a !== 8239 && a !== 8287 && a !== 8288 && a !== 12288 && a !== 65279) {\n return false;\n }\n }\n return true;\n };\n }\n });\n\n // node_modules/fast-isnumeric/index.js\n var require_fast_isnumeric = __commonJS({\n \"node_modules/fast-isnumeric/index.js\"(exports, module) {\n \"use strict\";\n var allBlankCharCodes = require_is_string_blank();\n module.exports = function(n) {\n var type = typeof n;\n if (type === \"string\") {\n var original = n;\n n = +n;\n if (n === 0 && allBlankCharCodes(original)) return false;\n } else if (type !== \"number\") return false;\n return n - n < 1;\n };\n }\n });\n\n // src/constants/numerical.js\n var require_numerical = __commonJS({\n \"src/constants/numerical.js\"(exports, module) {\n \"use strict\";\n module.exports = {\n /**\n * Standardize all missing data in calcdata to use undefined\n * never null or NaN.\n * That way we can use !==undefined, or !== BADNUM,\n * to test for real data\n */\n BADNUM: void 0,\n /*\n * Limit certain operations to well below floating point max value\n * to avoid glitches: Make sure that even when you multiply it by the\n * number of pixels on a giant screen it still works\n */\n FP_SAFE: Number.MAX_VALUE * 1e-4,\n /*\n * conversion of date units to milliseconds\n * year and month constants are marked \"AVG\"\n * to remind us that not all years and months\n * have the same length\n */\n ONEMAXYEAR: 316224e5,\n // 366 * ONEDAY\n ONEAVGYEAR: 315576e5,\n // 365.25 days\n ONEMINYEAR: 31536e6,\n // 365 * ONEDAY\n ONEMAXQUARTER: 79488e5,\n // 92 * ONEDAY\n ONEAVGQUARTER: 78894e5,\n // 1/4 of ONEAVGYEAR\n ONEMINQUARTER: 76896e5,\n // 89 * ONEDAY\n ONEMAXMONTH: 26784e5,\n // 31 * ONEDAY\n ONEAVGMONTH: 26298e5,\n // 1/12 of ONEAVGYEAR\n ONEMINMONTH: 24192e5,\n // 28 * ONEDAY\n ONEWEEK: 6048e5,\n // 7 * ONEDAY\n ONEDAY: 864e5,\n // 24 * ONEHOUR\n ONEHOUR: 36e5,\n ONEMIN: 6e4,\n ONESEC: 1e3,\n ONEMILLI: 1,\n ONEMICROSEC: 1e-3,\n /*\n * For fast conversion btwn world calendars and epoch ms, the Julian Day Number\n * of the unix epoch. From calendars.instance().newDate(1970, 1, 1).toJD()\n */\n EPOCHJD: 24405875e-1,\n /*\n * Are two values nearly equal? Compare to 1PPM\n */\n ALMOST_EQUAL: 1 - 1e-6,\n /*\n * If we're asked to clip a non-positive log value, how far off-screen\n * do we put it?\n */\n LOG_CLIP: 10,\n /*\n * not a number, but for displaying numbers: the \"minus sign\" symbol is\n * wider than the regular ascii dash \"-\"\n */\n MINUS_SIGN: \"\\u2212\"\n };\n }\n });\n\n // node_modules/base64-arraybuffer/dist/base64-arraybuffer.umd.js\n var require_base64_arraybuffer_umd = __commonJS({\n \"node_modules/base64-arraybuffer/dist/base64-arraybuffer.umd.js\"(exports, module) {\n (function(global2, factory) {\n typeof exports === \"object\" && typeof module !== \"undefined\" ? factory(exports) : typeof define === \"function\" && define.amd ? define([\"exports\"], factory) : (global2 = typeof globalThis !== \"undefined\" ? globalThis : global2 || self, factory(global2[\"base64-arraybuffer\"] = {}));\n })(exports, function(exports2) {\n \"use strict\";\n var chars = \"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/\";\n var lookup = typeof Uint8Array === \"undefined\" ? [] : new Uint8Array(256);\n for (var i = 0; i < chars.length; i++) {\n lookup[chars.charCodeAt(i)] = i;\n }\n var encode = function(arraybuffer) {\n var bytes = new Uint8Array(arraybuffer), i2, len = bytes.length, base64 = \"\";\n for (i2 = 0; i2 < len; i2 += 3) {\n base64 += chars[bytes[i2] >> 2];\n base64 += chars[(bytes[i2] & 3) << 4 | bytes[i2 + 1] >> 4];\n base64 += chars[(bytes[i2 + 1] & 15) << 2 | bytes[i2 + 2] >> 6];\n base64 += chars[bytes[i2 + 2] & 63];\n }\n if (len % 3 === 2) {\n base64 = base64.substring(0, base64.length - 1) + \"=\";\n } else if (len % 3 === 1) {\n base64 = base64.substring(0, base64.length - 2) + \"==\";\n }\n return base64;\n };\n var decode = function(base64) {\n var bufferLength = base64.length * 0.75, len = base64.length, i2, p = 0, encoded1, encoded2, encoded3, encoded4;\n if (base64[base64.length - 1] === \"=\") {\n bufferLength--;\n if (base64[base64.length - 2] === \"=\") {\n bufferLength--;\n }\n }\n var arraybuffer = new ArrayBuffer(bufferLength), bytes = new Uint8Array(arraybuffer);\n for (i2 = 0; i2 < len; i2 += 4) {\n encoded1 = lookup[base64.charCodeAt(i2)];\n encoded2 = lookup[base64.charCodeAt(i2 + 1)];\n encoded3 = lookup[base64.charCodeAt(i2 + 2)];\n encoded4 = lookup[base64.charCodeAt(i2 + 3)];\n bytes[p++] = encoded1 << 2 | encoded2 >> 4;\n bytes[p++] = (encoded2 & 15) << 4 | encoded3 >> 2;\n bytes[p++] = (encoded3 & 3) << 6 | encoded4 & 63;\n }\n return arraybuffer;\n };\n exports2.decode = decode;\n exports2.encode = encode;\n Object.defineProperty(exports2, \"__esModule\", { value: true });\n });\n }\n });\n\n // src/lib/is_plain_object.js\n var require_is_plain_object = __commonJS({\n \"src/lib/is_plain_object.js\"(exports, module) {\n \"use strict\";\n module.exports = function isPlainObject(obj) {\n if (window && window.process && window.process.versions) {\n return Object.prototype.toString.call(obj) === \"[object Object]\";\n }\n return Object.prototype.toString.call(obj) === \"[object Object]\" && Object.getPrototypeOf(obj).hasOwnProperty(\"hasOwnProperty\");\n };\n }\n });\n\n // src/lib/array.js\n var require_array = __commonJS({\n \"src/lib/array.js\"(exports) {\n \"use strict\";\n var b64decode = require_base64_arraybuffer_umd().decode;\n var isPlainObject = require_is_plain_object();\n var isArray = Array.isArray;\n var ab = ArrayBuffer;\n var dv = DataView;\n function isTypedArray(a) {\n return ab.isView(a) && !(a instanceof dv);\n }\n exports.isTypedArray = isTypedArray;\n function isArrayOrTypedArray(a) {\n return isArray(a) || isTypedArray(a);\n }\n exports.isArrayOrTypedArray = isArrayOrTypedArray;\n function isArray1D(a) {\n return !isArrayOrTypedArray(a[0]);\n }\n exports.isArray1D = isArray1D;\n exports.ensureArray = function(out, n) {\n if (!isArray(out)) out = [];\n out.length = n;\n return out;\n };\n var typedArrays = {\n u1c: typeof Uint8ClampedArray === \"undefined\" ? void 0 : Uint8ClampedArray,\n // not supported in numpy?\n i1: typeof Int8Array === \"undefined\" ? void 0 : Int8Array,\n u1: typeof Uint8Array === \"undefined\" ? void 0 : Uint8Array,\n i2: typeof Int16Array === \"undefined\" ? void 0 : Int16Array,\n u2: typeof Uint16Array === \"undefined\" ? void 0 : Uint16Array,\n i4: typeof Int32Array === \"undefined\" ? void 0 : Int32Array,\n u4: typeof Uint32Array === \"undefined\" ? void 0 : Uint32Array,\n f4: typeof Float32Array === \"undefined\" ? void 0 : Float32Array,\n f8: typeof Float64Array === \"undefined\" ? void 0 : Float64Array\n /* TODO: potentially add Big Int\n \n i8: typeof BigInt64Array === 'undefined' ? undefined :\n BigInt64Array,\n \n u8: typeof BigUint64Array === 'undefined' ? undefined :\n BigUint64Array,\n */\n };\n typedArrays.uint8c = typedArrays.u1c;\n typedArrays.uint8 = typedArrays.u1;\n typedArrays.int8 = typedArrays.i1;\n typedArrays.uint16 = typedArrays.u2;\n typedArrays.int16 = typedArrays.i2;\n typedArrays.uint32 = typedArrays.u4;\n typedArrays.int32 = typedArrays.i4;\n typedArrays.float32 = typedArrays.f4;\n typedArrays.float64 = typedArrays.f8;\n function isArrayBuffer(a) {\n return a.constructor === ArrayBuffer;\n }\n exports.isArrayBuffer = isArrayBuffer;\n exports.decodeTypedArraySpec = function(vIn) {\n var out = [];\n var v = coerceTypedArraySpec(vIn);\n var dtype = v.dtype;\n var T = typedArrays[dtype];\n if (!T) throw new Error('Error in dtype: \"' + dtype + '\"');\n var BYTES_PER_ELEMENT = T.BYTES_PER_ELEMENT;\n var buffer = v.bdata;\n if (!isArrayBuffer(buffer)) {\n buffer = b64decode(buffer);\n }\n var shape = v.shape === void 0 ? (\n // detect 1-d length\n [buffer.byteLength / BYTES_PER_ELEMENT]\n ) : (\n // convert number to string and split to array\n (\"\" + v.shape).split(\",\")\n );\n shape.reverse();\n var ndim = shape.length;\n var nj, j;\n var ni = +shape[0];\n var rowBytes = BYTES_PER_ELEMENT * ni;\n var pos = 0;\n if (ndim === 1) {\n out = new T(buffer);\n } else if (ndim === 2) {\n nj = +shape[1];\n for (j = 0; j < nj; j++) {\n out[j] = new T(buffer, pos, ni);\n pos += rowBytes;\n }\n } else if (ndim === 3) {\n nj = +shape[1];\n var nk = +shape[2];\n for (var k = 0; k < nk; k++) {\n out[k] = [];\n for (j = 0; j < nj; j++) {\n out[k][j] = new T(buffer, pos, ni);\n pos += rowBytes;\n }\n }\n } else {\n throw new Error(\"ndim: \" + ndim + 'is not supported with the shape:\"' + v.shape + '\"');\n }\n out.bdata = v.bdata;\n out.dtype = v.dtype;\n out.shape = shape.reverse().join(\",\");\n vIn._inputArray = out;\n return out;\n };\n exports.isTypedArraySpec = function(v) {\n return isPlainObject(v) && v.hasOwnProperty(\"dtype\") && typeof v.dtype === \"string\" && v.hasOwnProperty(\"bdata\") && (typeof v.bdata === \"string\" || isArrayBuffer(v.bdata)) && (v.shape === void 0 || v.hasOwnProperty(\"shape\") && (typeof v.shape === \"string\" || typeof v.shape === \"number\"));\n };\n function coerceTypedArraySpec(v) {\n return {\n bdata: v.bdata,\n dtype: v.dtype,\n shape: v.shape\n };\n }\n exports.concat = function() {\n var args = [];\n var allArray = true;\n var totalLen = 0;\n var _constructor, arg0, i, argi, posi, leni, out, j;\n for (i = 0; i < arguments.length; i++) {\n argi = arguments[i];\n leni = argi.length;\n if (leni) {\n if (arg0) args.push(argi);\n else {\n arg0 = argi;\n posi = leni;\n }\n if (isArray(argi)) {\n _constructor = false;\n } else {\n allArray = false;\n if (!totalLen) {\n _constructor = argi.constructor;\n } else if (_constructor !== argi.constructor) {\n _constructor = false;\n }\n }\n totalLen += leni;\n }\n }\n if (!totalLen) return [];\n if (!args.length) return arg0;\n if (allArray) return arg0.concat.apply(arg0, args);\n if (_constructor) {\n out = new _constructor(totalLen);\n out.set(arg0);\n for (i = 0; i < args.length; i++) {\n argi = args[i];\n out.set(argi, posi);\n posi += argi.length;\n }\n return out;\n }\n out = new Array(totalLen);\n for (j = 0; j < arg0.length; j++) out[j] = arg0[j];\n for (i = 0; i < args.length; i++) {\n argi = args[i];\n for (j = 0; j < argi.length; j++) out[posi + j] = argi[j];\n posi += j;\n }\n return out;\n };\n exports.maxRowLength = function(z) {\n return _rowLength(z, Math.max, 0);\n };\n exports.minRowLength = function(z) {\n return _rowLength(z, Math.min, Infinity);\n };\n function _rowLength(z, fn, len0) {\n if (isArrayOrTypedArray(z)) {\n if (isArrayOrTypedArray(z[0])) {\n var len = len0;\n for (var i = 0; i < z.length; i++) {\n len = fn(len, z[i].length);\n }\n return len;\n } else {\n return z.length;\n }\n }\n return 0;\n }\n }\n });\n\n // src/lib/nested_property.js\n var require_nested_property = __commonJS({\n \"src/lib/nested_property.js\"(exports, module) {\n \"use strict\";\n var isNumeric = require_fast_isnumeric();\n var isArrayOrTypedArray = require_array().isArrayOrTypedArray;\n module.exports = function nestedProperty(container, propStr) {\n if (isNumeric(propStr)) propStr = String(propStr);\n else if (typeof propStr !== \"string\" || propStr.substr(propStr.length - 4) === \"[-1]\") {\n throw \"bad property string\";\n }\n var propParts = propStr.split(\".\");\n var indexed;\n var indices;\n var i, j;\n for (j = 0; j < propParts.length; j++) {\n if (String(propParts[j]).slice(0, 2) === \"__\") {\n throw \"bad property string\";\n }\n }\n j = 0;\n while (j < propParts.length) {\n indexed = String(propParts[j]).match(/^([^\\[\\]]*)((\\[\\-?[0-9]*\\])+)$/);\n if (indexed) {\n if (indexed[1]) propParts[j] = indexed[1];\n else if (j === 0) propParts.splice(0, 1);\n else throw \"bad property string\";\n indices = indexed[2].substr(1, indexed[2].length - 2).split(\"][\");\n for (i = 0; i < indices.length; i++) {\n j++;\n propParts.splice(j, 0, Number(indices[i]));\n }\n }\n j++;\n }\n if (typeof container !== \"object\") {\n return badContainer(container, propStr, propParts);\n }\n return {\n set: npSet(container, propParts, propStr),\n get: npGet(container, propParts),\n astr: propStr,\n parts: propParts,\n obj: container\n };\n };\n function npGet(cont, parts) {\n return function() {\n var curCont = cont;\n var curPart;\n var allSame;\n var out;\n var i;\n var j;\n for (i = 0; i < parts.length - 1; i++) {\n curPart = parts[i];\n if (curPart === -1) {\n allSame = true;\n out = [];\n for (j = 0; j < curCont.length; j++) {\n out[j] = npGet(curCont[j], parts.slice(i + 1))();\n if (out[j] !== out[0]) allSame = false;\n }\n return allSame ? out[0] : out;\n }\n if (typeof curPart === \"number\" && !isArrayOrTypedArray(curCont)) {\n return void 0;\n }\n curCont = curCont[curPart];\n if (typeof curCont !== \"object\" || curCont === null) {\n return void 0;\n }\n }\n if (typeof curCont !== \"object\" || curCont === null) return void 0;\n out = curCont[parts[i]];\n if (out === null) return void 0;\n return out;\n };\n }\n var ARGS_PATTERN = /(^|\\.)args\\[/;\n function isDeletable(val, propStr) {\n return val === void 0 || val === null && !propStr.match(ARGS_PATTERN);\n }\n function npSet(cont, parts, propStr) {\n return function(val) {\n var curCont = cont;\n var propPart = \"\";\n var containerLevels = [[cont, propPart]];\n var toDelete = isDeletable(val, propStr);\n var curPart;\n var i;\n for (i = 0; i < parts.length - 1; i++) {\n curPart = parts[i];\n if (typeof curPart === \"number\" && !isArrayOrTypedArray(curCont)) {\n throw \"array index but container is not an array\";\n }\n if (curPart === -1) {\n toDelete = !setArrayAll(curCont, parts.slice(i + 1), val, propStr);\n if (toDelete) break;\n else return;\n }\n if (!checkNewContainer(curCont, curPart, parts[i + 1], toDelete)) {\n break;\n }\n curCont = curCont[curPart];\n if (typeof curCont !== \"object\" || curCont === null) {\n throw \"container is not an object\";\n }\n propPart = joinPropStr(propPart, curPart);\n containerLevels.push([curCont, propPart]);\n }\n if (toDelete) {\n if (i === parts.length - 1) {\n delete curCont[parts[i]];\n if (Array.isArray(curCont) && +parts[i] === curCont.length - 1) {\n while (curCont.length && curCont[curCont.length - 1] === void 0) {\n curCont.pop();\n }\n }\n }\n } else curCont[parts[i]] = val;\n };\n }\n function joinPropStr(propStr, newPart) {\n var toAdd = newPart;\n if (isNumeric(newPart)) toAdd = \"[\" + newPart + \"]\";\n else if (propStr) toAdd = \".\" + newPart;\n return propStr + toAdd;\n }\n function setArrayAll(containerArray, innerParts, val, propStr) {\n var arrayVal = isArrayOrTypedArray(val);\n var allSet = true;\n var thisVal = val;\n var thisPropStr = propStr.replace(\"-1\", 0);\n var deleteThis = arrayVal ? false : isDeletable(val, thisPropStr);\n var firstPart = innerParts[0];\n var i;\n for (i = 0; i < containerArray.length; i++) {\n thisPropStr = propStr.replace(\"-1\", i);\n if (arrayVal) {\n thisVal = val[i % val.length];\n deleteThis = isDeletable(thisVal, thisPropStr);\n }\n if (deleteThis) allSet = false;\n if (!checkNewContainer(containerArray, i, firstPart, deleteThis)) {\n continue;\n }\n npSet(containerArray[i], innerParts, propStr.replace(\"-1\", i))(thisVal);\n }\n return allSet;\n }\n function checkNewContainer(container, part, nextPart, toDelete) {\n if (container[part] === void 0) {\n if (toDelete) return false;\n if (typeof nextPart === \"number\") container[part] = [];\n else container[part] = {};\n }\n return true;\n }\n function badContainer(container, propStr, propParts) {\n return {\n set: function() {\n throw \"bad container\";\n },\n get: function() {\n },\n astr: propStr,\n parts: propParts,\n obj: container\n };\n }\n }\n });\n\n // src/lib/keyed_container.js\n var require_keyed_container = __commonJS({\n \"src/lib/keyed_container.js\"(exports, module) {\n \"use strict\";\n var nestedProperty = require_nested_property();\n var SIMPLE_PROPERTY_REGEX = /^\\w*$/;\n var NONE = 0;\n var NAME = 1;\n var VALUE = 2;\n var BOTH = 3;\n var UNSET = 4;\n module.exports = function keyedContainer(baseObj, path, keyName, valueName) {\n keyName = keyName || \"name\";\n valueName = valueName || \"value\";\n var i, arr, baseProp;\n var changeTypes = {};\n if (path && path.length) {\n baseProp = nestedProperty(baseObj, path);\n arr = baseProp.get();\n } else {\n arr = baseObj;\n }\n path = path || \"\";\n var indexLookup = {};\n if (arr) {\n for (i = 0; i < arr.length; i++) {\n indexLookup[arr[i][keyName]] = i;\n }\n }\n var isSimpleValueProp = SIMPLE_PROPERTY_REGEX.test(valueName);\n var obj = {\n set: function(name, value) {\n var changeType = value === null ? UNSET : NONE;\n if (!arr) {\n if (!baseProp || changeType === UNSET) return;\n arr = [];\n baseProp.set(arr);\n }\n var idx = indexLookup[name];\n if (idx === void 0) {\n if (changeType === UNSET) return;\n changeType = changeType | BOTH;\n idx = arr.length;\n indexLookup[name] = idx;\n } else if (value !== (isSimpleValueProp ? arr[idx][valueName] : nestedProperty(arr[idx], valueName).get())) {\n changeType = changeType | VALUE;\n }\n var newValue = arr[idx] = arr[idx] || {};\n newValue[keyName] = name;\n if (isSimpleValueProp) {\n newValue[valueName] = value;\n } else {\n nestedProperty(newValue, valueName).set(value);\n }\n if (value !== null) {\n changeType = changeType & ~UNSET;\n }\n changeTypes[idx] = changeTypes[idx] | changeType;\n return obj;\n },\n get: function(name) {\n if (!arr) return;\n var idx = indexLookup[name];\n if (idx === void 0) {\n return void 0;\n } else if (isSimpleValueProp) {\n return arr[idx][valueName];\n } else {\n return nestedProperty(arr[idx], valueName).get();\n }\n },\n rename: function(name, newName) {\n var idx = indexLookup[name];\n if (idx === void 0) return obj;\n changeTypes[idx] = changeTypes[idx] | NAME;\n indexLookup[newName] = idx;\n delete indexLookup[name];\n arr[idx][keyName] = newName;\n return obj;\n },\n remove: function(name) {\n var idx = indexLookup[name];\n if (idx === void 0) return obj;\n var object = arr[idx];\n if (Object.keys(object).length > 2) {\n changeTypes[idx] = changeTypes[idx] | VALUE;\n return obj.set(name, null);\n }\n if (isSimpleValueProp) {\n for (i = idx; i < arr.length; i++) {\n changeTypes[i] = changeTypes[i] | BOTH;\n }\n for (i = idx; i < arr.length; i++) {\n indexLookup[arr[i][keyName]]--;\n }\n arr.splice(idx, 1);\n delete indexLookup[name];\n } else {\n nestedProperty(object, valueName).set(null);\n changeTypes[idx] = changeTypes[idx] | VALUE | UNSET;\n }\n return obj;\n },\n constructUpdate: function() {\n var astr, idx;\n var update = {};\n var changed = Object.keys(changeTypes);\n for (var i2 = 0; i2 < changed.length; i2++) {\n idx = changed[i2];\n astr = path + \"[\" + idx + \"]\";\n if (arr[idx]) {\n if (changeTypes[idx] & NAME) {\n update[astr + \".\" + keyName] = arr[idx][keyName];\n }\n if (changeTypes[idx] & VALUE) {\n if (isSimpleValueProp) {\n update[astr + \".\" + valueName] = changeTypes[idx] & UNSET ? null : arr[idx][valueName];\n } else {\n update[astr + \".\" + valueName] = changeTypes[idx] & UNSET ? null : nestedProperty(arr[idx], valueName).get();\n }\n }\n } else {\n update[astr] = null;\n }\n }\n return update;\n }\n };\n return obj;\n };\n }\n });\n\n // src/lib/relative_attr.js\n var require_relative_attr = __commonJS({\n \"src/lib/relative_attr.js\"(exports, module) {\n \"use strict\";\n var ASCEND = /^(.*)(\\.[^\\.\\[\\]]+|\\[\\d\\])$/;\n var SIMPLEATTR = /^[^\\.\\[\\]]+$/;\n module.exports = function(baseAttr, relativeAttr) {\n while (relativeAttr) {\n var match = baseAttr.match(ASCEND);\n if (match) baseAttr = match[1];\n else if (baseAttr.match(SIMPLEATTR)) baseAttr = \"\";\n else throw new Error(\"bad relativeAttr call:\" + [baseAttr, relativeAttr]);\n if (relativeAttr.charAt(0) === \"^\") relativeAttr = relativeAttr.slice(1);\n else break;\n }\n if (baseAttr && relativeAttr.charAt(0) !== \"[\") {\n return baseAttr + \".\" + relativeAttr;\n }\n return baseAttr + relativeAttr;\n };\n }\n });\n\n // src/lib/to_log_range.js\n var require_to_log_range = __commonJS({\n \"src/lib/to_log_range.js\"(exports, module) {\n \"use strict\";\n var isNumeric = require_fast_isnumeric();\n module.exports = function toLogRange(val, range) {\n if (val > 0) return Math.log(val) / Math.LN10;\n var newVal = Math.log(Math.min(range[0], range[1])) / Math.LN10;\n if (!isNumeric(newVal)) newVal = Math.log(Math.max(range[0], range[1])) / Math.LN10 - 6;\n return newVal;\n };\n }\n });\n\n // src/lib/relink_private.js\n var require_relink_private = __commonJS({\n \"src/lib/relink_private.js\"(exports, module) {\n \"use strict\";\n var isArrayOrTypedArray = require_array().isArrayOrTypedArray;\n var isPlainObject = require_is_plain_object();\n module.exports = function relinkPrivateKeys(toContainer, fromContainer) {\n for (var k in fromContainer) {\n var fromVal = fromContainer[k];\n var toVal = toContainer[k];\n if (toVal === fromVal) continue;\n if (k.charAt(0) === \"_\" || typeof fromVal === \"function\") {\n if (k in toContainer) continue;\n toContainer[k] = fromVal;\n } else if (isArrayOrTypedArray(fromVal) && isArrayOrTypedArray(toVal) && isPlainObject(fromVal[0])) {\n if (k === \"customdata\" || k === \"ids\") continue;\n var minLen = Math.min(fromVal.length, toVal.length);\n for (var j = 0; j < minLen; j++) {\n if (toVal[j] !== fromVal[j] && isPlainObject(fromVal[j]) && isPlainObject(toVal[j])) {\n relinkPrivateKeys(toVal[j], fromVal[j]);\n }\n }\n } else if (isPlainObject(fromVal) && isPlainObject(toVal)) {\n relinkPrivateKeys(toVal, fromVal);\n if (!Object.keys(toVal).length) delete toContainer[k];\n }\n }\n };\n }\n });\n\n // src/lib/mod.js\n var require_mod = __commonJS({\n \"src/lib/mod.js\"(exports, module) {\n \"use strict\";\n function mod(v, d) {\n var out = v % d;\n return out < 0 ? out + d : out;\n }\n function modHalf(v, d) {\n return Math.abs(v) > d / 2 ? v - Math.round(v / d) * d : v;\n }\n module.exports = {\n mod,\n modHalf\n };\n }\n });\n\n // node_modules/tinycolor2/tinycolor.js\n var require_tinycolor = __commonJS({\n \"node_modules/tinycolor2/tinycolor.js\"(exports, module) {\n (function(Math2) {\n var trimLeft = /^\\s+/, trimRight = /\\s+$/, tinyCounter = 0, mathRound = Math2.round, mathMin = Math2.min, mathMax = Math2.max, mathRandom = Math2.random;\n function tinycolor(color, opts) {\n color = color ? color : \"\";\n opts = opts || {};\n if (color instanceof tinycolor) {\n return color;\n }\n if (!(this instanceof tinycolor)) {\n return new tinycolor(color, opts);\n }\n var rgb = inputToRGB(color);\n this._originalInput = color, this._r = rgb.r, this._g = rgb.g, this._b = rgb.b, this._a = rgb.a, this._roundA = mathRound(100 * this._a) / 100, this._format = opts.format || rgb.format;\n this._gradientType = opts.gradientType;\n if (this._r < 1) {\n this._r = mathRound(this._r);\n }\n if (this._g < 1) {\n this._g = mathRound(this._g);\n }\n if (this._b < 1) {\n this._b = mathRound(this._b);\n }\n this._ok = rgb.ok;\n this._tc_id = tinyCounter++;\n }\n tinycolor.prototype = {\n isDark: function() {\n return this.getBrightness() < 128;\n },\n isLight: function() {\n return !this.isDark();\n },\n isValid: function() {\n return this._ok;\n },\n getOriginalInput: function() {\n return this._originalInput;\n },\n getFormat: function() {\n return this._format;\n },\n getAlpha: function() {\n return this._a;\n },\n getBrightness: function() {\n var rgb = this.toRgb();\n return (rgb.r * 299 + rgb.g * 587 + rgb.b * 114) / 1e3;\n },\n getLuminance: function() {\n var rgb = this.toRgb();\n var RsRGB, GsRGB, BsRGB, R, G, B;\n RsRGB = rgb.r / 255;\n GsRGB = rgb.g / 255;\n BsRGB = rgb.b / 255;\n if (RsRGB <= 0.03928) {\n R = RsRGB / 12.92;\n } else {\n R = Math2.pow((RsRGB + 0.055) / 1.055, 2.4);\n }\n if (GsRGB <= 0.03928) {\n G = GsRGB / 12.92;\n } else {\n G = Math2.pow((GsRGB + 0.055) / 1.055, 2.4);\n }\n if (BsRGB <= 0.03928) {\n B = BsRGB / 12.92;\n } else {\n B = Math2.pow((BsRGB + 0.055) / 1.055, 2.4);\n }\n return 0.2126 * R + 0.7152 * G + 0.0722 * B;\n },\n setAlpha: function(value) {\n this._a = boundAlpha(value);\n this._roundA = mathRound(100 * this._a) / 100;\n return this;\n },\n toHsv: function() {\n var hsv = rgbToHsv(this._r, this._g, this._b);\n return { h: hsv.h * 360, s: hsv.s, v: hsv.v, a: this._a };\n },\n toHsvString: function() {\n var hsv = rgbToHsv(this._r, this._g, this._b);\n var h = mathRound(hsv.h * 360), s = mathRound(hsv.s * 100), v = mathRound(hsv.v * 100);\n return this._a == 1 ? \"hsv(\" + h + \", \" + s + \"%, \" + v + \"%)\" : \"hsva(\" + h + \", \" + s + \"%, \" + v + \"%, \" + this._roundA + \")\";\n },\n toHsl: function() {\n var hsl = rgbToHsl(this._r, this._g, this._b);\n return { h: hsl.h * 360, s: hsl.s, l: hsl.l, a: this._a };\n },\n toHslString: function() {\n var hsl = rgbToHsl(this._r, this._g, this._b);\n var h = mathRound(hsl.h * 360), s = mathRound(hsl.s * 100), l = mathRound(hsl.l * 100);\n return this._a == 1 ? \"hsl(\" + h + \", \" + s + \"%, \" + l + \"%)\" : \"hsla(\" + h + \", \" + s + \"%, \" + l + \"%, \" + this._roundA + \")\";\n },\n toHex: function(allow3Char) {\n return rgbToHex(this._r, this._g, this._b, allow3Char);\n },\n toHexString: function(allow3Char) {\n return \"#\" + this.toHex(allow3Char);\n },\n toHex8: function(allow4Char) {\n return rgbaToHex(this._r, this._g, this._b, this._a, allow4Char);\n },\n toHex8String: function(allow4Char) {\n return \"#\" + this.toHex8(allow4Char);\n },\n toRgb: function() {\n return { r: mathRound(this._r), g: mathRound(this._g), b: mathRound(this._b), a: this._a };\n },\n toRgbString: function() {\n return this._a == 1 ? \"rgb(\" + mathRound(this._r) + \", \" + mathRound(this._g) + \", \" + mathRound(this._b) + \")\" : \"rgba(\" + mathRound(this._r) + \", \" + mathRound(this._g) + \", \" + mathRound(this._b) + \", \" + this._roundA + \")\";\n },\n toPercentageRgb: function() {\n return { r: mathRound(bound01(this._r, 255) * 100) + \"%\", g: mathRound(bound01(this._g, 255) * 100) + \"%\", b: mathRound(bound01(this._b, 255) * 100) + \"%\", a: this._a };\n },\n toPercentageRgbString: function() {\n return this._a == 1 ? \"rgb(\" + mathRound(bound01(this._r, 255) * 100) + \"%, \" + mathRound(bound01(this._g, 255) * 100) + \"%, \" + mathRound(bound01(this._b, 255) * 100) + \"%)\" : \"rgba(\" + mathRound(bound01(this._r, 255) * 100) + \"%, \" + mathRound(bound01(this._g, 255) * 100) + \"%, \" + mathRound(bound01(this._b, 255) * 100) + \"%, \" + this._roundA + \")\";\n },\n toName: function() {\n if (this._a === 0) {\n return \"transparent\";\n }\n if (this._a < 1) {\n return false;\n }\n return hexNames[rgbToHex(this._r, this._g, this._b, true)] || false;\n },\n toFilter: function(secondColor) {\n var hex8String = \"#\" + rgbaToArgbHex(this._r, this._g, this._b, this._a);\n var secondHex8String = hex8String;\n var gradientType = this._gradientType ? \"GradientType = 1, \" : \"\";\n if (secondColor) {\n var s = tinycolor(secondColor);\n secondHex8String = \"#\" + rgbaToArgbHex(s._r, s._g, s._b, s._a);\n }\n return \"progid:DXImageTransform.Microsoft.gradient(\" + gradientType + \"startColorstr=\" + hex8String + \",endColorstr=\" + secondHex8String + \")\";\n },\n toString: function(format) {\n var formatSet = !!format;\n format = format || this._format;\n var formattedString = false;\n var hasAlpha = this._a < 1 && this._a >= 0;\n var needsAlphaFormat = !formatSet && hasAlpha && (format === \"hex\" || format === \"hex6\" || format === \"hex3\" || format === \"hex4\" || format === \"hex8\" || format === \"name\");\n if (needsAlphaFormat) {\n if (format === \"name\" && this._a === 0) {\n return this.toName();\n }\n return this.toRgbString();\n }\n if (format === \"rgb\") {\n formattedString = this.toRgbString();\n }\n if (format === \"prgb\") {\n formattedString = this.toPercentageRgbString();\n }\n if (format === \"hex\" || format === \"hex6\") {\n formattedString = this.toHexString();\n }\n if (format === \"hex3\") {\n formattedString = this.toHexString(true);\n }\n if (format === \"hex4\") {\n formattedString = this.toHex8String(true);\n }\n if (format === \"hex8\") {\n formattedString = this.toHex8String();\n }\n if (format === \"name\") {\n formattedString = this.toName();\n }\n if (format === \"hsl\") {\n formattedString = this.toHslString();\n }\n if (format === \"hsv\") {\n formattedString = this.toHsvString();\n }\n return formattedString || this.toHexString();\n },\n clone: function() {\n return tinycolor(this.toString());\n },\n _applyModification: function(fn, args) {\n var color = fn.apply(null, [this].concat([].slice.call(args)));\n this._r = color._r;\n this._g = color._g;\n this._b = color._b;\n this.setAlpha(color._a);\n return this;\n },\n lighten: function() {\n return this._applyModification(lighten, arguments);\n },\n brighten: function() {\n return this._applyModification(brighten, arguments);\n },\n darken: function() {\n return this._applyModification(darken, arguments);\n },\n desaturate: function() {\n return this._applyModification(desaturate, arguments);\n },\n saturate: function() {\n return this._applyModification(saturate, arguments);\n },\n greyscale: function() {\n return this._applyModification(greyscale, arguments);\n },\n spin: function() {\n return this._applyModification(spin, arguments);\n },\n _applyCombination: function(fn, args) {\n return fn.apply(null, [this].concat([].slice.call(args)));\n },\n analogous: function() {\n return this._applyCombination(analogous, arguments);\n },\n complement: function() {\n return this._applyCombination(complement, arguments);\n },\n monochromatic: function() {\n return this._applyCombination(monochromatic, arguments);\n },\n splitcomplement: function() {\n return this._applyCombination(splitcomplement, arguments);\n },\n triad: function() {\n return this._applyCombination(triad, arguments);\n },\n tetrad: function() {\n return this._applyCombination(tetrad, arguments);\n }\n };\n tinycolor.fromRatio = function(color, opts) {\n if (typeof color == \"object\") {\n var newColor = {};\n for (var i in color) {\n if (color.hasOwnProperty(i)) {\n if (i === \"a\") {\n newColor[i] = color[i];\n } else {\n newColor[i] = convertToPercentage(color[i]);\n }\n }\n }\n color = newColor;\n }\n return tinycolor(color, opts);\n };\n function inputToRGB(color) {\n var rgb = { r: 0, g: 0, b: 0 };\n var a = 1;\n var s = null;\n var v = null;\n var l = null;\n var ok = false;\n var format = false;\n if (typeof color == \"string\") {\n color = stringInputToObject(color);\n }\n if (typeof color == \"object\") {\n if (isValidCSSUnit(color.r) && isValidCSSUnit(color.g) && isValidCSSUnit(color.b)) {\n rgb = rgbToRgb(color.r, color.g, color.b);\n ok = true;\n format = String(color.r).substr(-1) === \"%\" ? \"prgb\" : \"rgb\";\n } else if (isValidCSSUnit(color.h) && isValidCSSUnit(color.s) && isValidCSSUnit(color.v)) {\n s = convertToPercentage(color.s);\n v = convertToPercentage(color.v);\n rgb = hsvToRgb(color.h, s, v);\n ok = true;\n format = \"hsv\";\n } else if (isValidCSSUnit(color.h) && isValidCSSUnit(color.s) && isValidCSSUnit(color.l)) {\n s = convertToPercentage(color.s);\n l = convertToPercentage(color.l);\n rgb = hslToRgb(color.h, s, l);\n ok = true;\n format = \"hsl\";\n }\n if (color.hasOwnProperty(\"a\")) {\n a = color.a;\n }\n }\n a = boundAlpha(a);\n return {\n ok,\n format: color.format || format,\n r: mathMin(255, mathMax(rgb.r, 0)),\n g: mathMin(255, mathMax(rgb.g, 0)),\n b: mathMin(255, mathMax(rgb.b, 0)),\n a\n };\n }\n function rgbToRgb(r, g, b) {\n return {\n r: bound01(r, 255) * 255,\n g: bound01(g, 255) * 255,\n b: bound01(b, 255) * 255\n };\n }\n function rgbToHsl(r, g, b) {\n r = bound01(r, 255);\n g = bound01(g, 255);\n b = bound01(b, 255);\n var max = mathMax(r, g, b), min = mathMin(r, g, b);\n var h, s, l = (max + min) / 2;\n if (max == min) {\n h = s = 0;\n } else {\n var d = max - min;\n s = l > 0.5 ? d / (2 - max - min) : d / (max + min);\n switch (max) {\n case r:\n h = (g - b) / d + (g < b ? 6 : 0);\n break;\n case g:\n h = (b - r) / d + 2;\n break;\n case b:\n h = (r - g) / d + 4;\n break;\n }\n h /= 6;\n }\n return { h, s, l };\n }\n function hslToRgb(h, s, l) {\n var r, g, b;\n h = bound01(h, 360);\n s = bound01(s, 100);\n l = bound01(l, 100);\n function hue2rgb(p2, q2, t) {\n if (t < 0) t += 1;\n if (t > 1) t -= 1;\n if (t < 1 / 6) return p2 + (q2 - p2) * 6 * t;\n if (t < 1 / 2) return q2;\n if (t < 2 / 3) return p2 + (q2 - p2) * (2 / 3 - t) * 6;\n return p2;\n }\n if (s === 0) {\n r = g = b = l;\n } else {\n var q = l < 0.5 ? l * (1 + s) : l + s - l * s;\n var p = 2 * l - q;\n r = hue2rgb(p, q, h + 1 / 3);\n g = hue2rgb(p, q, h);\n b = hue2rgb(p, q, h - 1 / 3);\n }\n return { r: r * 255, g: g * 255, b: b * 255 };\n }\n function rgbToHsv(r, g, b) {\n r = bound01(r, 255);\n g = bound01(g, 255);\n b = bound01(b, 255);\n var max = mathMax(r, g, b), min = mathMin(r, g, b);\n var h, s, v = max;\n var d = max - min;\n s = max === 0 ? 0 : d / max;\n if (max == min) {\n h = 0;\n } else {\n switch (max) {\n case r:\n h = (g - b) / d + (g < b ? 6 : 0);\n break;\n case g:\n h = (b - r) / d + 2;\n break;\n case b:\n h = (r - g) / d + 4;\n break;\n }\n h /= 6;\n }\n return { h, s, v };\n }\n function hsvToRgb(h, s, v) {\n h = bound01(h, 360) * 6;\n s = bound01(s, 100);\n v = bound01(v, 100);\n var i = Math2.floor(h), f = h - i, p = v * (1 - s), q = v * (1 - f * s), t = v * (1 - (1 - f) * s), mod = i % 6, r = [v, q, p, p, t, v][mod], g = [t, v, v, q, p, p][mod], b = [p, p, t, v, v, q][mod];\n return { r: r * 255, g: g * 255, b: b * 255 };\n }\n function rgbToHex(r, g, b, allow3Char) {\n var hex = [\n pad2(mathRound(r).toString(16)),\n pad2(mathRound(g).toString(16)),\n pad2(mathRound(b).toString(16))\n ];\n if (allow3Char && hex[0].charAt(0) == hex[0].charAt(1) && hex[1].charAt(0) == hex[1].charAt(1) && hex[2].charAt(0) == hex[2].charAt(1)) {\n return hex[0].charAt(0) + hex[1].charAt(0) + hex[2].charAt(0);\n }\n return hex.join(\"\");\n }\n function rgbaToHex(r, g, b, a, allow4Char) {\n var hex = [\n pad2(mathRound(r).toString(16)),\n pad2(mathRound(g).toString(16)),\n pad2(mathRound(b).toString(16)),\n pad2(convertDecimalToHex(a))\n ];\n if (allow4Char && hex[0].charAt(0) == hex[0].charAt(1) && hex[1].charAt(0) == hex[1].charAt(1) && hex[2].charAt(0) == hex[2].charAt(1) && hex[3].charAt(0) == hex[3].charAt(1)) {\n return hex[0].charAt(0) + hex[1].charAt(0) + hex[2].charAt(0) + hex[3].charAt(0);\n }\n return hex.join(\"\");\n }\n function rgbaToArgbHex(r, g, b, a) {\n var hex = [\n pad2(convertDecimalToHex(a)),\n pad2(mathRound(r).toString(16)),\n pad2(mathRound(g).toString(16)),\n pad2(mathRound(b).toString(16))\n ];\n return hex.join(\"\");\n }\n tinycolor.equals = function(color1, color2) {\n if (!color1 || !color2) {\n return false;\n }\n return tinycolor(color1).toRgbString() == tinycolor(color2).toRgbString();\n };\n tinycolor.random = function() {\n return tinycolor.fromRatio({\n r: mathRandom(),\n g: mathRandom(),\n b: mathRandom()\n });\n };\n function desaturate(color, amount) {\n amount = amount === 0 ? 0 : amount || 10;\n var hsl = tinycolor(color).toHsl();\n hsl.s -= amount / 100;\n hsl.s = clamp01(hsl.s);\n return tinycolor(hsl);\n }\n function saturate(color, amount) {\n amount = amount === 0 ? 0 : amount || 10;\n var hsl = tinycolor(color).toHsl();\n hsl.s += amount / 100;\n hsl.s = clamp01(hsl.s);\n return tinycolor(hsl);\n }\n function greyscale(color) {\n return tinycolor(color).desaturate(100);\n }\n function lighten(color, amount) {\n amount = amount === 0 ? 0 : amount || 10;\n var hsl = tinycolor(color).toHsl();\n hsl.l += amount / 100;\n hsl.l = clamp01(hsl.l);\n return tinycolor(hsl);\n }\n function brighten(color, amount) {\n amount = amount === 0 ? 0 : amount || 10;\n var rgb = tinycolor(color).toRgb();\n rgb.r = mathMax(0, mathMin(255, rgb.r - mathRound(255 * -(amount / 100))));\n rgb.g = mathMax(0, mathMin(255, rgb.g - mathRound(255 * -(amount / 100))));\n rgb.b = mathMax(0, mathMin(255, rgb.b - mathRound(255 * -(amount / 100))));\n return tinycolor(rgb);\n }\n function darken(color, amount) {\n amount = amount === 0 ? 0 : amount || 10;\n var hsl = tinycolor(color).toHsl();\n hsl.l -= amount / 100;\n hsl.l = clamp01(hsl.l);\n return tinycolor(hsl);\n }\n function spin(color, amount) {\n var hsl = tinycolor(color).toHsl();\n var hue = (hsl.h + amount) % 360;\n hsl.h = hue < 0 ? 360 + hue : hue;\n return tinycolor(hsl);\n }\n function complement(color) {\n var hsl = tinycolor(color).toHsl();\n hsl.h = (hsl.h + 180) % 360;\n return tinycolor(hsl);\n }\n function triad(color) {\n var hsl = tinycolor(color).toHsl();\n var h = hsl.h;\n return [\n tinycolor(color),\n tinycolor({ h: (h + 120) % 360, s: hsl.s, l: hsl.l }),\n tinycolor({ h: (h + 240) % 360, s: hsl.s, l: hsl.l })\n ];\n }\n function tetrad(color) {\n var hsl = tinycolor(color).toHsl();\n var h = hsl.h;\n return [\n tinycolor(color),\n tinycolor({ h: (h + 90) % 360, s: hsl.s, l: hsl.l }),\n tinycolor({ h: (h + 180) % 360, s: hsl.s, l: hsl.l }),\n tinycolor({ h: (h + 270) % 360, s: hsl.s, l: hsl.l })\n ];\n }\n function splitcomplement(color) {\n var hsl = tinycolor(color).toHsl();\n var h = hsl.h;\n return [\n tinycolor(color),\n tinycolor({ h: (h + 72) % 360, s: hsl.s, l: hsl.l }),\n tinycolor({ h: (h + 216) % 360, s: hsl.s, l: hsl.l })\n ];\n }\n function analogous(color, results, slices) {\n results = results || 6;\n slices = slices || 30;\n var hsl = tinycolor(color).toHsl();\n var part = 360 / slices;\n var ret = [tinycolor(color)];\n for (hsl.h = (hsl.h - (part * results >> 1) + 720) % 360; --results; ) {\n hsl.h = (hsl.h + part) % 360;\n ret.push(tinycolor(hsl));\n }\n return ret;\n }\n function monochromatic(color, results) {\n results = results || 6;\n var hsv = tinycolor(color).toHsv();\n var h = hsv.h, s = hsv.s, v = hsv.v;\n var ret = [];\n var modification = 1 / results;\n while (results--) {\n ret.push(tinycolor({ h, s, v }));\n v = (v + modification) % 1;\n }\n return ret;\n }\n tinycolor.mix = function(color1, color2, amount) {\n amount = amount === 0 ? 0 : amount || 50;\n var rgb1 = tinycolor(color1).toRgb();\n var rgb2 = tinycolor(color2).toRgb();\n var p = amount / 100;\n var rgba = {\n r: (rgb2.r - rgb1.r) * p + rgb1.r,\n g: (rgb2.g - rgb1.g) * p + rgb1.g,\n b: (rgb2.b - rgb1.b) * p + rgb1.b,\n a: (rgb2.a - rgb1.a) * p + rgb1.a\n };\n return tinycolor(rgba);\n };\n tinycolor.readability = function(color1, color2) {\n var c1 = tinycolor(color1);\n var c2 = tinycolor(color2);\n return (Math2.max(c1.getLuminance(), c2.getLuminance()) + 0.05) / (Math2.min(c1.getLuminance(), c2.getLuminance()) + 0.05);\n };\n tinycolor.isReadable = function(color1, color2, wcag2) {\n var readability = tinycolor.readability(color1, color2);\n var wcag2Parms, out;\n out = false;\n wcag2Parms = validateWCAG2Parms(wcag2);\n switch (wcag2Parms.level + wcag2Parms.size) {\n case \"AAsmall\":\n case \"AAAlarge\":\n out = readability >= 4.5;\n break;\n case \"AAlarge\":\n out = readability >= 3;\n break;\n case \"AAAsmall\":\n out = readability >= 7;\n break;\n }\n return out;\n };\n tinycolor.mostReadable = function(baseColor, colorList, args) {\n var bestColor = null;\n var bestScore = 0;\n var readability;\n var includeFallbackColors, level, size;\n args = args || {};\n includeFallbackColors = args.includeFallbackColors;\n level = args.level;\n size = args.size;\n for (var i = 0; i < colorList.length; i++) {\n readability = tinycolor.readability(baseColor, colorList[i]);\n if (readability > bestScore) {\n bestScore = readability;\n bestColor = tinycolor(colorList[i]);\n }\n }\n if (tinycolor.isReadable(baseColor, bestColor, { \"level\": level, \"size\": size }) || !includeFallbackColors) {\n return bestColor;\n } else {\n args.includeFallbackColors = false;\n return tinycolor.mostReadable(baseColor, [\"#fff\", \"#000\"], args);\n }\n };\n var names = tinycolor.names = {\n aliceblue: \"f0f8ff\",\n antiquewhite: \"faebd7\",\n aqua: \"0ff\",\n aquamarine: \"7fffd4\",\n azure: \"f0ffff\",\n beige: \"f5f5dc\",\n bisque: \"ffe4c4\",\n black: \"000\",\n blanchedalmond: \"ffebcd\",\n blue: \"00f\",\n blueviolet: \"8a2be2\",\n brown: \"a52a2a\",\n burlywood: \"deb887\",\n burntsienna: \"ea7e5d\",\n cadetblue: \"5f9ea0\",\n chartreuse: \"7fff00\",\n chocolate: \"d2691e\",\n coral: \"ff7f50\",\n cornflowerblue: \"6495ed\",\n cornsilk: \"fff8dc\",\n crimson: \"dc143c\",\n cyan: \"0ff\",\n darkblue: \"00008b\",\n darkcyan: \"008b8b\",\n darkgoldenrod: \"b8860b\",\n darkgray: \"a9a9a9\",\n darkgreen: \"006400\",\n darkgrey: \"a9a9a9\",\n darkkhaki: \"bdb76b\",\n darkmagenta: \"8b008b\",\n darkolivegreen: \"556b2f\",\n darkorange: \"ff8c00\",\n darkorchid: \"9932cc\",\n darkred: \"8b0000\",\n darksalmon: \"e9967a\",\n darkseagreen: \"8fbc8f\",\n darkslateblue: \"483d8b\",\n darkslategray: \"2f4f4f\",\n darkslategrey: \"2f4f4f\",\n darkturquoise: \"00ced1\",\n darkviolet: \"9400d3\",\n deeppink: \"ff1493\",\n deepskyblue: \"00bfff\",\n dimgray: \"696969\",\n dimgrey: \"696969\",\n dodgerblue: \"1e90ff\",\n firebrick: \"b22222\",\n floralwhite: \"fffaf0\",\n forestgreen: \"228b22\",\n fuchsia: \"f0f\",\n gainsboro: \"dcdcdc\",\n ghostwhite: \"f8f8ff\",\n gold: \"ffd700\",\n goldenrod: \"daa520\",\n gray: \"808080\",\n green: \"008000\",\n greenyellow: \"adff2f\",\n grey: \"808080\",\n honeydew: \"f0fff0\",\n hotpink: \"ff69b4\",\n indianred: \"cd5c5c\",\n indigo: \"4b0082\",\n ivory: \"fffff0\",\n khaki: \"f0e68c\",\n lavender: \"e6e6fa\",\n lavenderblush: \"fff0f5\",\n lawngreen: \"7cfc00\",\n lemonchiffon: \"fffacd\",\n lightblue: \"add8e6\",\n lightcoral: \"f08080\",\n lightcyan: \"e0ffff\",\n lightgoldenrodyellow: \"fafad2\",\n lightgray: \"d3d3d3\",\n lightgreen: \"90ee90\",\n lightgrey: \"d3d3d3\",\n lightpink: \"ffb6c1\",\n lightsalmon: \"ffa07a\",\n lightseagreen: \"20b2aa\",\n lightskyblue: \"87cefa\",\n lightslategray: \"789\",\n lightslategrey: \"789\",\n lightsteelblue: \"b0c4de\",\n lightyellow: \"ffffe0\",\n lime: \"0f0\",\n limegreen: \"32cd32\",\n linen: \"faf0e6\",\n magenta: \"f0f\",\n maroon: \"800000\",\n mediumaquamarine: \"66cdaa\",\n mediumblue: \"0000cd\",\n mediumorchid: \"ba55d3\",\n mediumpurple: \"9370db\",\n mediumseagreen: \"3cb371\",\n mediumslateblue: \"7b68ee\",\n mediumspringgreen: \"00fa9a\",\n mediumturquoise: \"48d1cc\",\n mediumvioletred: \"c71585\",\n midnightblue: \"191970\",\n mintcream: \"f5fffa\",\n mistyrose: \"ffe4e1\",\n moccasin: \"ffe4b5\",\n navajowhite: \"ffdead\",\n navy: \"000080\",\n oldlace: \"fdf5e6\",\n olive: \"808000\",\n olivedrab: \"6b8e23\",\n orange: \"ffa500\",\n orangered: \"ff4500\",\n orchid: \"da70d6\",\n palegoldenrod: \"eee8aa\",\n palegreen: \"98fb98\",\n paleturquoise: \"afeeee\",\n palevioletred: \"db7093\",\n papayawhip: \"ffefd5\",\n peachpuff: \"ffdab9\",\n peru: \"cd853f\",\n pink: \"ffc0cb\",\n plum: \"dda0dd\",\n powderblue: \"b0e0e6\",\n purple: \"800080\",\n rebeccapurple: \"663399\",\n red: \"f00\",\n rosybrown: \"bc8f8f\",\n royalblue: \"4169e1\",\n saddlebrown: \"8b4513\",\n salmon: \"fa8072\",\n sandybrown: \"f4a460\",\n seagreen: \"2e8b57\",\n seashell: \"fff5ee\",\n sienna: \"a0522d\",\n silver: \"c0c0c0\",\n skyblue: \"87ceeb\",\n slateblue: \"6a5acd\",\n slategray: \"708090\",\n slategrey: \"708090\",\n snow: \"fffafa\",\n springgreen: \"00ff7f\",\n steelblue: \"4682b4\",\n tan: \"d2b48c\",\n teal: \"008080\",\n thistle: \"d8bfd8\",\n tomato: \"ff6347\",\n turquoise: \"40e0d0\",\n violet: \"ee82ee\",\n wheat: \"f5deb3\",\n white: \"fff\",\n whitesmoke: \"f5f5f5\",\n yellow: \"ff0\",\n yellowgreen: \"9acd32\"\n };\n var hexNames = tinycolor.hexNames = flip(names);\n function flip(o) {\n var flipped = {};\n for (var i in o) {\n if (o.hasOwnProperty(i)) {\n flipped[o[i]] = i;\n }\n }\n return flipped;\n }\n function boundAlpha(a) {\n a = parseFloat(a);\n if (isNaN(a) || a < 0 || a > 1) {\n a = 1;\n }\n return a;\n }\n function bound01(n, max) {\n if (isOnePointZero(n)) {\n n = \"100%\";\n }\n var processPercent = isPercentage(n);\n n = mathMin(max, mathMax(0, parseFloat(n)));\n if (processPercent) {\n n = parseInt(n * max, 10) / 100;\n }\n if (Math2.abs(n - max) < 1e-6) {\n return 1;\n }\n return n % max / parseFloat(max);\n }\n function clamp01(val) {\n return mathMin(1, mathMax(0, val));\n }\n function parseIntFromHex(val) {\n return parseInt(val, 16);\n }\n function isOnePointZero(n) {\n return typeof n == \"string\" && n.indexOf(\".\") != -1 && parseFloat(n) === 1;\n }\n function isPercentage(n) {\n return typeof n === \"string\" && n.indexOf(\"%\") != -1;\n }\n function pad2(c) {\n return c.length == 1 ? \"0\" + c : \"\" + c;\n }\n function convertToPercentage(n) {\n if (n <= 1) {\n n = n * 100 + \"%\";\n }\n return n;\n }\n function convertDecimalToHex(d) {\n return Math2.round(parseFloat(d) * 255).toString(16);\n }\n function convertHexToDecimal(h) {\n return parseIntFromHex(h) / 255;\n }\n var matchers = function() {\n var CSS_INTEGER = \"[-\\\\+]?\\\\d+%?\";\n var CSS_NUMBER = \"[-\\\\+]?\\\\d*\\\\.\\\\d+%?\";\n var CSS_UNIT = \"(?:\" + CSS_NUMBER + \")|(?:\" + CSS_INTEGER + \")\";\n var PERMISSIVE_MATCH3 = \"[\\\\s|\\\\(]+(\" + CSS_UNIT + \")[,|\\\\s]+(\" + CSS_UNIT + \")[,|\\\\s]+(\" + CSS_UNIT + \")\\\\s*\\\\)?\";\n var PERMISSIVE_MATCH4 = \"[\\\\s|\\\\(]+(\" + CSS_UNIT + \")[,|\\\\s]+(\" + CSS_UNIT + \")[,|\\\\s]+(\" + CSS_UNIT + \")[,|\\\\s]+(\" + CSS_UNIT + \")\\\\s*\\\\)?\";\n return {\n CSS_UNIT: new RegExp(CSS_UNIT),\n rgb: new RegExp(\"rgb\" + PERMISSIVE_MATCH3),\n rgba: new RegExp(\"rgba\" + PERMISSIVE_MATCH4),\n hsl: new RegExp(\"hsl\" + PERMISSIVE_MATCH3),\n hsla: new RegExp(\"hsla\" + PERMISSIVE_MATCH4),\n hsv: new RegExp(\"hsv\" + PERMISSIVE_MATCH3),\n hsva: new RegExp(\"hsva\" + PERMISSIVE_MATCH4),\n hex3: /^#?([0-9a-fA-F]{1})([0-9a-fA-F]{1})([0-9a-fA-F]{1})$/,\n hex6: /^#?([0-9a-fA-F]{2})([0-9a-fA-F]{2})([0-9a-fA-F]{2})$/,\n hex4: /^#?([0-9a-fA-F]{1})([0-9a-fA-F]{1})([0-9a-fA-F]{1})([0-9a-fA-F]{1})$/,\n hex8: /^#?([0-9a-fA-F]{2})([0-9a-fA-F]{2})([0-9a-fA-F]{2})([0-9a-fA-F]{2})$/\n };\n }();\n function isValidCSSUnit(color) {\n return !!matchers.CSS_UNIT.exec(color);\n }\n function stringInputToObject(color) {\n color = color.replace(trimLeft, \"\").replace(trimRight, \"\").toLowerCase();\n var named = false;\n if (names[color]) {\n color = names[color];\n named = true;\n } else if (color == \"transparent\") {\n return { r: 0, g: 0, b: 0, a: 0, format: \"name\" };\n }\n var match;\n if (match = matchers.rgb.exec(color)) {\n return { r: match[1], g: match[2], b: match[3] };\n }\n if (match = matchers.rgba.exec(color)) {\n return { r: match[1], g: match[2], b: match[3], a: match[4] };\n }\n if (match = matchers.hsl.exec(color)) {\n return { h: match[1], s: match[2], l: match[3] };\n }\n if (match = matchers.hsla.exec(color)) {\n return { h: match[1], s: match[2], l: match[3], a: match[4] };\n }\n if (match = matchers.hsv.exec(color)) {\n return { h: match[1], s: match[2], v: match[3] };\n }\n if (match = matchers.hsva.exec(color)) {\n return { h: match[1], s: match[2], v: match[3], a: match[4] };\n }\n if (match = matchers.hex8.exec(color)) {\n return {\n r: parseIntFromHex(match[1]),\n g: parseIntFromHex(match[2]),\n b: parseIntFromHex(match[3]),\n a: convertHexToDecimal(match[4]),\n format: named ? \"name\" : \"hex8\"\n };\n }\n if (match = matchers.hex6.exec(color)) {\n return {\n r: parseIntFromHex(match[1]),\n g: parseIntFromHex(match[2]),\n b: parseIntFromHex(match[3]),\n format: named ? \"name\" : \"hex\"\n };\n }\n if (match = matchers.hex4.exec(color)) {\n return {\n r: parseIntFromHex(match[1] + \"\" + match[1]),\n g: parseIntFromHex(match[2] + \"\" + match[2]),\n b: parseIntFromHex(match[3] + \"\" + match[3]),\n a: convertHexToDecimal(match[4] + \"\" + match[4]),\n format: named ? \"name\" : \"hex8\"\n };\n }\n if (match = matchers.hex3.exec(color)) {\n return {\n r: parseIntFromHex(match[1] + \"\" + match[1]),\n g: parseIntFromHex(match[2] + \"\" + match[2]),\n b: parseIntFromHex(match[3] + \"\" + match[3]),\n format: named ? \"name\" : \"hex\"\n };\n }\n return false;\n }\n function validateWCAG2Parms(parms) {\n var level, size;\n parms = parms || { \"level\": \"AA\", \"size\": \"small\" };\n level = (parms.level || \"AA\").toUpperCase();\n size = (parms.size || \"small\").toLowerCase();\n if (level !== \"AA\" && level !== \"AAA\") {\n level = \"AA\";\n }\n if (size !== \"small\" && size !== \"large\") {\n size = \"small\";\n }\n return { \"level\": level, \"size\": size };\n }\n if (typeof module !== \"undefined\" && module.exports) {\n module.exports = tinycolor;\n } else if (typeof define === \"function\" && define.amd) {\n define(function() {\n return tinycolor;\n });\n } else {\n window.tinycolor = tinycolor;\n }\n })(Math);\n }\n });\n\n // src/lib/extend.js\n var require_extend = __commonJS({\n \"src/lib/extend.js\"(exports) {\n \"use strict\";\n var isPlainObject = require_is_plain_object();\n var isArray = Array.isArray;\n function primitivesLoopSplice(source, target) {\n var i, value;\n for (i = 0; i < source.length; i++) {\n value = source[i];\n if (value !== null && typeof value === \"object\") {\n return false;\n }\n if (value !== void 0) {\n target[i] = value;\n }\n }\n return true;\n }\n exports.extendFlat = function() {\n return _extend(arguments, false, false, false);\n };\n exports.extendDeep = function() {\n return _extend(arguments, true, false, false);\n };\n exports.extendDeepAll = function() {\n return _extend(arguments, true, true, false);\n };\n exports.extendDeepNoArrays = function() {\n return _extend(arguments, true, false, true);\n };\n function _extend(inputs, isDeep, keepAllKeys, noArrayCopies) {\n var target = inputs[0];\n var length = inputs.length;\n var input, key, src, copy, copyIsArray, clone, allPrimitives;\n if (length === 2 && isArray(target) && isArray(inputs[1]) && target.length === 0) {\n allPrimitives = primitivesLoopSplice(inputs[1], target);\n if (allPrimitives) {\n return target;\n } else {\n target.splice(0, target.length);\n }\n }\n for (var i = 1; i < length; i++) {\n input = inputs[i];\n for (key in input) {\n src = target[key];\n copy = input[key];\n if (noArrayCopies && isArray(copy)) {\n target[key] = copy;\n } else if (isDeep && copy && (isPlainObject(copy) || (copyIsArray = isArray(copy)))) {\n if (copyIsArray) {\n copyIsArray = false;\n clone = src && isArray(src) ? src : [];\n } else {\n clone = src && isPlainObject(src) ? src : {};\n }\n target[key] = _extend([clone, copy], isDeep, keepAllKeys, noArrayCopies);\n } else if (typeof copy !== \"undefined\" || keepAllKeys) {\n target[key] = copy;\n }\n }\n }\n return target;\n }\n }\n });\n\n // src/plots/font_attributes.js\n var require_font_attributes = __commonJS({\n \"src/plots/font_attributes.js\"(exports, module) {\n \"use strict\";\n module.exports = function(opts) {\n var variantValues = opts.variantValues;\n var editType = opts.editType;\n var colorEditType = opts.colorEditType;\n if (colorEditType === void 0) colorEditType = editType;\n var weight = {\n editType,\n valType: \"integer\",\n min: 1,\n max: 1e3,\n extras: [\"normal\", \"bold\"],\n dflt: \"normal\"\n };\n if (opts.noNumericWeightValues) {\n weight.valType = \"enumerated\";\n weight.values = weight.extras;\n weight.extras = void 0;\n weight.min = void 0;\n weight.max = void 0;\n }\n var attrs = {\n family: {\n valType: \"string\",\n noBlank: true,\n strict: true,\n editType\n },\n size: {\n valType: \"number\",\n min: 1,\n editType\n },\n color: {\n valType: \"color\",\n editType: colorEditType\n },\n weight,\n style: {\n editType,\n valType: \"enumerated\",\n values: [\"normal\", \"italic\"],\n dflt: \"normal\"\n },\n variant: opts.noFontVariant ? void 0 : {\n editType,\n valType: \"enumerated\",\n values: variantValues || [\n \"normal\",\n \"small-caps\",\n \"all-small-caps\",\n \"all-petite-caps\",\n \"petite-caps\",\n \"unicase\"\n ],\n dflt: \"normal\"\n },\n textcase: opts.noFontTextcase ? void 0 : {\n editType,\n valType: \"enumerated\",\n values: [\"normal\", \"word caps\", \"upper\", \"lower\"],\n dflt: \"normal\"\n },\n lineposition: opts.noFontLineposition ? void 0 : {\n editType,\n valType: \"flaglist\",\n flags: [\"under\", \"over\", \"through\"],\n extras: [\"none\"],\n dflt: \"none\"\n },\n shadow: opts.noFontShadow ? void 0 : {\n editType,\n valType: \"string\",\n dflt: opts.autoShadowDflt ? \"auto\" : \"none\"\n },\n editType\n // blank strings so compress_attributes can remove\n // TODO - that's uber hacky... better solution?\n };\n if (opts.autoSize) attrs.size.dflt = \"auto\";\n if (opts.autoColor) attrs.color.dflt = \"auto\";\n if (opts.arrayOk) {\n attrs.family.arrayOk = true;\n attrs.weight.arrayOk = true;\n attrs.style.arrayOk = true;\n if (!opts.noFontVariant) {\n attrs.variant.arrayOk = true;\n }\n if (!opts.noFontTextcase) {\n attrs.textcase.arrayOk = true;\n }\n if (!opts.noFontLineposition) {\n attrs.lineposition.arrayOk = true;\n }\n if (!opts.noFontShadow) {\n attrs.shadow.arrayOk = true;\n }\n attrs.size.arrayOk = true;\n attrs.color.arrayOk = true;\n }\n return attrs;\n };\n }\n });\n\n // src/components/fx/constants.js\n var require_constants = __commonJS({\n \"src/components/fx/constants.js\"(exports, module) {\n \"use strict\";\n module.exports = {\n // hover labels for multiple horizontal bars get tilted by this angle\n YANGLE: 60,\n // size and display constants for hover text\n // pixel size of hover arrows\n HOVERARROWSIZE: 6,\n // pixels padding around text\n HOVERTEXTPAD: 3,\n // hover font\n HOVERFONTSIZE: 13,\n HOVERFONT: \"Arial, sans-serif\",\n // minimum time (msec) between hover calls\n HOVERMINTIME: 50,\n // ID suffix (with fullLayout._uid) for hover events in the throttle cache\n HOVERID: \"-hover\"\n };\n }\n });\n\n // src/components/fx/layout_attributes.js\n var require_layout_attributes = __commonJS({\n \"src/components/fx/layout_attributes.js\"(exports, module) {\n \"use strict\";\n var constants = require_constants();\n var fontAttrs = require_font_attributes();\n var font = fontAttrs({\n editType: \"none\"\n });\n font.family.dflt = constants.HOVERFONT;\n font.size.dflt = constants.HOVERFONTSIZE;\n module.exports = {\n clickmode: {\n valType: \"flaglist\",\n flags: [\"event\", \"select\"],\n dflt: \"event\",\n editType: \"plot\",\n extras: [\"none\"]\n },\n dragmode: {\n valType: \"enumerated\",\n values: [\n \"zoom\",\n \"pan\",\n \"select\",\n \"lasso\",\n \"drawclosedpath\",\n \"drawopenpath\",\n \"drawline\",\n \"drawrect\",\n \"drawcircle\",\n \"orbit\",\n \"turntable\",\n false\n ],\n dflt: \"zoom\",\n editType: \"modebar\"\n },\n hovermode: {\n valType: \"enumerated\",\n values: [\"x\", \"y\", \"closest\", false, \"x unified\", \"y unified\"],\n dflt: \"closest\",\n editType: \"modebar\"\n },\n hoversubplots: {\n valType: \"enumerated\",\n values: [\"single\", \"overlaying\", \"axis\"],\n dflt: \"overlaying\",\n editType: \"none\"\n },\n hoverdistance: {\n valType: \"integer\",\n min: -1,\n dflt: 20,\n editType: \"none\"\n },\n spikedistance: {\n valType: \"integer\",\n min: -1,\n dflt: -1,\n editType: \"none\"\n },\n hoverlabel: {\n bgcolor: {\n valType: \"color\",\n editType: \"none\"\n },\n bordercolor: {\n valType: \"color\",\n editType: \"none\"\n },\n font,\n grouptitlefont: fontAttrs({\n editType: \"none\"\n }),\n align: {\n valType: \"enumerated\",\n values: [\"left\", \"right\", \"auto\"],\n dflt: \"auto\",\n editType: \"none\"\n },\n namelength: {\n valType: \"integer\",\n min: -1,\n dflt: 15,\n editType: \"none\"\n },\n editType: \"none\"\n },\n selectdirection: {\n valType: \"enumerated\",\n values: [\"h\", \"v\", \"d\", \"any\"],\n dflt: \"any\",\n editType: \"none\"\n }\n };\n }\n });\n\n // src/components/fx/attributes.js\n var require_attributes = __commonJS({\n \"src/components/fx/attributes.js\"(exports, module) {\n \"use strict\";\n var fontAttrs = require_font_attributes();\n var hoverLabelAttrs = require_layout_attributes().hoverlabel;\n var extendFlat = require_extend().extendFlat;\n module.exports = {\n hoverlabel: {\n bgcolor: extendFlat({}, hoverLabelAttrs.bgcolor, {\n arrayOk: true\n }),\n bordercolor: extendFlat({}, hoverLabelAttrs.bordercolor, {\n arrayOk: true\n }),\n font: fontAttrs({\n arrayOk: true,\n editType: \"none\"\n }),\n align: extendFlat({}, hoverLabelAttrs.align, { arrayOk: true }),\n namelength: extendFlat({}, hoverLabelAttrs.namelength, { arrayOk: true }),\n editType: \"none\"\n }\n };\n }\n });\n\n // src/plots/attributes.js\n var require_attributes2 = __commonJS({\n \"src/plots/attributes.js\"(exports, module) {\n \"use strict\";\n var fontAttrs = require_font_attributes();\n var fxAttrs = require_attributes();\n module.exports = {\n type: {\n valType: \"enumerated\",\n values: [],\n // listed dynamically\n dflt: \"scatter\",\n editType: \"calc+clearAxisTypes\",\n _noTemplating: true\n // we handle this at a higher level\n },\n visible: {\n valType: \"enumerated\",\n values: [true, false, \"legendonly\"],\n dflt: true,\n editType: \"calc\"\n },\n showlegend: {\n valType: \"boolean\",\n dflt: true,\n editType: \"style\"\n },\n legend: {\n valType: \"subplotid\",\n dflt: \"legend\",\n editType: \"style\"\n },\n legendgroup: {\n valType: \"string\",\n dflt: \"\",\n editType: \"style\"\n },\n legendgrouptitle: {\n text: {\n valType: \"string\",\n dflt: \"\",\n editType: \"style\"\n },\n font: fontAttrs({\n editType: \"style\"\n }),\n editType: \"style\"\n },\n legendrank: {\n valType: \"number\",\n dflt: 1e3,\n editType: \"style\"\n },\n legendwidth: {\n valType: \"number\",\n min: 0,\n editType: \"style\"\n },\n opacity: {\n valType: \"number\",\n min: 0,\n max: 1,\n dflt: 1,\n editType: \"style\"\n },\n name: {\n valType: \"string\",\n editType: \"style\"\n },\n uid: {\n valType: \"string\",\n editType: \"plot\",\n anim: true\n },\n ids: {\n valType: \"data_array\",\n editType: \"calc\",\n anim: true\n },\n customdata: {\n valType: \"data_array\",\n editType: \"calc\"\n },\n meta: {\n valType: \"any\",\n arrayOk: true,\n editType: \"plot\"\n },\n // N.B. these cannot be 'data_array' as they do not have the same length as\n // other data arrays and arrayOk attributes in general\n //\n // Maybe add another valType:\n // https://github.com/plotly/plotly.js/issues/1894\n selectedpoints: {\n valType: \"any\",\n editType: \"calc\"\n },\n hoverinfo: {\n valType: \"flaglist\",\n flags: [\"x\", \"y\", \"z\", \"text\", \"name\"],\n extras: [\"all\", \"none\", \"skip\"],\n arrayOk: true,\n dflt: \"all\",\n editType: \"none\"\n },\n hoverlabel: fxAttrs.hoverlabel,\n stream: {\n token: {\n valType: \"string\",\n noBlank: true,\n strict: true,\n editType: \"calc\"\n },\n maxpoints: {\n valType: \"number\",\n min: 0,\n max: 1e4,\n dflt: 500,\n editType: \"calc\"\n },\n editType: \"calc\"\n },\n uirevision: {\n valType: \"any\",\n editType: \"none\"\n }\n };\n }\n });\n\n // src/components/colorscale/scales.js\n var require_scales = __commonJS({\n \"src/components/colorscale/scales.js\"(exports, module) {\n \"use strict\";\n var tinycolor = require_tinycolor();\n var scales = {\n Greys: [\n [0, \"rgb(0,0,0)\"],\n [1, \"rgb(255,255,255)\"]\n ],\n YlGnBu: [\n [0, \"rgb(8,29,88)\"],\n [0.125, \"rgb(37,52,148)\"],\n [0.25, \"rgb(34,94,168)\"],\n [0.375, \"rgb(29,145,192)\"],\n [0.5, \"rgb(65,182,196)\"],\n [0.625, \"rgb(127,205,187)\"],\n [0.75, \"rgb(199,233,180)\"],\n [0.875, \"rgb(237,248,217)\"],\n [1, \"rgb(255,255,217)\"]\n ],\n Greens: [\n [0, \"rgb(0,68,27)\"],\n [0.125, \"rgb(0,109,44)\"],\n [0.25, \"rgb(35,139,69)\"],\n [0.375, \"rgb(65,171,93)\"],\n [0.5, \"rgb(116,196,118)\"],\n [0.625, \"rgb(161,217,155)\"],\n [0.75, \"rgb(199,233,192)\"],\n [0.875, \"rgb(229,245,224)\"],\n [1, \"rgb(247,252,245)\"]\n ],\n YlOrRd: [\n [0, \"rgb(128,0,38)\"],\n [0.125, \"rgb(189,0,38)\"],\n [0.25, \"rgb(227,26,28)\"],\n [0.375, \"rgb(252,78,42)\"],\n [0.5, \"rgb(253,141,60)\"],\n [0.625, \"rgb(254,178,76)\"],\n [0.75, \"rgb(254,217,118)\"],\n [0.875, \"rgb(255,237,160)\"],\n [1, \"rgb(255,255,204)\"]\n ],\n Bluered: [\n [0, \"rgb(0,0,255)\"],\n [1, \"rgb(255,0,0)\"]\n ],\n // modified RdBu based on\n // http://www.kennethmoreland.com/color-maps/\n RdBu: [\n [0, \"rgb(5,10,172)\"],\n [0.35, \"rgb(106,137,247)\"],\n [0.5, \"rgb(190,190,190)\"],\n [0.6, \"rgb(220,170,132)\"],\n [0.7, \"rgb(230,145,90)\"],\n [1, \"rgb(178,10,28)\"]\n ],\n // Scale for non-negative numeric values\n Reds: [\n [0, \"rgb(220,220,220)\"],\n [0.2, \"rgb(245,195,157)\"],\n [0.4, \"rgb(245,160,105)\"],\n [1, \"rgb(178,10,28)\"]\n ],\n // Scale for non-positive numeric values\n Blues: [\n [0, \"rgb(5,10,172)\"],\n [0.35, \"rgb(40,60,190)\"],\n [0.5, \"rgb(70,100,245)\"],\n [0.6, \"rgb(90,120,245)\"],\n [0.7, \"rgb(106,137,247)\"],\n [1, \"rgb(220,220,220)\"]\n ],\n Picnic: [\n [0, \"rgb(0,0,255)\"],\n [0.1, \"rgb(51,153,255)\"],\n [0.2, \"rgb(102,204,255)\"],\n [0.3, \"rgb(153,204,255)\"],\n [0.4, \"rgb(204,204,255)\"],\n [0.5, \"rgb(255,255,255)\"],\n [0.6, \"rgb(255,204,255)\"],\n [0.7, \"rgb(255,153,255)\"],\n [0.8, \"rgb(255,102,204)\"],\n [0.9, \"rgb(255,102,102)\"],\n [1, \"rgb(255,0,0)\"]\n ],\n Rainbow: [\n [0, \"rgb(150,0,90)\"],\n [0.125, \"rgb(0,0,200)\"],\n [0.25, \"rgb(0,25,255)\"],\n [0.375, \"rgb(0,152,255)\"],\n [0.5, \"rgb(44,255,150)\"],\n [0.625, \"rgb(151,255,0)\"],\n [0.75, \"rgb(255,234,0)\"],\n [0.875, \"rgb(255,111,0)\"],\n [1, \"rgb(255,0,0)\"]\n ],\n Portland: [\n [0, \"rgb(12,51,131)\"],\n [0.25, \"rgb(10,136,186)\"],\n [0.5, \"rgb(242,211,56)\"],\n [0.75, \"rgb(242,143,56)\"],\n [1, \"rgb(217,30,30)\"]\n ],\n Jet: [\n [0, \"rgb(0,0,131)\"],\n [0.125, \"rgb(0,60,170)\"],\n [0.375, \"rgb(5,255,255)\"],\n [0.625, \"rgb(255,255,0)\"],\n [0.875, \"rgb(250,0,0)\"],\n [1, \"rgb(128,0,0)\"]\n ],\n Hot: [\n [0, \"rgb(0,0,0)\"],\n [0.3, \"rgb(230,0,0)\"],\n [0.6, \"rgb(255,210,0)\"],\n [1, \"rgb(255,255,255)\"]\n ],\n Blackbody: [\n [0, \"rgb(0,0,0)\"],\n [0.2, \"rgb(230,0,0)\"],\n [0.4, \"rgb(230,210,0)\"],\n [0.7, \"rgb(255,255,255)\"],\n [1, \"rgb(160,200,255)\"]\n ],\n Earth: [\n [0, \"rgb(0,0,130)\"],\n [0.1, \"rgb(0,180,180)\"],\n [0.2, \"rgb(40,210,40)\"],\n [0.4, \"rgb(230,230,50)\"],\n [0.6, \"rgb(120,70,20)\"],\n [1, \"rgb(255,255,255)\"]\n ],\n Electric: [\n [0, \"rgb(0,0,0)\"],\n [0.15, \"rgb(30,0,100)\"],\n [0.4, \"rgb(120,0,100)\"],\n [0.6, \"rgb(160,90,0)\"],\n [0.8, \"rgb(230,200,0)\"],\n [1, \"rgb(255,250,220)\"]\n ],\n Viridis: [\n [0, \"#440154\"],\n [0.06274509803921569, \"#48186a\"],\n [0.12549019607843137, \"#472d7b\"],\n [0.18823529411764706, \"#424086\"],\n [0.25098039215686274, \"#3b528b\"],\n [0.3137254901960784, \"#33638d\"],\n [0.3764705882352941, \"#2c728e\"],\n [0.4392156862745098, \"#26828e\"],\n [0.5019607843137255, \"#21918c\"],\n [0.5647058823529412, \"#1fa088\"],\n [0.6274509803921569, \"#28ae80\"],\n [0.6901960784313725, \"#3fbc73\"],\n [0.7529411764705882, \"#5ec962\"],\n [0.8156862745098039, \"#84d44b\"],\n [0.8784313725490196, \"#addc30\"],\n [0.9411764705882353, \"#d8e219\"],\n [1, \"#fde725\"]\n ],\n Cividis: [\n [0, \"rgb(0,32,76)\"],\n [0.058824, \"rgb(0,42,102)\"],\n [0.117647, \"rgb(0,52,110)\"],\n [0.176471, \"rgb(39,63,108)\"],\n [0.235294, \"rgb(60,74,107)\"],\n [0.294118, \"rgb(76,85,107)\"],\n [0.352941, \"rgb(91,95,109)\"],\n [0.411765, \"rgb(104,106,112)\"],\n [0.470588, \"rgb(117,117,117)\"],\n [0.529412, \"rgb(131,129,120)\"],\n [0.588235, \"rgb(146,140,120)\"],\n [0.647059, \"rgb(161,152,118)\"],\n [0.705882, \"rgb(176,165,114)\"],\n [0.764706, \"rgb(192,177,109)\"],\n [0.823529, \"rgb(209,191,102)\"],\n [0.882353, \"rgb(225,204,92)\"],\n [0.941176, \"rgb(243,219,79)\"],\n [1, \"rgb(255,233,69)\"]\n ]\n };\n var defaultScale = scales.RdBu;\n function getScale(scl, dflt) {\n if (!dflt) dflt = defaultScale;\n if (!scl) return dflt;\n function parseScale() {\n try {\n scl = scales[scl] || JSON.parse(scl);\n } catch (e) {\n scl = dflt;\n }\n }\n if (typeof scl === \"string\") {\n parseScale();\n if (typeof scl === \"string\") parseScale();\n }\n if (!isValidScaleArray(scl)) return dflt;\n return scl;\n }\n function isValidScaleArray(scl) {\n var highestVal = 0;\n if (!Array.isArray(scl) || scl.length < 2) return false;\n if (!scl[0] || !scl[scl.length - 1]) return false;\n if (+scl[0][0] !== 0 || +scl[scl.length - 1][0] !== 1) return false;\n for (var i = 0; i < scl.length; i++) {\n var si = scl[i];\n if (si.length !== 2 || +si[0] < highestVal || !tinycolor(si[1]).isValid()) {\n return false;\n }\n highestVal = +si[0];\n }\n return true;\n }\n function isValidScale(scl) {\n if (scales[scl] !== void 0) return true;\n else return isValidScaleArray(scl);\n }\n module.exports = {\n scales,\n defaultScale,\n get: getScale,\n isValid: isValidScale\n };\n }\n });\n\n // src/components/color/attributes.js\n var require_attributes3 = __commonJS({\n \"src/components/color/attributes.js\"(exports) {\n \"use strict\";\n exports.defaults = [\n \"#1f77b4\",\n // muted blue\n \"#ff7f0e\",\n // safety orange\n \"#2ca02c\",\n // cooked asparagus green\n \"#d62728\",\n // brick red\n \"#9467bd\",\n // muted purple\n \"#8c564b\",\n // chestnut brown\n \"#e377c2\",\n // raspberry yogurt pink\n \"#7f7f7f\",\n // middle gray\n \"#bcbd22\",\n // curry yellow-green\n \"#17becf\"\n // blue-teal\n ];\n exports.defaultLine = \"#444\";\n exports.lightLine = \"#eee\";\n exports.background = \"#fff\";\n exports.borderLine = \"#BEC8D9\";\n exports.lightFraction = 100 * (14 - 4) / (15 - 4);\n }\n });\n\n // src/components/color/index.js\n var require_color = __commonJS({\n \"src/components/color/index.js\"(exports, module) {\n \"use strict\";\n var tinycolor = require_tinycolor();\n var isNumeric = require_fast_isnumeric();\n var isTypedArray = require_array().isTypedArray;\n var color = module.exports = {};\n var colorAttrs = require_attributes3();\n color.defaults = colorAttrs.defaults;\n var defaultLine = color.defaultLine = colorAttrs.defaultLine;\n color.lightLine = colorAttrs.lightLine;\n var background = color.background = colorAttrs.background;\n color.tinyRGB = function(tc) {\n var c = tc.toRgb();\n return \"rgb(\" + Math.round(c.r) + \", \" + Math.round(c.g) + \", \" + Math.round(c.b) + \")\";\n };\n color.rgb = function(cstr) {\n return color.tinyRGB(tinycolor(cstr));\n };\n color.opacity = function(cstr) {\n return cstr ? tinycolor(cstr).getAlpha() : 0;\n };\n color.addOpacity = function(cstr, op) {\n var c = tinycolor(cstr).toRgb();\n return \"rgba(\" + Math.round(c.r) + \", \" + Math.round(c.g) + \", \" + Math.round(c.b) + \", \" + op + \")\";\n };\n color.combine = function(front, back) {\n var fc = tinycolor(front).toRgb();\n if (fc.a === 1) return tinycolor(front).toRgbString();\n var bc = tinycolor(back || background).toRgb();\n var bcflat = bc.a === 1 ? bc : {\n r: 255 * (1 - bc.a) + bc.r * bc.a,\n g: 255 * (1 - bc.a) + bc.g * bc.a,\n b: 255 * (1 - bc.a) + bc.b * bc.a\n };\n var fcflat = {\n r: bcflat.r * (1 - fc.a) + fc.r * fc.a,\n g: bcflat.g * (1 - fc.a) + fc.g * fc.a,\n b: bcflat.b * (1 - fc.a) + fc.b * fc.a\n };\n return tinycolor(fcflat).toRgbString();\n };\n color.interpolate = function(first, second, factor) {\n var fc = tinycolor(first).toRgb();\n var sc = tinycolor(second).toRgb();\n var ic = {\n r: factor * fc.r + (1 - factor) * sc.r,\n g: factor * fc.g + (1 - factor) * sc.g,\n b: factor * fc.b + (1 - factor) * sc.b\n };\n return tinycolor(ic).toRgbString();\n };\n color.contrast = function(cstr, lightAmount, darkAmount) {\n var tc = tinycolor(cstr);\n if (tc.getAlpha() !== 1) tc = tinycolor(color.combine(cstr, background));\n var newColor = tc.isDark() ? lightAmount ? tc.lighten(lightAmount) : background : darkAmount ? tc.darken(darkAmount) : defaultLine;\n return newColor.toString();\n };\n color.stroke = function(s, c) {\n var tc = tinycolor(c);\n s.style({ stroke: color.tinyRGB(tc), \"stroke-opacity\": tc.getAlpha() });\n };\n color.fill = function(s, c) {\n var tc = tinycolor(c);\n s.style({\n fill: color.tinyRGB(tc),\n \"fill-opacity\": tc.getAlpha()\n });\n };\n color.clean = function(container) {\n if (!container || typeof container !== \"object\") return;\n var keys = Object.keys(container);\n var i, j, key, val;\n for (i = 0; i < keys.length; i++) {\n key = keys[i];\n val = container[key];\n if (key.substr(key.length - 5) === \"color\") {\n if (Array.isArray(val)) {\n for (j = 0; j < val.length; j++) val[j] = cleanOne(val[j]);\n } else container[key] = cleanOne(val);\n } else if (key.substr(key.length - 10) === \"colorscale\" && Array.isArray(val)) {\n for (j = 0; j < val.length; j++) {\n if (Array.isArray(val[j])) val[j][1] = cleanOne(val[j][1]);\n }\n } else if (Array.isArray(val)) {\n var el0 = val[0];\n if (!Array.isArray(el0) && el0 && typeof el0 === \"object\") {\n for (j = 0; j < val.length; j++) color.clean(val[j]);\n }\n } else if (val && typeof val === \"object\" && !isTypedArray(val)) color.clean(val);\n }\n };\n function cleanOne(val) {\n if (isNumeric(val) || typeof val !== \"string\") return val;\n var valTrim = val.trim();\n if (valTrim.substr(0, 3) !== \"rgb\") return val;\n var match = valTrim.match(/^rgba?\\s*\\(([^()]*)\\)$/);\n if (!match) return val;\n var parts = match[1].trim().split(/\\s*[\\s,]\\s*/);\n var rgba = valTrim.charAt(3) === \"a\" && parts.length === 4;\n if (!rgba && parts.length !== 3) return val;\n for (var i = 0; i < parts.length; i++) {\n if (!parts[i].length) return val;\n parts[i] = Number(parts[i]);\n if (!(parts[i] >= 0)) {\n return val;\n }\n if (i === 3) {\n if (parts[i] > 1) parts[i] = 1;\n } else if (parts[i] >= 1) {\n return val;\n }\n }\n var rgbStr = Math.round(parts[0] * 255) + \", \" + Math.round(parts[1] * 255) + \", \" + Math.round(parts[2] * 255);\n if (rgba) return \"rgba(\" + rgbStr + \", \" + parts[3] + \")\";\n return \"rgb(\" + rgbStr + \")\";\n }\n }\n });\n\n // src/constants/interactions.js\n var require_interactions = __commonJS({\n \"src/constants/interactions.js\"(exports, module) {\n \"use strict\";\n module.exports = {\n /**\n * Timing information for interactive elements\n */\n SHOW_PLACEHOLDER: 100,\n HIDE_PLACEHOLDER: 1e3,\n // opacity dimming fraction for points that are not in selection\n DESELECTDIM: 0.2\n };\n }\n });\n\n // src/lib/regex.js\n var require_regex = __commonJS({\n \"src/lib/regex.js\"(exports) {\n \"use strict\";\n exports.counter = function(head, tail, openEnded, matchBeginning) {\n var fullTail = (tail || \"\") + (openEnded ? \"\" : \"$\");\n var startWithPrefix = matchBeginning === false ? \"\" : \"^\";\n if (head === \"xy\") {\n return new RegExp(startWithPrefix + \"x([2-9]|[1-9][0-9]+)?y([2-9]|[1-9][0-9]+)?\" + fullTail);\n }\n return new RegExp(startWithPrefix + head + \"([2-9]|[1-9][0-9]+)?\" + fullTail);\n };\n }\n });\n\n // src/lib/coerce.js\n var require_coerce = __commonJS({\n \"src/lib/coerce.js\"(exports) {\n \"use strict\";\n var isNumeric = require_fast_isnumeric();\n var tinycolor = require_tinycolor();\n var extendFlat = require_extend().extendFlat;\n var baseTraceAttrs = require_attributes2();\n var colorscales = require_scales();\n var Color = require_color();\n var DESELECTDIM = require_interactions().DESELECTDIM;\n var nestedProperty = require_nested_property();\n var counterRegex = require_regex().counter;\n var modHalf = require_mod().modHalf;\n var isArrayOrTypedArray = require_array().isArrayOrTypedArray;\n var isTypedArraySpec = require_array().isTypedArraySpec;\n var decodeTypedArraySpec = require_array().decodeTypedArraySpec;\n exports.valObjectMeta = {\n data_array: {\n // You can use *dflt=[] to force said array to exist though.\n coerceFunction: function(v, propOut, dflt) {\n propOut.set(\n isArrayOrTypedArray(v) ? v : isTypedArraySpec(v) ? decodeTypedArraySpec(v) : dflt\n );\n }\n },\n enumerated: {\n coerceFunction: function(v, propOut, dflt, opts) {\n if (opts.coerceNumber) v = +v;\n if (opts.values.indexOf(v) === -1) propOut.set(dflt);\n else propOut.set(v);\n },\n validateFunction: function(v, opts) {\n if (opts.coerceNumber) v = +v;\n var values = opts.values;\n for (var i = 0; i < values.length; i++) {\n var k = String(values[i]);\n if (k.charAt(0) === \"/\" && k.charAt(k.length - 1) === \"/\") {\n var regex = new RegExp(k.substr(1, k.length - 2));\n if (regex.test(v)) return true;\n } else if (v === values[i]) return true;\n }\n return false;\n }\n },\n boolean: {\n coerceFunction: function(v, propOut, dflt) {\n if (v === true || v === false) propOut.set(v);\n else propOut.set(dflt);\n }\n },\n number: {\n coerceFunction: function(v, propOut, dflt, opts) {\n if (isTypedArraySpec(v)) v = decodeTypedArraySpec(v);\n if (!isNumeric(v) || opts.min !== void 0 && v < opts.min || opts.max !== void 0 && v > opts.max) {\n propOut.set(dflt);\n } else propOut.set(+v);\n }\n },\n integer: {\n coerceFunction: function(v, propOut, dflt, opts) {\n if ((opts.extras || []).indexOf(v) !== -1) {\n propOut.set(v);\n return;\n }\n if (isTypedArraySpec(v)) v = decodeTypedArraySpec(v);\n if (v % 1 || !isNumeric(v) || opts.min !== void 0 && v < opts.min || opts.max !== void 0 && v > opts.max) {\n propOut.set(dflt);\n } else propOut.set(+v);\n }\n },\n string: {\n // TODO 'values shouldn't be in there (edge case: 'dash' in Scatter)\n coerceFunction: function(v, propOut, dflt, opts) {\n if (typeof v !== \"string\") {\n var okToCoerce = typeof v === \"number\";\n if (opts.strict === true || !okToCoerce) propOut.set(dflt);\n else propOut.set(String(v));\n } else if (opts.noBlank && !v) propOut.set(dflt);\n else propOut.set(v);\n }\n },\n color: {\n coerceFunction: function(v, propOut, dflt) {\n if (isTypedArraySpec(v)) v = decodeTypedArraySpec(v);\n if (tinycolor(v).isValid()) propOut.set(v);\n else propOut.set(dflt);\n }\n },\n colorlist: {\n coerceFunction: function(v, propOut, dflt) {\n function isColor(color) {\n return tinycolor(color).isValid();\n }\n if (!Array.isArray(v) || !v.length) propOut.set(dflt);\n else if (v.every(isColor)) propOut.set(v);\n else propOut.set(dflt);\n }\n },\n colorscale: {\n coerceFunction: function(v, propOut, dflt) {\n propOut.set(colorscales.get(v, dflt));\n }\n },\n angle: {\n coerceFunction: function(v, propOut, dflt) {\n if (isTypedArraySpec(v)) v = decodeTypedArraySpec(v);\n if (v === \"auto\") propOut.set(\"auto\");\n else if (!isNumeric(v)) propOut.set(dflt);\n else propOut.set(modHalf(+v, 360));\n }\n },\n subplotid: {\n coerceFunction: function(v, propOut, dflt, opts) {\n var regex = opts.regex || counterRegex(dflt);\n if (typeof v === \"string\" && regex.test(v)) {\n propOut.set(v);\n return;\n }\n propOut.set(dflt);\n },\n validateFunction: function(v, opts) {\n var dflt = opts.dflt;\n if (v === dflt) return true;\n if (typeof v !== \"string\") return false;\n if (counterRegex(dflt).test(v)) return true;\n return false;\n }\n },\n flaglist: {\n coerceFunction: function(v, propOut, dflt, opts) {\n if ((opts.extras || []).indexOf(v) !== -1) {\n propOut.set(v);\n return;\n }\n if (typeof v !== \"string\") {\n propOut.set(dflt);\n return;\n }\n var vParts = v.split(\"+\");\n var i = 0;\n while (i < vParts.length) {\n var vi = vParts[i];\n if (opts.flags.indexOf(vi) === -1 || vParts.indexOf(vi) < i) {\n vParts.splice(i, 1);\n } else i++;\n }\n if (!vParts.length) propOut.set(dflt);\n else propOut.set(vParts.join(\"+\"));\n }\n },\n any: {\n coerceFunction: function(v, propOut, dflt) {\n if (v === void 0) {\n propOut.set(dflt);\n } else {\n propOut.set(\n isTypedArraySpec(v) ? decodeTypedArraySpec(v) : v\n );\n }\n }\n },\n info_array: {\n // set `dimensions=2` for a 2D array or '1-2' for either\n // `items` may be a single object instead of an array, in which case\n // `freeLength` must be true.\n // if `dimensions='1-2'` and items is a 1D array, then the value can\n // either be a matching 1D array or an array of such matching 1D arrays\n coerceFunction: function(v, propOut, dflt, opts) {\n function coercePart(v2, opts2, dflt2) {\n var out;\n var propPart = { set: function(v3) {\n out = v3;\n } };\n if (dflt2 === void 0) dflt2 = opts2.dflt;\n exports.valObjectMeta[opts2.valType].coerceFunction(v2, propPart, dflt2, opts2);\n return out;\n }\n if (isTypedArraySpec(v)) v = decodeTypedArraySpec(v);\n if (!isArrayOrTypedArray(v)) {\n propOut.set(dflt);\n return;\n }\n var twoD = opts.dimensions === 2 || opts.dimensions === \"1-2\" && Array.isArray(v) && isArrayOrTypedArray(v[0]);\n var items = opts.items;\n var vOut = [];\n var arrayItems = Array.isArray(items);\n var arrayItems2D = arrayItems && twoD && isArrayOrTypedArray(items[0]);\n var innerItemsOnly = twoD && arrayItems && !arrayItems2D;\n var len = arrayItems && !innerItemsOnly ? items.length : v.length;\n var i, j, row, item, len2, vNew;\n dflt = Array.isArray(dflt) ? dflt : [];\n if (twoD) {\n for (i = 0; i < len; i++) {\n vOut[i] = [];\n row = isArrayOrTypedArray(v[i]) ? v[i] : [];\n if (innerItemsOnly) len2 = items.length;\n else if (arrayItems) len2 = items[i].length;\n else len2 = row.length;\n for (j = 0; j < len2; j++) {\n if (innerItemsOnly) item = items[j];\n else if (arrayItems) item = items[i][j];\n else item = items;\n vNew = coercePart(row[j], item, (dflt[i] || [])[j]);\n if (vNew !== void 0) vOut[i][j] = vNew;\n }\n }\n } else {\n for (i = 0; i < len; i++) {\n vNew = coercePart(v[i], arrayItems ? items[i] : items, dflt[i]);\n if (vNew !== void 0) vOut[i] = vNew;\n }\n }\n propOut.set(vOut);\n },\n validateFunction: function(v, opts) {\n if (!isArrayOrTypedArray(v)) return false;\n var items = opts.items;\n var arrayItems = Array.isArray(items);\n var twoD = opts.dimensions === 2;\n if (!opts.freeLength && v.length !== items.length) return false;\n for (var i = 0; i < v.length; i++) {\n if (twoD) {\n if (!isArrayOrTypedArray(v[i]) || !opts.freeLength && v[i].length !== items[i].length) {\n return false;\n }\n for (var j = 0; j < v[i].length; j++) {\n if (!validate(v[i][j], arrayItems ? items[i][j] : items)) {\n return false;\n }\n }\n } else if (!validate(v[i], arrayItems ? items[i] : items)) return false;\n }\n return true;\n }\n }\n };\n exports.coerce = function(containerIn, containerOut, attributes, attribute, dflt) {\n var opts = nestedProperty(attributes, attribute).get();\n var propIn = nestedProperty(containerIn, attribute);\n var propOut = nestedProperty(containerOut, attribute);\n var v = propIn.get();\n var template = containerOut._template;\n if (v === void 0 && template) {\n v = nestedProperty(template, attribute).get();\n template = 0;\n }\n if (dflt === void 0) dflt = opts.dflt;\n if (opts.arrayOk) {\n if (isArrayOrTypedArray(v)) {\n propOut.set(v);\n return v;\n } else {\n if (isTypedArraySpec(v)) {\n v = decodeTypedArraySpec(v);\n propOut.set(v);\n return v;\n }\n }\n }\n var coerceFunction = exports.valObjectMeta[opts.valType].coerceFunction;\n coerceFunction(v, propOut, dflt, opts);\n var out = propOut.get();\n if (template && out === dflt && !validate(v, opts)) {\n v = nestedProperty(template, attribute).get();\n coerceFunction(v, propOut, dflt, opts);\n out = propOut.get();\n }\n return out;\n };\n exports.coerce2 = function(containerIn, containerOut, attributes, attribute, dflt) {\n var propIn = nestedProperty(containerIn, attribute);\n var propOut = exports.coerce(containerIn, containerOut, attributes, attribute, dflt);\n var valIn = propIn.get();\n return valIn !== void 0 && valIn !== null ? propOut : false;\n };\n exports.coerceFont = function(coerce, attr, dfltObj, opts) {\n if (!opts) opts = {};\n dfltObj = extendFlat({}, dfltObj);\n dfltObj = extendFlat(dfltObj, opts.overrideDflt || {});\n var out = {\n family: coerce(attr + \".family\", dfltObj.family),\n size: coerce(attr + \".size\", dfltObj.size),\n color: coerce(attr + \".color\", dfltObj.color),\n weight: coerce(attr + \".weight\", dfltObj.weight),\n style: coerce(attr + \".style\", dfltObj.style)\n };\n if (!opts.noFontVariant) out.variant = coerce(attr + \".variant\", dfltObj.variant);\n if (!opts.noFontLineposition) out.lineposition = coerce(attr + \".lineposition\", dfltObj.lineposition);\n if (!opts.noFontTextcase) out.textcase = coerce(attr + \".textcase\", dfltObj.textcase);\n if (!opts.noFontShadow) {\n var dfltShadow = dfltObj.shadow;\n if (dfltShadow === \"none\" && opts.autoShadowDflt) {\n dfltShadow = \"auto\";\n }\n out.shadow = coerce(attr + \".shadow\", dfltShadow);\n }\n return out;\n };\n exports.coercePattern = function(coerce, attr, markerColor, hasMarkerColorscale) {\n var shape = coerce(attr + \".shape\");\n if (shape) {\n coerce(attr + \".solidity\");\n coerce(attr + \".size\");\n var fillmode = coerce(attr + \".fillmode\");\n var isOverlay = fillmode === \"overlay\";\n if (!hasMarkerColorscale) {\n var bgcolor = coerce(\n attr + \".bgcolor\",\n isOverlay ? markerColor : void 0\n );\n coerce(\n attr + \".fgcolor\",\n isOverlay ? Color.contrast(bgcolor) : markerColor\n );\n }\n coerce(\n attr + \".fgopacity\",\n isOverlay ? 0.5 : 1\n );\n }\n };\n exports.coerceHoverinfo = function(traceIn, traceOut, layoutOut) {\n var moduleAttrs = traceOut._module.attributes;\n var attrs = moduleAttrs.hoverinfo ? moduleAttrs : baseTraceAttrs;\n var valObj = attrs.hoverinfo;\n var dflt;\n if (layoutOut._dataLength === 1) {\n var flags = valObj.dflt === \"all\" ? valObj.flags.slice() : valObj.dflt.split(\"+\");\n flags.splice(flags.indexOf(\"name\"), 1);\n dflt = flags.join(\"+\");\n }\n return exports.coerce(traceIn, traceOut, attrs, \"hoverinfo\", dflt);\n };\n exports.coerceSelectionMarkerOpacity = function(traceOut, coerce) {\n if (!traceOut.marker) return;\n var mo = traceOut.marker.opacity;\n if (mo === void 0) return;\n var smoDflt;\n var usmoDflt;\n if (!isArrayOrTypedArray(mo) && !traceOut.selected && !traceOut.unselected) {\n smoDflt = mo;\n usmoDflt = DESELECTDIM * mo;\n }\n coerce(\"selected.marker.opacity\", smoDflt);\n coerce(\"unselected.marker.opacity\", usmoDflt);\n };\n function validate(value, opts) {\n var valObjectDef = exports.valObjectMeta[opts.valType];\n if (opts.arrayOk && isArrayOrTypedArray(value)) return true;\n if (valObjectDef.validateFunction) {\n return valObjectDef.validateFunction(value, opts);\n }\n var failed = {};\n var out = failed;\n var propMock = { set: function(v) {\n out = v;\n } };\n valObjectDef.coerceFunction(value, propMock, failed, opts);\n return out !== failed;\n }\n exports.validate = validate;\n }\n });\n\n // src/plot_api/plot_config.js\n var require_plot_config = __commonJS({\n \"src/plot_api/plot_config.js\"(exports, module) {\n \"use strict\";\n var configAttributes = {\n staticPlot: {\n valType: \"boolean\",\n dflt: false\n },\n typesetMath: {\n valType: \"boolean\",\n dflt: true\n },\n plotlyServerURL: {\n valType: \"string\",\n dflt: \"\"\n },\n editable: {\n valType: \"boolean\",\n dflt: false\n },\n edits: {\n annotationPosition: {\n valType: \"boolean\",\n dflt: false\n },\n annotationTail: {\n valType: \"boolean\",\n dflt: false\n },\n annotationText: {\n valType: \"boolean\",\n dflt: false\n },\n axisTitleText: {\n valType: \"boolean\",\n dflt: false\n },\n colorbarPosition: {\n valType: \"boolean\",\n dflt: false\n },\n colorbarTitleText: {\n valType: \"boolean\",\n dflt: false\n },\n legendPosition: {\n valType: \"boolean\",\n dflt: false\n },\n legendText: {\n valType: \"boolean\",\n dflt: false\n },\n shapePosition: {\n valType: \"boolean\",\n dflt: false\n },\n titleText: {\n valType: \"boolean\",\n dflt: false\n }\n },\n editSelection: {\n valType: \"boolean\",\n dflt: true\n },\n autosizable: {\n valType: \"boolean\",\n dflt: false\n },\n responsive: {\n valType: \"boolean\",\n dflt: false\n },\n fillFrame: {\n valType: \"boolean\",\n dflt: false\n },\n frameMargins: {\n valType: \"number\",\n dflt: 0,\n min: 0,\n max: 0.5\n },\n scrollZoom: {\n valType: \"flaglist\",\n flags: [\"cartesian\", \"gl3d\", \"geo\", \"mapbox\", \"map\"],\n extras: [true, false],\n dflt: \"gl3d+geo+map\"\n },\n doubleClick: {\n valType: \"enumerated\",\n values: [false, \"reset\", \"autosize\", \"reset+autosize\"],\n dflt: \"reset+autosize\"\n },\n doubleClickDelay: {\n valType: \"number\",\n dflt: 300,\n min: 0\n },\n showAxisDragHandles: {\n valType: \"boolean\",\n dflt: true\n },\n showAxisRangeEntryBoxes: {\n valType: \"boolean\",\n dflt: true\n },\n showTips: {\n valType: \"boolean\",\n dflt: true\n },\n showLink: {\n valType: \"boolean\",\n dflt: false\n },\n linkText: {\n valType: \"string\",\n dflt: \"Edit chart\",\n noBlank: true\n },\n sendData: {\n valType: \"boolean\",\n dflt: true\n },\n showSources: {\n valType: \"any\",\n dflt: false\n },\n displayModeBar: {\n valType: \"enumerated\",\n values: [\"hover\", true, false],\n dflt: \"hover\"\n },\n showSendToCloud: {\n valType: \"boolean\",\n dflt: false\n },\n showEditInChartStudio: {\n valType: \"boolean\",\n dflt: false\n },\n modeBarButtonsToRemove: {\n valType: \"any\",\n dflt: []\n },\n modeBarButtonsToAdd: {\n valType: \"any\",\n dflt: []\n },\n modeBarButtons: {\n valType: \"any\",\n dflt: false\n },\n toImageButtonOptions: {\n valType: \"any\",\n dflt: {}\n },\n displaylogo: {\n valType: \"boolean\",\n dflt: true\n },\n watermark: {\n valType: \"boolean\",\n dflt: false\n },\n plotGlPixelRatio: {\n valType: \"number\",\n dflt: 2,\n min: 1,\n max: 4\n },\n setBackground: {\n valType: \"any\",\n dflt: \"transparent\"\n },\n topojsonURL: {\n valType: \"string\",\n noBlank: true,\n dflt: \"https://cdn.plot.ly/\"\n },\n mapboxAccessToken: {\n valType: \"string\",\n dflt: null\n },\n logging: {\n valType: \"integer\",\n min: 0,\n max: 2,\n dflt: 1\n },\n notifyOnLogging: {\n valType: \"integer\",\n min: 0,\n max: 2,\n dflt: 0\n },\n queueLength: {\n valType: \"integer\",\n min: 0,\n dflt: 0\n },\n locale: {\n valType: \"string\",\n dflt: \"en-US\"\n },\n locales: {\n valType: \"any\",\n dflt: {}\n }\n };\n var dfltConfig = {};\n function crawl(src, target) {\n for (var k in src) {\n var obj = src[k];\n if (obj.valType) {\n target[k] = obj.dflt;\n } else {\n if (!target[k]) {\n target[k] = {};\n }\n crawl(obj, target[k]);\n }\n }\n }\n crawl(configAttributes, dfltConfig);\n module.exports = {\n configAttributes,\n dfltConfig\n };\n }\n });\n\n // src/lib/notifier.js\n var require_notifier = __commonJS({\n \"src/lib/notifier.js\"(exports, module) {\n \"use strict\";\n var d3 = require_d3();\n var isNumeric = require_fast_isnumeric();\n var NOTEDATA = [];\n module.exports = function(text, displayLength) {\n if (NOTEDATA.indexOf(text) !== -1) return;\n NOTEDATA.push(text);\n var ts = 1e3;\n if (isNumeric(displayLength)) ts = displayLength;\n else if (displayLength === \"long\") ts = 3e3;\n var notifierContainer = d3.select(\"body\").selectAll(\".plotly-notifier\").data([0]);\n notifierContainer.enter().append(\"div\").classed(\"plotly-notifier\", true);\n var notes = notifierContainer.selectAll(\".notifier-note\").data(NOTEDATA);\n function killNote(transition) {\n transition.duration(700).style(\"opacity\", 0).each(\"end\", function(thisText) {\n var thisIndex = NOTEDATA.indexOf(thisText);\n if (thisIndex !== -1) NOTEDATA.splice(thisIndex, 1);\n d3.select(this).remove();\n });\n }\n notes.enter().append(\"div\").classed(\"notifier-note\", true).style(\"opacity\", 0).each(function(thisText) {\n var note = d3.select(this);\n note.append(\"button\").classed(\"notifier-close\", true).html(\"×\").on(\"click\", function() {\n note.transition().call(killNote);\n });\n var p = note.append(\"p\");\n var lines = thisText.split(//g);\n for (var i = 0; i < lines.length; i++) {\n if (i) p.append(\"br\");\n p.append(\"span\").text(lines[i]);\n }\n if (displayLength === \"stick\") {\n note.transition().duration(350).style(\"opacity\", 1);\n } else {\n note.transition().duration(700).style(\"opacity\", 1).transition().delay(ts).call(killNote);\n }\n });\n };\n }\n });\n\n // src/lib/loggers.js\n var require_loggers = __commonJS({\n \"src/lib/loggers.js\"(exports, module) {\n \"use strict\";\n var dfltConfig = require_plot_config().dfltConfig;\n var notifier = require_notifier();\n var loggers = module.exports = {};\n loggers.log = function() {\n var i;\n if (dfltConfig.logging > 1) {\n var messages = [\"LOG:\"];\n for (i = 0; i < arguments.length; i++) {\n messages.push(arguments[i]);\n }\n console.trace.apply(console, messages);\n }\n if (dfltConfig.notifyOnLogging > 1) {\n var lines = [];\n for (i = 0; i < arguments.length; i++) {\n lines.push(arguments[i]);\n }\n notifier(lines.join(\"
\"), \"long\");\n }\n };\n loggers.warn = function() {\n var i;\n if (dfltConfig.logging > 0) {\n var messages = [\"WARN:\"];\n for (i = 0; i < arguments.length; i++) {\n messages.push(arguments[i]);\n }\n console.trace.apply(console, messages);\n }\n if (dfltConfig.notifyOnLogging > 0) {\n var lines = [];\n for (i = 0; i < arguments.length; i++) {\n lines.push(arguments[i]);\n }\n notifier(lines.join(\"
\"), \"stick\");\n }\n };\n loggers.error = function() {\n var i;\n if (dfltConfig.logging > 0) {\n var messages = [\"ERROR:\"];\n for (i = 0; i < arguments.length; i++) {\n messages.push(arguments[i]);\n }\n console.error.apply(console, messages);\n }\n if (dfltConfig.notifyOnLogging > 0) {\n var lines = [];\n for (i = 0; i < arguments.length; i++) {\n lines.push(arguments[i]);\n }\n notifier(lines.join(\"
\"), \"stick\");\n }\n };\n }\n });\n\n // src/lib/noop.js\n var require_noop = __commonJS({\n \"src/lib/noop.js\"(exports, module) {\n \"use strict\";\n module.exports = function noop() {\n };\n }\n });\n\n // src/lib/push_unique.js\n var require_push_unique = __commonJS({\n \"src/lib/push_unique.js\"(exports, module) {\n \"use strict\";\n module.exports = function pushUnique(array, item) {\n if (item instanceof RegExp) {\n var itemStr = item.toString();\n for (var i = 0; i < array.length; i++) {\n if (array[i] instanceof RegExp && array[i].toString() === itemStr) {\n return array;\n }\n }\n array.push(item);\n } else if ((item || item === 0) && array.indexOf(item) === -1) array.push(item);\n return array;\n };\n }\n });\n\n // node_modules/gl-mat4/create.js\n var require_create = __commonJS({\n \"node_modules/gl-mat4/create.js\"(exports, module) {\n module.exports = create;\n function create() {\n var out = new Float32Array(16);\n out[0] = 1;\n out[1] = 0;\n out[2] = 0;\n out[3] = 0;\n out[4] = 0;\n out[5] = 1;\n out[6] = 0;\n out[7] = 0;\n out[8] = 0;\n out[9] = 0;\n out[10] = 1;\n out[11] = 0;\n out[12] = 0;\n out[13] = 0;\n out[14] = 0;\n out[15] = 1;\n return out;\n }\n }\n });\n\n // node_modules/gl-mat4/clone.js\n var require_clone = __commonJS({\n \"node_modules/gl-mat4/clone.js\"(exports, module) {\n module.exports = clone;\n function clone(a) {\n var out = new Float32Array(16);\n out[0] = a[0];\n out[1] = a[1];\n out[2] = a[2];\n out[3] = a[3];\n out[4] = a[4];\n out[5] = a[5];\n out[6] = a[6];\n out[7] = a[7];\n out[8] = a[8];\n out[9] = a[9];\n out[10] = a[10];\n out[11] = a[11];\n out[12] = a[12];\n out[13] = a[13];\n out[14] = a[14];\n out[15] = a[15];\n return out;\n }\n }\n });\n\n // node_modules/gl-mat4/copy.js\n var require_copy = __commonJS({\n \"node_modules/gl-mat4/copy.js\"(exports, module) {\n module.exports = copy;\n function copy(out, a) {\n out[0] = a[0];\n out[1] = a[1];\n out[2] = a[2];\n out[3] = a[3];\n out[4] = a[4];\n out[5] = a[5];\n out[6] = a[6];\n out[7] = a[7];\n out[8] = a[8];\n out[9] = a[9];\n out[10] = a[10];\n out[11] = a[11];\n out[12] = a[12];\n out[13] = a[13];\n out[14] = a[14];\n out[15] = a[15];\n return out;\n }\n }\n });\n\n // node_modules/gl-mat4/identity.js\n var require_identity = __commonJS({\n \"node_modules/gl-mat4/identity.js\"(exports, module) {\n module.exports = identity;\n function identity(out) {\n out[0] = 1;\n out[1] = 0;\n out[2] = 0;\n out[3] = 0;\n out[4] = 0;\n out[5] = 1;\n out[6] = 0;\n out[7] = 0;\n out[8] = 0;\n out[9] = 0;\n out[10] = 1;\n out[11] = 0;\n out[12] = 0;\n out[13] = 0;\n out[14] = 0;\n out[15] = 1;\n return out;\n }\n }\n });\n\n // node_modules/gl-mat4/transpose.js\n var require_transpose = __commonJS({\n \"node_modules/gl-mat4/transpose.js\"(exports, module) {\n module.exports = transpose;\n function transpose(out, a) {\n if (out === a) {\n var a01 = a[1], a02 = a[2], a03 = a[3], a12 = a[6], a13 = a[7], a23 = a[11];\n out[1] = a[4];\n out[2] = a[8];\n out[3] = a[12];\n out[4] = a01;\n out[6] = a[9];\n out[7] = a[13];\n out[8] = a02;\n out[9] = a12;\n out[11] = a[14];\n out[12] = a03;\n out[13] = a13;\n out[14] = a23;\n } else {\n out[0] = a[0];\n out[1] = a[4];\n out[2] = a[8];\n out[3] = a[12];\n out[4] = a[1];\n out[5] = a[5];\n out[6] = a[9];\n out[7] = a[13];\n out[8] = a[2];\n out[9] = a[6];\n out[10] = a[10];\n out[11] = a[14];\n out[12] = a[3];\n out[13] = a[7];\n out[14] = a[11];\n out[15] = a[15];\n }\n return out;\n }\n }\n });\n\n // node_modules/gl-mat4/invert.js\n var require_invert = __commonJS({\n \"node_modules/gl-mat4/invert.js\"(exports, module) {\n module.exports = invert;\n function invert(out, a) {\n var a00 = a[0], a01 = a[1], a02 = a[2], a03 = a[3], a10 = a[4], a11 = a[5], a12 = a[6], a13 = a[7], a20 = a[8], a21 = a[9], a22 = a[10], a23 = a[11], a30 = a[12], a31 = a[13], a32 = a[14], a33 = a[15], b00 = a00 * a11 - a01 * a10, b01 = a00 * a12 - a02 * a10, b02 = a00 * a13 - a03 * a10, b03 = a01 * a12 - a02 * a11, b04 = a01 * a13 - a03 * a11, b05 = a02 * a13 - a03 * a12, b06 = a20 * a31 - a21 * a30, b07 = a20 * a32 - a22 * a30, b08 = a20 * a33 - a23 * a30, b09 = a21 * a32 - a22 * a31, b10 = a21 * a33 - a23 * a31, b11 = a22 * a33 - a23 * a32, det = b00 * b11 - b01 * b10 + b02 * b09 + b03 * b08 - b04 * b07 + b05 * b06;\n if (!det) {\n return null;\n }\n det = 1 / det;\n out[0] = (a11 * b11 - a12 * b10 + a13 * b09) * det;\n out[1] = (a02 * b10 - a01 * b11 - a03 * b09) * det;\n out[2] = (a31 * b05 - a32 * b04 + a33 * b03) * det;\n out[3] = (a22 * b04 - a21 * b05 - a23 * b03) * det;\n out[4] = (a12 * b08 - a10 * b11 - a13 * b07) * det;\n out[5] = (a00 * b11 - a02 * b08 + a03 * b07) * det;\n out[6] = (a32 * b02 - a30 * b05 - a33 * b01) * det;\n out[7] = (a20 * b05 - a22 * b02 + a23 * b01) * det;\n out[8] = (a10 * b10 - a11 * b08 + a13 * b06) * det;\n out[9] = (a01 * b08 - a00 * b10 - a03 * b06) * det;\n out[10] = (a30 * b04 - a31 * b02 + a33 * b00) * det;\n out[11] = (a21 * b02 - a20 * b04 - a23 * b00) * det;\n out[12] = (a11 * b07 - a10 * b09 - a12 * b06) * det;\n out[13] = (a00 * b09 - a01 * b07 + a02 * b06) * det;\n out[14] = (a31 * b01 - a30 * b03 - a32 * b00) * det;\n out[15] = (a20 * b03 - a21 * b01 + a22 * b00) * det;\n return out;\n }\n }\n });\n\n // node_modules/gl-mat4/adjoint.js\n var require_adjoint = __commonJS({\n \"node_modules/gl-mat4/adjoint.js\"(exports, module) {\n module.exports = adjoint;\n function adjoint(out, a) {\n var a00 = a[0], a01 = a[1], a02 = a[2], a03 = a[3], a10 = a[4], a11 = a[5], a12 = a[6], a13 = a[7], a20 = a[8], a21 = a[9], a22 = a[10], a23 = a[11], a30 = a[12], a31 = a[13], a32 = a[14], a33 = a[15];\n out[0] = a11 * (a22 * a33 - a23 * a32) - a21 * (a12 * a33 - a13 * a32) + a31 * (a12 * a23 - a13 * a22);\n out[1] = -(a01 * (a22 * a33 - a23 * a32) - a21 * (a02 * a33 - a03 * a32) + a31 * (a02 * a23 - a03 * a22));\n out[2] = a01 * (a12 * a33 - a13 * a32) - a11 * (a02 * a33 - a03 * a32) + a31 * (a02 * a13 - a03 * a12);\n out[3] = -(a01 * (a12 * a23 - a13 * a22) - a11 * (a02 * a23 - a03 * a22) + a21 * (a02 * a13 - a03 * a12));\n out[4] = -(a10 * (a22 * a33 - a23 * a32) - a20 * (a12 * a33 - a13 * a32) + a30 * (a12 * a23 - a13 * a22));\n out[5] = a00 * (a22 * a33 - a23 * a32) - a20 * (a02 * a33 - a03 * a32) + a30 * (a02 * a23 - a03 * a22);\n out[6] = -(a00 * (a12 * a33 - a13 * a32) - a10 * (a02 * a33 - a03 * a32) + a30 * (a02 * a13 - a03 * a12));\n out[7] = a00 * (a12 * a23 - a13 * a22) - a10 * (a02 * a23 - a03 * a22) + a20 * (a02 * a13 - a03 * a12);\n out[8] = a10 * (a21 * a33 - a23 * a31) - a20 * (a11 * a33 - a13 * a31) + a30 * (a11 * a23 - a13 * a21);\n out[9] = -(a00 * (a21 * a33 - a23 * a31) - a20 * (a01 * a33 - a03 * a31) + a30 * (a01 * a23 - a03 * a21));\n out[10] = a00 * (a11 * a33 - a13 * a31) - a10 * (a01 * a33 - a03 * a31) + a30 * (a01 * a13 - a03 * a11);\n out[11] = -(a00 * (a11 * a23 - a13 * a21) - a10 * (a01 * a23 - a03 * a21) + a20 * (a01 * a13 - a03 * a11));\n out[12] = -(a10 * (a21 * a32 - a22 * a31) - a20 * (a11 * a32 - a12 * a31) + a30 * (a11 * a22 - a12 * a21));\n out[13] = a00 * (a21 * a32 - a22 * a31) - a20 * (a01 * a32 - a02 * a31) + a30 * (a01 * a22 - a02 * a21);\n out[14] = -(a00 * (a11 * a32 - a12 * a31) - a10 * (a01 * a32 - a02 * a31) + a30 * (a01 * a12 - a02 * a11));\n out[15] = a00 * (a11 * a22 - a12 * a21) - a10 * (a01 * a22 - a02 * a21) + a20 * (a01 * a12 - a02 * a11);\n return out;\n }\n }\n });\n\n // node_modules/gl-mat4/determinant.js\n var require_determinant = __commonJS({\n \"node_modules/gl-mat4/determinant.js\"(exports, module) {\n module.exports = determinant;\n function determinant(a) {\n var a00 = a[0], a01 = a[1], a02 = a[2], a03 = a[3], a10 = a[4], a11 = a[5], a12 = a[6], a13 = a[7], a20 = a[8], a21 = a[9], a22 = a[10], a23 = a[11], a30 = a[12], a31 = a[13], a32 = a[14], a33 = a[15], b00 = a00 * a11 - a01 * a10, b01 = a00 * a12 - a02 * a10, b02 = a00 * a13 - a03 * a10, b03 = a01 * a12 - a02 * a11, b04 = a01 * a13 - a03 * a11, b05 = a02 * a13 - a03 * a12, b06 = a20 * a31 - a21 * a30, b07 = a20 * a32 - a22 * a30, b08 = a20 * a33 - a23 * a30, b09 = a21 * a32 - a22 * a31, b10 = a21 * a33 - a23 * a31, b11 = a22 * a33 - a23 * a32;\n return b00 * b11 - b01 * b10 + b02 * b09 + b03 * b08 - b04 * b07 + b05 * b06;\n }\n }\n });\n\n // node_modules/gl-mat4/multiply.js\n var require_multiply = __commonJS({\n \"node_modules/gl-mat4/multiply.js\"(exports, module) {\n module.exports = multiply;\n function multiply(out, a, b) {\n var a00 = a[0], a01 = a[1], a02 = a[2], a03 = a[3], a10 = a[4], a11 = a[5], a12 = a[6], a13 = a[7], a20 = a[8], a21 = a[9], a22 = a[10], a23 = a[11], a30 = a[12], a31 = a[13], a32 = a[14], a33 = a[15];\n var b0 = b[0], b1 = b[1], b2 = b[2], b3 = b[3];\n out[0] = b0 * a00 + b1 * a10 + b2 * a20 + b3 * a30;\n out[1] = b0 * a01 + b1 * a11 + b2 * a21 + b3 * a31;\n out[2] = b0 * a02 + b1 * a12 + b2 * a22 + b3 * a32;\n out[3] = b0 * a03 + b1 * a13 + b2 * a23 + b3 * a33;\n b0 = b[4];\n b1 = b[5];\n b2 = b[6];\n b3 = b[7];\n out[4] = b0 * a00 + b1 * a10 + b2 * a20 + b3 * a30;\n out[5] = b0 * a01 + b1 * a11 + b2 * a21 + b3 * a31;\n out[6] = b0 * a02 + b1 * a12 + b2 * a22 + b3 * a32;\n out[7] = b0 * a03 + b1 * a13 + b2 * a23 + b3 * a33;\n b0 = b[8];\n b1 = b[9];\n b2 = b[10];\n b3 = b[11];\n out[8] = b0 * a00 + b1 * a10 + b2 * a20 + b3 * a30;\n out[9] = b0 * a01 + b1 * a11 + b2 * a21 + b3 * a31;\n out[10] = b0 * a02 + b1 * a12 + b2 * a22 + b3 * a32;\n out[11] = b0 * a03 + b1 * a13 + b2 * a23 + b3 * a33;\n b0 = b[12];\n b1 = b[13];\n b2 = b[14];\n b3 = b[15];\n out[12] = b0 * a00 + b1 * a10 + b2 * a20 + b3 * a30;\n out[13] = b0 * a01 + b1 * a11 + b2 * a21 + b3 * a31;\n out[14] = b0 * a02 + b1 * a12 + b2 * a22 + b3 * a32;\n out[15] = b0 * a03 + b1 * a13 + b2 * a23 + b3 * a33;\n return out;\n }\n }\n });\n\n // node_modules/gl-mat4/translate.js\n var require_translate = __commonJS({\n \"node_modules/gl-mat4/translate.js\"(exports, module) {\n module.exports = translate;\n function translate(out, a, v) {\n var x = v[0], y = v[1], z = v[2], a00, a01, a02, a03, a10, a11, a12, a13, a20, a21, a22, a23;\n if (a === out) {\n out[12] = a[0] * x + a[4] * y + a[8] * z + a[12];\n out[13] = a[1] * x + a[5] * y + a[9] * z + a[13];\n out[14] = a[2] * x + a[6] * y + a[10] * z + a[14];\n out[15] = a[3] * x + a[7] * y + a[11] * z + a[15];\n } else {\n a00 = a[0];\n a01 = a[1];\n a02 = a[2];\n a03 = a[3];\n a10 = a[4];\n a11 = a[5];\n a12 = a[6];\n a13 = a[7];\n a20 = a[8];\n a21 = a[9];\n a22 = a[10];\n a23 = a[11];\n out[0] = a00;\n out[1] = a01;\n out[2] = a02;\n out[3] = a03;\n out[4] = a10;\n out[5] = a11;\n out[6] = a12;\n out[7] = a13;\n out[8] = a20;\n out[9] = a21;\n out[10] = a22;\n out[11] = a23;\n out[12] = a00 * x + a10 * y + a20 * z + a[12];\n out[13] = a01 * x + a11 * y + a21 * z + a[13];\n out[14] = a02 * x + a12 * y + a22 * z + a[14];\n out[15] = a03 * x + a13 * y + a23 * z + a[15];\n }\n return out;\n }\n }\n });\n\n // node_modules/gl-mat4/scale.js\n var require_scale = __commonJS({\n \"node_modules/gl-mat4/scale.js\"(exports, module) {\n module.exports = scale;\n function scale(out, a, v) {\n var x = v[0], y = v[1], z = v[2];\n out[0] = a[0] * x;\n out[1] = a[1] * x;\n out[2] = a[2] * x;\n out[3] = a[3] * x;\n out[4] = a[4] * y;\n out[5] = a[5] * y;\n out[6] = a[6] * y;\n out[7] = a[7] * y;\n out[8] = a[8] * z;\n out[9] = a[9] * z;\n out[10] = a[10] * z;\n out[11] = a[11] * z;\n out[12] = a[12];\n out[13] = a[13];\n out[14] = a[14];\n out[15] = a[15];\n return out;\n }\n }\n });\n\n // node_modules/gl-mat4/rotate.js\n var require_rotate = __commonJS({\n \"node_modules/gl-mat4/rotate.js\"(exports, module) {\n module.exports = rotate;\n function rotate(out, a, rad, axis) {\n var x = axis[0], y = axis[1], z = axis[2], len = Math.sqrt(x * x + y * y + z * z), s, c, t, a00, a01, a02, a03, a10, a11, a12, a13, a20, a21, a22, a23, b00, b01, b02, b10, b11, b12, b20, b21, b22;\n if (Math.abs(len) < 1e-6) {\n return null;\n }\n len = 1 / len;\n x *= len;\n y *= len;\n z *= len;\n s = Math.sin(rad);\n c = Math.cos(rad);\n t = 1 - c;\n a00 = a[0];\n a01 = a[1];\n a02 = a[2];\n a03 = a[3];\n a10 = a[4];\n a11 = a[5];\n a12 = a[6];\n a13 = a[7];\n a20 = a[8];\n a21 = a[9];\n a22 = a[10];\n a23 = a[11];\n b00 = x * x * t + c;\n b01 = y * x * t + z * s;\n b02 = z * x * t - y * s;\n b10 = x * y * t - z * s;\n b11 = y * y * t + c;\n b12 = z * y * t + x * s;\n b20 = x * z * t + y * s;\n b21 = y * z * t - x * s;\n b22 = z * z * t + c;\n out[0] = a00 * b00 + a10 * b01 + a20 * b02;\n out[1] = a01 * b00 + a11 * b01 + a21 * b02;\n out[2] = a02 * b00 + a12 * b01 + a22 * b02;\n out[3] = a03 * b00 + a13 * b01 + a23 * b02;\n out[4] = a00 * b10 + a10 * b11 + a20 * b12;\n out[5] = a01 * b10 + a11 * b11 + a21 * b12;\n out[6] = a02 * b10 + a12 * b11 + a22 * b12;\n out[7] = a03 * b10 + a13 * b11 + a23 * b12;\n out[8] = a00 * b20 + a10 * b21 + a20 * b22;\n out[9] = a01 * b20 + a11 * b21 + a21 * b22;\n out[10] = a02 * b20 + a12 * b21 + a22 * b22;\n out[11] = a03 * b20 + a13 * b21 + a23 * b22;\n if (a !== out) {\n out[12] = a[12];\n out[13] = a[13];\n out[14] = a[14];\n out[15] = a[15];\n }\n return out;\n }\n }\n });\n\n // node_modules/gl-mat4/rotateX.js\n var require_rotateX = __commonJS({\n \"node_modules/gl-mat4/rotateX.js\"(exports, module) {\n module.exports = rotateX;\n function rotateX(out, a, rad) {\n var s = Math.sin(rad), c = Math.cos(rad), a10 = a[4], a11 = a[5], a12 = a[6], a13 = a[7], a20 = a[8], a21 = a[9], a22 = a[10], a23 = a[11];\n if (a !== out) {\n out[0] = a[0];\n out[1] = a[1];\n out[2] = a[2];\n out[3] = a[3];\n out[12] = a[12];\n out[13] = a[13];\n out[14] = a[14];\n out[15] = a[15];\n }\n out[4] = a10 * c + a20 * s;\n out[5] = a11 * c + a21 * s;\n out[6] = a12 * c + a22 * s;\n out[7] = a13 * c + a23 * s;\n out[8] = a20 * c - a10 * s;\n out[9] = a21 * c - a11 * s;\n out[10] = a22 * c - a12 * s;\n out[11] = a23 * c - a13 * s;\n return out;\n }\n }\n });\n\n // node_modules/gl-mat4/rotateY.js\n var require_rotateY = __commonJS({\n \"node_modules/gl-mat4/rotateY.js\"(exports, module) {\n module.exports = rotateY;\n function rotateY(out, a, rad) {\n var s = Math.sin(rad), c = Math.cos(rad), a00 = a[0], a01 = a[1], a02 = a[2], a03 = a[3], a20 = a[8], a21 = a[9], a22 = a[10], a23 = a[11];\n if (a !== out) {\n out[4] = a[4];\n out[5] = a[5];\n out[6] = a[6];\n out[7] = a[7];\n out[12] = a[12];\n out[13] = a[13];\n out[14] = a[14];\n out[15] = a[15];\n }\n out[0] = a00 * c - a20 * s;\n out[1] = a01 * c - a21 * s;\n out[2] = a02 * c - a22 * s;\n out[3] = a03 * c - a23 * s;\n out[8] = a00 * s + a20 * c;\n out[9] = a01 * s + a21 * c;\n out[10] = a02 * s + a22 * c;\n out[11] = a03 * s + a23 * c;\n return out;\n }\n }\n });\n\n // node_modules/gl-mat4/rotateZ.js\n var require_rotateZ = __commonJS({\n \"node_modules/gl-mat4/rotateZ.js\"(exports, module) {\n module.exports = rotateZ;\n function rotateZ(out, a, rad) {\n var s = Math.sin(rad), c = Math.cos(rad), a00 = a[0], a01 = a[1], a02 = a[2], a03 = a[3], a10 = a[4], a11 = a[5], a12 = a[6], a13 = a[7];\n if (a !== out) {\n out[8] = a[8];\n out[9] = a[9];\n out[10] = a[10];\n out[11] = a[11];\n out[12] = a[12];\n out[13] = a[13];\n out[14] = a[14];\n out[15] = a[15];\n }\n out[0] = a00 * c + a10 * s;\n out[1] = a01 * c + a11 * s;\n out[2] = a02 * c + a12 * s;\n out[3] = a03 * c + a13 * s;\n out[4] = a10 * c - a00 * s;\n out[5] = a11 * c - a01 * s;\n out[6] = a12 * c - a02 * s;\n out[7] = a13 * c - a03 * s;\n return out;\n }\n }\n });\n\n // node_modules/gl-mat4/fromRotation.js\n var require_fromRotation = __commonJS({\n \"node_modules/gl-mat4/fromRotation.js\"(exports, module) {\n module.exports = fromRotation;\n function fromRotation(out, rad, axis) {\n var s, c, t;\n var x = axis[0];\n var y = axis[1];\n var z = axis[2];\n var len = Math.sqrt(x * x + y * y + z * z);\n if (Math.abs(len) < 1e-6) {\n return null;\n }\n len = 1 / len;\n x *= len;\n y *= len;\n z *= len;\n s = Math.sin(rad);\n c = Math.cos(rad);\n t = 1 - c;\n out[0] = x * x * t + c;\n out[1] = y * x * t + z * s;\n out[2] = z * x * t - y * s;\n out[3] = 0;\n out[4] = x * y * t - z * s;\n out[5] = y * y * t + c;\n out[6] = z * y * t + x * s;\n out[7] = 0;\n out[8] = x * z * t + y * s;\n out[9] = y * z * t - x * s;\n out[10] = z * z * t + c;\n out[11] = 0;\n out[12] = 0;\n out[13] = 0;\n out[14] = 0;\n out[15] = 1;\n return out;\n }\n }\n });\n\n // node_modules/gl-mat4/fromRotationTranslation.js\n var require_fromRotationTranslation = __commonJS({\n \"node_modules/gl-mat4/fromRotationTranslation.js\"(exports, module) {\n module.exports = fromRotationTranslation;\n function fromRotationTranslation(out, q, v) {\n var x = q[0], y = q[1], z = q[2], w = q[3], x2 = x + x, y2 = y + y, z2 = z + z, xx = x * x2, xy = x * y2, xz = x * z2, yy = y * y2, yz = y * z2, zz = z * z2, wx = w * x2, wy = w * y2, wz = w * z2;\n out[0] = 1 - (yy + zz);\n out[1] = xy + wz;\n out[2] = xz - wy;\n out[3] = 0;\n out[4] = xy - wz;\n out[5] = 1 - (xx + zz);\n out[6] = yz + wx;\n out[7] = 0;\n out[8] = xz + wy;\n out[9] = yz - wx;\n out[10] = 1 - (xx + yy);\n out[11] = 0;\n out[12] = v[0];\n out[13] = v[1];\n out[14] = v[2];\n out[15] = 1;\n return out;\n }\n }\n });\n\n // node_modules/gl-mat4/fromScaling.js\n var require_fromScaling = __commonJS({\n \"node_modules/gl-mat4/fromScaling.js\"(exports, module) {\n module.exports = fromScaling;\n function fromScaling(out, v) {\n out[0] = v[0];\n out[1] = 0;\n out[2] = 0;\n out[3] = 0;\n out[4] = 0;\n out[5] = v[1];\n out[6] = 0;\n out[7] = 0;\n out[8] = 0;\n out[9] = 0;\n out[10] = v[2];\n out[11] = 0;\n out[12] = 0;\n out[13] = 0;\n out[14] = 0;\n out[15] = 1;\n return out;\n }\n }\n });\n\n // node_modules/gl-mat4/fromTranslation.js\n var require_fromTranslation = __commonJS({\n \"node_modules/gl-mat4/fromTranslation.js\"(exports, module) {\n module.exports = fromTranslation;\n function fromTranslation(out, v) {\n out[0] = 1;\n out[1] = 0;\n out[2] = 0;\n out[3] = 0;\n out[4] = 0;\n out[5] = 1;\n out[6] = 0;\n out[7] = 0;\n out[8] = 0;\n out[9] = 0;\n out[10] = 1;\n out[11] = 0;\n out[12] = v[0];\n out[13] = v[1];\n out[14] = v[2];\n out[15] = 1;\n return out;\n }\n }\n });\n\n // node_modules/gl-mat4/fromXRotation.js\n var require_fromXRotation = __commonJS({\n \"node_modules/gl-mat4/fromXRotation.js\"(exports, module) {\n module.exports = fromXRotation;\n function fromXRotation(out, rad) {\n var s = Math.sin(rad), c = Math.cos(rad);\n out[0] = 1;\n out[1] = 0;\n out[2] = 0;\n out[3] = 0;\n out[4] = 0;\n out[5] = c;\n out[6] = s;\n out[7] = 0;\n out[8] = 0;\n out[9] = -s;\n out[10] = c;\n out[11] = 0;\n out[12] = 0;\n out[13] = 0;\n out[14] = 0;\n out[15] = 1;\n return out;\n }\n }\n });\n\n // node_modules/gl-mat4/fromYRotation.js\n var require_fromYRotation = __commonJS({\n \"node_modules/gl-mat4/fromYRotation.js\"(exports, module) {\n module.exports = fromYRotation;\n function fromYRotation(out, rad) {\n var s = Math.sin(rad), c = Math.cos(rad);\n out[0] = c;\n out[1] = 0;\n out[2] = -s;\n out[3] = 0;\n out[4] = 0;\n out[5] = 1;\n out[6] = 0;\n out[7] = 0;\n out[8] = s;\n out[9] = 0;\n out[10] = c;\n out[11] = 0;\n out[12] = 0;\n out[13] = 0;\n out[14] = 0;\n out[15] = 1;\n return out;\n }\n }\n });\n\n // node_modules/gl-mat4/fromZRotation.js\n var require_fromZRotation = __commonJS({\n \"node_modules/gl-mat4/fromZRotation.js\"(exports, module) {\n module.exports = fromZRotation;\n function fromZRotation(out, rad) {\n var s = Math.sin(rad), c = Math.cos(rad);\n out[0] = c;\n out[1] = s;\n out[2] = 0;\n out[3] = 0;\n out[4] = -s;\n out[5] = c;\n out[6] = 0;\n out[7] = 0;\n out[8] = 0;\n out[9] = 0;\n out[10] = 1;\n out[11] = 0;\n out[12] = 0;\n out[13] = 0;\n out[14] = 0;\n out[15] = 1;\n return out;\n }\n }\n });\n\n // node_modules/gl-mat4/fromQuat.js\n var require_fromQuat = __commonJS({\n \"node_modules/gl-mat4/fromQuat.js\"(exports, module) {\n module.exports = fromQuat;\n function fromQuat(out, q) {\n var x = q[0], y = q[1], z = q[2], w = q[3], x2 = x + x, y2 = y + y, z2 = z + z, xx = x * x2, yx = y * x2, yy = y * y2, zx = z * x2, zy = z * y2, zz = z * z2, wx = w * x2, wy = w * y2, wz = w * z2;\n out[0] = 1 - yy - zz;\n out[1] = yx + wz;\n out[2] = zx - wy;\n out[3] = 0;\n out[4] = yx - wz;\n out[5] = 1 - xx - zz;\n out[6] = zy + wx;\n out[7] = 0;\n out[8] = zx + wy;\n out[9] = zy - wx;\n out[10] = 1 - xx - yy;\n out[11] = 0;\n out[12] = 0;\n out[13] = 0;\n out[14] = 0;\n out[15] = 1;\n return out;\n }\n }\n });\n\n // node_modules/gl-mat4/frustum.js\n var require_frustum = __commonJS({\n \"node_modules/gl-mat4/frustum.js\"(exports, module) {\n module.exports = frustum;\n function frustum(out, left, right, bottom, top, near, far) {\n var rl = 1 / (right - left), tb = 1 / (top - bottom), nf = 1 / (near - far);\n out[0] = near * 2 * rl;\n out[1] = 0;\n out[2] = 0;\n out[3] = 0;\n out[4] = 0;\n out[5] = near * 2 * tb;\n out[6] = 0;\n out[7] = 0;\n out[8] = (right + left) * rl;\n out[9] = (top + bottom) * tb;\n out[10] = (far + near) * nf;\n out[11] = -1;\n out[12] = 0;\n out[13] = 0;\n out[14] = far * near * 2 * nf;\n out[15] = 0;\n return out;\n }\n }\n });\n\n // node_modules/gl-mat4/perspective.js\n var require_perspective = __commonJS({\n \"node_modules/gl-mat4/perspective.js\"(exports, module) {\n module.exports = perspective;\n function perspective(out, fovy, aspect, near, far) {\n var f = 1 / Math.tan(fovy / 2), nf = 1 / (near - far);\n out[0] = f / aspect;\n out[1] = 0;\n out[2] = 0;\n out[3] = 0;\n out[4] = 0;\n out[5] = f;\n out[6] = 0;\n out[7] = 0;\n out[8] = 0;\n out[9] = 0;\n out[10] = (far + near) * nf;\n out[11] = -1;\n out[12] = 0;\n out[13] = 0;\n out[14] = 2 * far * near * nf;\n out[15] = 0;\n return out;\n }\n }\n });\n\n // node_modules/gl-mat4/perspectiveFromFieldOfView.js\n var require_perspectiveFromFieldOfView = __commonJS({\n \"node_modules/gl-mat4/perspectiveFromFieldOfView.js\"(exports, module) {\n module.exports = perspectiveFromFieldOfView;\n function perspectiveFromFieldOfView(out, fov, near, far) {\n var upTan = Math.tan(fov.upDegrees * Math.PI / 180), downTan = Math.tan(fov.downDegrees * Math.PI / 180), leftTan = Math.tan(fov.leftDegrees * Math.PI / 180), rightTan = Math.tan(fov.rightDegrees * Math.PI / 180), xScale = 2 / (leftTan + rightTan), yScale = 2 / (upTan + downTan);\n out[0] = xScale;\n out[1] = 0;\n out[2] = 0;\n out[3] = 0;\n out[4] = 0;\n out[5] = yScale;\n out[6] = 0;\n out[7] = 0;\n out[8] = -((leftTan - rightTan) * xScale * 0.5);\n out[9] = (upTan - downTan) * yScale * 0.5;\n out[10] = far / (near - far);\n out[11] = -1;\n out[12] = 0;\n out[13] = 0;\n out[14] = far * near / (near - far);\n out[15] = 0;\n return out;\n }\n }\n });\n\n // node_modules/gl-mat4/ortho.js\n var require_ortho = __commonJS({\n \"node_modules/gl-mat4/ortho.js\"(exports, module) {\n module.exports = ortho;\n function ortho(out, left, right, bottom, top, near, far) {\n var lr = 1 / (left - right), bt = 1 / (bottom - top), nf = 1 / (near - far);\n out[0] = -2 * lr;\n out[1] = 0;\n out[2] = 0;\n out[3] = 0;\n out[4] = 0;\n out[5] = -2 * bt;\n out[6] = 0;\n out[7] = 0;\n out[8] = 0;\n out[9] = 0;\n out[10] = 2 * nf;\n out[11] = 0;\n out[12] = (left + right) * lr;\n out[13] = (top + bottom) * bt;\n out[14] = (far + near) * nf;\n out[15] = 1;\n return out;\n }\n }\n });\n\n // node_modules/gl-mat4/lookAt.js\n var require_lookAt = __commonJS({\n \"node_modules/gl-mat4/lookAt.js\"(exports, module) {\n var identity = require_identity();\n module.exports = lookAt;\n function lookAt(out, eye, center, up) {\n var x0, x1, x2, y0, y1, y2, z0, z1, z2, len, eyex = eye[0], eyey = eye[1], eyez = eye[2], upx = up[0], upy = up[1], upz = up[2], centerx = center[0], centery = center[1], centerz = center[2];\n if (Math.abs(eyex - centerx) < 1e-6 && Math.abs(eyey - centery) < 1e-6 && Math.abs(eyez - centerz) < 1e-6) {\n return identity(out);\n }\n z0 = eyex - centerx;\n z1 = eyey - centery;\n z2 = eyez - centerz;\n len = 1 / Math.sqrt(z0 * z0 + z1 * z1 + z2 * z2);\n z0 *= len;\n z1 *= len;\n z2 *= len;\n x0 = upy * z2 - upz * z1;\n x1 = upz * z0 - upx * z2;\n x2 = upx * z1 - upy * z0;\n len = Math.sqrt(x0 * x0 + x1 * x1 + x2 * x2);\n if (!len) {\n x0 = 0;\n x1 = 0;\n x2 = 0;\n } else {\n len = 1 / len;\n x0 *= len;\n x1 *= len;\n x2 *= len;\n }\n y0 = z1 * x2 - z2 * x1;\n y1 = z2 * x0 - z0 * x2;\n y2 = z0 * x1 - z1 * x0;\n len = Math.sqrt(y0 * y0 + y1 * y1 + y2 * y2);\n if (!len) {\n y0 = 0;\n y1 = 0;\n y2 = 0;\n } else {\n len = 1 / len;\n y0 *= len;\n y1 *= len;\n y2 *= len;\n }\n out[0] = x0;\n out[1] = y0;\n out[2] = z0;\n out[3] = 0;\n out[4] = x1;\n out[5] = y1;\n out[6] = z1;\n out[7] = 0;\n out[8] = x2;\n out[9] = y2;\n out[10] = z2;\n out[11] = 0;\n out[12] = -(x0 * eyex + x1 * eyey + x2 * eyez);\n out[13] = -(y0 * eyex + y1 * eyey + y2 * eyez);\n out[14] = -(z0 * eyex + z1 * eyey + z2 * eyez);\n out[15] = 1;\n return out;\n }\n }\n });\n\n // node_modules/gl-mat4/str.js\n var require_str = __commonJS({\n \"node_modules/gl-mat4/str.js\"(exports, module) {\n module.exports = str;\n function str(a) {\n return \"mat4(\" + a[0] + \", \" + a[1] + \", \" + a[2] + \", \" + a[3] + \", \" + a[4] + \", \" + a[5] + \", \" + a[6] + \", \" + a[7] + \", \" + a[8] + \", \" + a[9] + \", \" + a[10] + \", \" + a[11] + \", \" + a[12] + \", \" + a[13] + \", \" + a[14] + \", \" + a[15] + \")\";\n }\n }\n });\n\n // node_modules/gl-mat4/index.js\n var require_gl_mat4 = __commonJS({\n \"node_modules/gl-mat4/index.js\"(exports, module) {\n module.exports = {\n create: require_create(),\n clone: require_clone(),\n copy: require_copy(),\n identity: require_identity(),\n transpose: require_transpose(),\n invert: require_invert(),\n adjoint: require_adjoint(),\n determinant: require_determinant(),\n multiply: require_multiply(),\n translate: require_translate(),\n scale: require_scale(),\n rotate: require_rotate(),\n rotateX: require_rotateX(),\n rotateY: require_rotateY(),\n rotateZ: require_rotateZ(),\n fromRotation: require_fromRotation(),\n fromRotationTranslation: require_fromRotationTranslation(),\n fromScaling: require_fromScaling(),\n fromTranslation: require_fromTranslation(),\n fromXRotation: require_fromXRotation(),\n fromYRotation: require_fromYRotation(),\n fromZRotation: require_fromZRotation(),\n fromQuat: require_fromQuat(),\n frustum: require_frustum(),\n perspective: require_perspective(),\n perspectiveFromFieldOfView: require_perspectiveFromFieldOfView(),\n ortho: require_ortho(),\n lookAt: require_lookAt(),\n str: require_str()\n };\n }\n });\n\n // src/lib/matrix.js\n var require_matrix = __commonJS({\n \"src/lib/matrix.js\"(exports) {\n \"use strict\";\n var mat4X4 = require_gl_mat4();\n exports.init2dArray = function(rowLength, colLength) {\n var array = new Array(rowLength);\n for (var i = 0; i < rowLength; i++) array[i] = new Array(colLength);\n return array;\n };\n exports.transposeRagged = function(z) {\n var maxlen = 0;\n var zlen = z.length;\n var i, j;\n for (i = 0; i < zlen; i++) maxlen = Math.max(maxlen, z[i].length);\n var t = new Array(maxlen);\n for (i = 0; i < maxlen; i++) {\n t[i] = new Array(zlen);\n for (j = 0; j < zlen; j++) t[i][j] = z[j][i];\n }\n return t;\n };\n exports.dot = function(x, y) {\n if (!(x.length && y.length) || x.length !== y.length) return null;\n var len = x.length;\n var out;\n var i;\n if (x[0].length) {\n out = new Array(len);\n for (i = 0; i < len; i++) out[i] = exports.dot(x[i], y);\n } else if (y[0].length) {\n var yTranspose = exports.transposeRagged(y);\n out = new Array(yTranspose.length);\n for (i = 0; i < yTranspose.length; i++) out[i] = exports.dot(x, yTranspose[i]);\n } else {\n out = 0;\n for (i = 0; i < len; i++) out += x[i] * y[i];\n }\n return out;\n };\n exports.translationMatrix = function(x, y) {\n return [[1, 0, x], [0, 1, y], [0, 0, 1]];\n };\n exports.rotationMatrix = function(alpha) {\n var a = alpha * Math.PI / 180;\n return [\n [Math.cos(a), -Math.sin(a), 0],\n [Math.sin(a), Math.cos(a), 0],\n [0, 0, 1]\n ];\n };\n exports.rotationXYMatrix = function(a, x, y) {\n return exports.dot(\n exports.dot(\n exports.translationMatrix(x, y),\n exports.rotationMatrix(a)\n ),\n exports.translationMatrix(-x, -y)\n );\n };\n exports.apply3DTransform = function(transform) {\n return function() {\n var args = arguments;\n var xyz = arguments.length === 1 ? args[0] : [args[0], args[1], args[2] || 0];\n return exports.dot(transform, [xyz[0], xyz[1], xyz[2], 1]).slice(0, 3);\n };\n };\n exports.apply2DTransform = function(transform) {\n return function() {\n var args = arguments;\n if (args.length === 3) {\n args = args[0];\n }\n var xy = arguments.length === 1 ? args[0] : [args[0], args[1]];\n return exports.dot(transform, [xy[0], xy[1], 1]).slice(0, 2);\n };\n };\n exports.apply2DTransform2 = function(transform) {\n var at = exports.apply2DTransform(transform);\n return function(xys) {\n return at(xys.slice(0, 2)).concat(at(xys.slice(2, 4)));\n };\n };\n exports.convertCssMatrix = function(m) {\n if (m) {\n var len = m.length;\n if (len === 16) return m;\n if (len === 6) {\n return [\n m[0],\n m[1],\n 0,\n 0,\n m[2],\n m[3],\n 0,\n 0,\n 0,\n 0,\n 1,\n 0,\n m[4],\n m[5],\n 0,\n 1\n ];\n }\n }\n return [\n 1,\n 0,\n 0,\n 0,\n 0,\n 1,\n 0,\n 0,\n 0,\n 0,\n 1,\n 0,\n 0,\n 0,\n 0,\n 1\n ];\n };\n exports.inverseTransformMatrix = function(m) {\n var out = [];\n mat4X4.invert(out, m);\n return [\n [out[0], out[1], out[2], out[3]],\n [out[4], out[5], out[6], out[7]],\n [out[8], out[9], out[10], out[11]],\n [out[12], out[13], out[14], out[15]]\n ];\n };\n }\n });\n\n // src/lib/dom.js\n var require_dom = __commonJS({\n \"src/lib/dom.js\"(exports, module) {\n \"use strict\";\n var d3 = require_d3();\n var loggers = require_loggers();\n var matrix = require_matrix();\n var mat4X4 = require_gl_mat4();\n function getGraphDiv(gd) {\n var gdElement;\n if (typeof gd === \"string\") {\n gdElement = document.getElementById(gd);\n if (gdElement === null) {\n throw new Error(\"No DOM element with id '\" + gd + \"' exists on the page.\");\n }\n return gdElement;\n } else if (gd === null || gd === void 0) {\n throw new Error(\"DOM element provided is null or undefined\");\n }\n return gd;\n }\n function isPlotDiv(el) {\n var el3 = d3.select(el);\n return el3.node() instanceof HTMLElement && el3.size() && el3.classed(\"js-plotly-plot\");\n }\n function removeElement(el) {\n var elParent = el && el.parentNode;\n if (elParent) elParent.removeChild(el);\n }\n function addStyleRule(selector, styleString) {\n addRelatedStyleRule(\"global\", selector, styleString);\n }\n function addRelatedStyleRule(uid, selector, styleString) {\n var id = \"plotly.js-style-\" + uid;\n var style = document.getElementById(id);\n if (style && style.matches(\".no-inline-styles\")) {\n return;\n }\n if (!style) {\n style = document.createElement(\"style\");\n style.setAttribute(\"id\", id);\n style.appendChild(document.createTextNode(\"\"));\n document.head.appendChild(style);\n }\n var styleSheet = style.sheet;\n if (!styleSheet) {\n loggers.warn(\"Cannot addRelatedStyleRule, probably due to strict CSP...\");\n } else if (styleSheet.insertRule) {\n styleSheet.insertRule(selector + \"{\" + styleString + \"}\", 0);\n } else if (styleSheet.addRule) {\n styleSheet.addRule(selector, styleString, 0);\n } else loggers.warn(\"addStyleRule failed\");\n }\n function deleteRelatedStyleRule(uid) {\n var id = \"plotly.js-style-\" + uid;\n var style = document.getElementById(id);\n if (style) removeElement(style);\n }\n function setStyleOnHover(selector, activeSelector, childSelector, activeStyle, inactiveStyle, element) {\n var activeStyleParts = activeStyle.split(\":\");\n var inactiveStyleParts = inactiveStyle.split(\":\");\n var eventAddedAttrName = \"data-btn-style-event-added\";\n if (!element) {\n element = document;\n }\n element.querySelectorAll(selector).forEach(function(el) {\n if (!el.getAttribute(eventAddedAttrName)) {\n el.addEventListener(\"mouseenter\", function() {\n var childEl = this.querySelector(childSelector);\n if (childEl) {\n childEl.style[activeStyleParts[0]] = activeStyleParts[1];\n }\n });\n el.addEventListener(\"mouseleave\", function() {\n var childEl = this.querySelector(childSelector);\n if (childEl) {\n if (activeSelector && this.matches(activeSelector)) {\n childEl.style[activeStyleParts[0]] = activeStyleParts[1];\n } else {\n childEl.style[inactiveStyleParts[0]] = inactiveStyleParts[1];\n }\n }\n });\n el.setAttribute(eventAddedAttrName, true);\n }\n });\n }\n function getFullTransformMatrix(element) {\n var allElements = getElementAndAncestors(element);\n var out = [\n 1,\n 0,\n 0,\n 0,\n 0,\n 1,\n 0,\n 0,\n 0,\n 0,\n 1,\n 0,\n 0,\n 0,\n 0,\n 1\n ];\n allElements.forEach(function(e) {\n var t = getElementTransformMatrix(e);\n if (t) {\n var m = matrix.convertCssMatrix(t);\n out = mat4X4.multiply(out, out, m);\n }\n });\n return out;\n }\n function getElementTransformMatrix(element) {\n var style = window.getComputedStyle(element, null);\n var transform = style.getPropertyValue(\"-webkit-transform\") || style.getPropertyValue(\"-moz-transform\") || style.getPropertyValue(\"-ms-transform\") || style.getPropertyValue(\"-o-transform\") || style.getPropertyValue(\"transform\");\n if (transform === \"none\") return null;\n return transform.replace(\"matrix\", \"\").replace(\"3d\", \"\").slice(1, -1).split(\",\").map(function(n) {\n return +n;\n });\n }\n function getElementAndAncestors(element) {\n var allElements = [];\n while (isTransformableElement(element)) {\n allElements.push(element);\n element = element.parentNode;\n if (typeof ShadowRoot === \"function\" && element instanceof ShadowRoot) {\n element = element.host;\n }\n }\n return allElements;\n }\n function isTransformableElement(element) {\n return element && (element instanceof Element || element instanceof HTMLElement);\n }\n function equalDomRects(a, b) {\n return a && b && a.top === b.top && a.left === b.left && a.right === b.right && a.bottom === b.bottom;\n }\n module.exports = {\n getGraphDiv,\n isPlotDiv,\n removeElement,\n addStyleRule,\n addRelatedStyleRule,\n deleteRelatedStyleRule,\n setStyleOnHover,\n getFullTransformMatrix,\n getElementTransformMatrix,\n getElementAndAncestors,\n equalDomRects\n };\n }\n });\n\n // src/plots/animation_attributes.js\n var require_animation_attributes = __commonJS({\n \"src/plots/animation_attributes.js\"(exports, module) {\n \"use strict\";\n module.exports = {\n mode: {\n valType: \"enumerated\",\n dflt: \"afterall\",\n values: [\"immediate\", \"next\", \"afterall\"]\n },\n direction: {\n valType: \"enumerated\",\n values: [\"forward\", \"reverse\"],\n dflt: \"forward\"\n },\n fromcurrent: {\n valType: \"boolean\",\n dflt: false\n },\n frame: {\n duration: {\n valType: \"number\",\n min: 0,\n dflt: 500\n },\n redraw: {\n valType: \"boolean\",\n dflt: true\n }\n },\n transition: {\n duration: {\n valType: \"number\",\n min: 0,\n dflt: 500,\n editType: \"none\"\n },\n easing: {\n valType: \"enumerated\",\n dflt: \"cubic-in-out\",\n values: [\n \"linear\",\n \"quad\",\n \"cubic\",\n \"sin\",\n \"exp\",\n \"circle\",\n \"elastic\",\n \"back\",\n \"bounce\",\n \"linear-in\",\n \"quad-in\",\n \"cubic-in\",\n \"sin-in\",\n \"exp-in\",\n \"circle-in\",\n \"elastic-in\",\n \"back-in\",\n \"bounce-in\",\n \"linear-out\",\n \"quad-out\",\n \"cubic-out\",\n \"sin-out\",\n \"exp-out\",\n \"circle-out\",\n \"elastic-out\",\n \"back-out\",\n \"bounce-out\",\n \"linear-in-out\",\n \"quad-in-out\",\n \"cubic-in-out\",\n \"sin-in-out\",\n \"exp-in-out\",\n \"circle-in-out\",\n \"elastic-in-out\",\n \"back-in-out\",\n \"bounce-in-out\"\n ],\n editType: \"none\"\n },\n ordering: {\n valType: \"enumerated\",\n values: [\"layout first\", \"traces first\"],\n dflt: \"layout first\",\n editType: \"none\"\n }\n }\n };\n }\n });\n\n // src/plot_api/edit_types.js\n var require_edit_types = __commonJS({\n \"src/plot_api/edit_types.js\"(exports, module) {\n \"use strict\";\n var extendFlat = require_extend().extendFlat;\n var isPlainObject = require_is_plain_object();\n var traceOpts = {\n valType: \"flaglist\",\n extras: [\"none\"],\n flags: [\"calc\", \"clearAxisTypes\", \"plot\", \"style\", \"markerSize\", \"colorbars\"]\n };\n var layoutOpts = {\n valType: \"flaglist\",\n extras: [\"none\"],\n flags: [\n \"calc\",\n \"plot\",\n \"legend\",\n \"ticks\",\n \"axrange\",\n \"layoutstyle\",\n \"modebar\",\n \"camera\",\n \"arraydraw\",\n \"colorbars\"\n ]\n };\n var traceEditTypeFlags = traceOpts.flags.slice().concat([\"fullReplot\"]);\n var layoutEditTypeFlags = layoutOpts.flags.slice().concat(\"layoutReplot\");\n module.exports = {\n traces: traceOpts,\n layout: layoutOpts,\n /*\n * default (all false) edit flags for restyle (traces)\n * creates a new object each call, so the caller can mutate freely\n */\n traceFlags: function() {\n return falseObj(traceEditTypeFlags);\n },\n /*\n * default (all false) edit flags for relayout\n * creates a new object each call, so the caller can mutate freely\n */\n layoutFlags: function() {\n return falseObj(layoutEditTypeFlags);\n },\n /*\n * update `flags` with the `editType` values found in `attr`\n */\n update: function(flags, attr) {\n var editType = attr.editType;\n if (editType && editType !== \"none\") {\n var editTypeParts = editType.split(\"+\");\n for (var i = 0; i < editTypeParts.length; i++) {\n flags[editTypeParts[i]] = true;\n }\n }\n },\n overrideAll\n };\n function falseObj(keys) {\n var out = {};\n for (var i = 0; i < keys.length; i++) out[keys[i]] = false;\n return out;\n }\n function overrideAll(attrs, editTypeOverride, overrideContainers) {\n var out = extendFlat({}, attrs);\n for (var key in out) {\n var attr = out[key];\n if (isPlainObject(attr)) {\n out[key] = overrideOne(attr, editTypeOverride, overrideContainers, key);\n }\n }\n if (overrideContainers === \"from-root\") out.editType = editTypeOverride;\n return out;\n }\n function overrideOne(attr, editTypeOverride, overrideContainers, key) {\n if (attr.valType) {\n var out = extendFlat({}, attr);\n out.editType = editTypeOverride;\n if (Array.isArray(attr.items)) {\n out.items = new Array(attr.items.length);\n for (var i = 0; i < attr.items.length; i++) {\n out.items[i] = overrideOne(attr.items[i], editTypeOverride, \"from-root\");\n }\n }\n return out;\n } else {\n return overrideAll(\n attr,\n editTypeOverride,\n key.charAt(0) === \"_\" ? \"nested\" : \"from-root\"\n );\n }\n }\n }\n });\n\n // src/components/drawing/attributes.js\n var require_attributes4 = __commonJS({\n \"src/components/drawing/attributes.js\"(exports) {\n \"use strict\";\n exports.dash = {\n valType: \"string\",\n // string type usually doesn't take values... this one should really be\n // a special type or at least a special coercion function, from the GUI\n // you only get these values but elsewhere the user can supply a list of\n // dash lengths in px, and it will be honored\n values: [\"solid\", \"dot\", \"dash\", \"longdash\", \"dashdot\", \"longdashdot\"],\n dflt: \"solid\",\n editType: \"style\"\n };\n exports.pattern = {\n shape: {\n valType: \"enumerated\",\n values: [\"\", \"/\", \"\\\\\", \"x\", \"-\", \"|\", \"+\", \".\"],\n dflt: \"\",\n arrayOk: true,\n editType: \"style\"\n },\n fillmode: {\n valType: \"enumerated\",\n values: [\"replace\", \"overlay\"],\n dflt: \"replace\",\n editType: \"style\"\n },\n bgcolor: {\n valType: \"color\",\n arrayOk: true,\n editType: \"style\"\n },\n fgcolor: {\n valType: \"color\",\n arrayOk: true,\n editType: \"style\"\n },\n fgopacity: {\n valType: \"number\",\n editType: \"style\",\n min: 0,\n max: 1\n },\n size: {\n valType: \"number\",\n min: 0,\n dflt: 8,\n arrayOk: true,\n editType: \"style\"\n },\n solidity: {\n valType: \"number\",\n min: 0,\n max: 1,\n dflt: 0.3,\n arrayOk: true,\n editType: \"style\"\n },\n editType: \"style\"\n };\n }\n });\n\n // src/constants/docs.js\n var require_docs = __commonJS({\n \"src/constants/docs.js\"(exports, module) {\n \"use strict\";\n module.exports = {\n FORMAT_LINK: \"https://github.com/d3/d3-format/tree/v1.4.5#d3-format\",\n DATE_FORMAT_LINK: \"https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format\"\n };\n }\n });\n\n // src/plots/template_attributes.js\n var require_template_attributes = __commonJS({\n \"src/plots/template_attributes.js\"(exports) {\n \"use strict\";\n var docs = require_docs();\n var FORMAT_LINK = docs.FORMAT_LINK;\n var DATE_FORMAT_LINK = docs.DATE_FORMAT_LINK;\n function describeVariables(extra) {\n var descPart = extra.description ? \" \" + extra.description : \"\";\n var keys = extra.keys || [];\n if (keys.length > 0) {\n var quotedKeys = [];\n for (var i = 0; i < keys.length; i++) {\n quotedKeys[i] = \"`\" + keys[i] + \"`\";\n }\n descPart = descPart + \"Finally, the template string has access to \";\n if (keys.length === 1) {\n descPart = descPart + \"variable \" + quotedKeys[0];\n } else {\n descPart = descPart + \"variables \" + quotedKeys.slice(0, -1).join(\", \") + \" and \" + quotedKeys.slice(-1) + \".\";\n }\n }\n return descPart;\n }\n exports.hovertemplateAttrs = function(opts, extra) {\n opts = opts || {};\n extra = extra || {};\n var descPart = describeVariables(extra);\n var hovertemplate = {\n valType: \"string\",\n dflt: \"\",\n editType: opts.editType || \"none\"\n };\n if (opts.arrayOk !== false) {\n hovertemplate.arrayOk = true;\n }\n return hovertemplate;\n };\n exports.texttemplateAttrs = function(opts, extra) {\n opts = opts || {};\n extra = extra || {};\n var descPart = describeVariables(extra);\n var texttemplate = {\n valType: \"string\",\n dflt: \"\",\n editType: opts.editType || \"calc\"\n };\n if (opts.arrayOk !== false) {\n texttemplate.arrayOk = true;\n }\n return texttemplate;\n };\n exports.shapeTexttemplateAttrs = function(opts, extra) {\n opts = opts || {};\n extra = extra || {};\n var newStr = opts.newshape ? \"new \" : \"\";\n var descPart = describeVariables(extra);\n var texttemplate = {\n valType: \"string\",\n dflt: \"\",\n editType: opts.editType || \"arraydraw\"\n };\n return texttemplate;\n };\n }\n });\n\n // src/components/shapes/label_texttemplate.js\n var require_label_texttemplate = __commonJS({\n \"src/components/shapes/label_texttemplate.js\"(exports, module) {\n \"use strict\";\n function d2l(v, axis) {\n return axis ? axis.d2l(v) : v;\n }\n function l2d(v, axis) {\n return axis ? axis.l2d(v) : v;\n }\n function x0Fn(shape) {\n return shape.x0;\n }\n function x1Fn(shape) {\n return shape.x1;\n }\n function y0Fn(shape) {\n return shape.y0;\n }\n function y1Fn(shape) {\n return shape.y1;\n }\n function x0shiftFn(shape) {\n return shape.x0shift || 0;\n }\n function x1shiftFn(shape) {\n return shape.x1shift || 0;\n }\n function y0shiftFn(shape) {\n return shape.y0shift || 0;\n }\n function y1shiftFn(shape) {\n return shape.y1shift || 0;\n }\n function dxFn(shape, xa) {\n return d2l(shape.x1, xa) + x1shiftFn(shape) - d2l(shape.x0, xa) - x0shiftFn(shape);\n }\n function dyFn(shape, xa, ya) {\n return d2l(shape.y1, ya) + y1shiftFn(shape) - d2l(shape.y0, ya) - y0shiftFn(shape);\n }\n function widthFn(shape, xa) {\n return Math.abs(dxFn(shape, xa));\n }\n function heightFn(shape, xa, ya) {\n return Math.abs(dyFn(shape, xa, ya));\n }\n function lengthFn(shape, xa, ya) {\n return shape.type !== \"line\" ? void 0 : Math.sqrt(\n Math.pow(dxFn(shape, xa), 2) + Math.pow(dyFn(shape, xa, ya), 2)\n );\n }\n function xcenterFn(shape, xa) {\n return l2d((d2l(shape.x1, xa) + x1shiftFn(shape) + d2l(shape.x0, xa) + x0shiftFn(shape)) / 2, xa);\n }\n function ycenterFn(shape, xa, ya) {\n return l2d((d2l(shape.y1, ya) + y1shiftFn(shape) + d2l(shape.y0, ya) + y0shiftFn(shape)) / 2, ya);\n }\n function slopeFn(shape, xa, ya) {\n return shape.type !== \"line\" ? void 0 : dyFn(shape, xa, ya) / dxFn(shape, xa);\n }\n module.exports = {\n x0: x0Fn,\n x1: x1Fn,\n y0: y0Fn,\n y1: y1Fn,\n slope: slopeFn,\n dx: dxFn,\n dy: dyFn,\n width: widthFn,\n height: heightFn,\n length: lengthFn,\n xcenter: xcenterFn,\n ycenter: ycenterFn\n };\n }\n });\n\n // src/components/shapes/draw_newshape/attributes.js\n var require_attributes5 = __commonJS({\n \"src/components/shapes/draw_newshape/attributes.js\"(exports, module) {\n \"use strict\";\n var overrideAll = require_edit_types().overrideAll;\n var basePlotAttributes = require_attributes2();\n var fontAttrs = require_font_attributes();\n var dash = require_attributes4().dash;\n var extendFlat = require_extend().extendFlat;\n var shapeTexttemplateAttrs = require_template_attributes().shapeTexttemplateAttrs;\n var shapeLabelTexttemplateVars = require_label_texttemplate();\n module.exports = overrideAll({\n newshape: {\n visible: extendFlat({}, basePlotAttributes.visible, {}),\n showlegend: {\n valType: \"boolean\",\n dflt: false\n },\n legend: extendFlat({}, basePlotAttributes.legend, {}),\n legendgroup: extendFlat({}, basePlotAttributes.legendgroup, {}),\n legendgrouptitle: {\n text: extendFlat({}, basePlotAttributes.legendgrouptitle.text, {}),\n font: fontAttrs({})\n },\n legendrank: extendFlat({}, basePlotAttributes.legendrank, {}),\n legendwidth: extendFlat({}, basePlotAttributes.legendwidth, {}),\n line: {\n color: {\n valType: \"color\"\n },\n width: {\n valType: \"number\",\n min: 0,\n dflt: 4\n },\n dash: extendFlat({}, dash, {\n dflt: \"solid\"\n })\n },\n fillcolor: {\n valType: \"color\",\n dflt: \"rgba(0,0,0,0)\"\n },\n fillrule: {\n valType: \"enumerated\",\n values: [\"evenodd\", \"nonzero\"],\n dflt: \"evenodd\"\n },\n opacity: {\n valType: \"number\",\n min: 0,\n max: 1,\n dflt: 1\n },\n layer: {\n valType: \"enumerated\",\n values: [\"below\", \"above\", \"between\"],\n dflt: \"above\"\n },\n drawdirection: {\n valType: \"enumerated\",\n values: [\"ortho\", \"horizontal\", \"vertical\", \"diagonal\"],\n dflt: \"diagonal\"\n },\n name: extendFlat({}, basePlotAttributes.name, {}),\n label: {\n text: {\n valType: \"string\",\n dflt: \"\"\n },\n texttemplate: shapeTexttemplateAttrs({ newshape: true }, { keys: Object.keys(shapeLabelTexttemplateVars) }),\n font: fontAttrs({}),\n textposition: {\n valType: \"enumerated\",\n values: [\n \"top left\",\n \"top center\",\n \"top right\",\n \"middle left\",\n \"middle center\",\n \"middle right\",\n \"bottom left\",\n \"bottom center\",\n \"bottom right\",\n \"start\",\n \"middle\",\n \"end\"\n ]\n },\n textangle: {\n valType: \"angle\",\n dflt: \"auto\"\n },\n xanchor: {\n valType: \"enumerated\",\n values: [\"auto\", \"left\", \"center\", \"right\"],\n dflt: \"auto\"\n },\n yanchor: {\n valType: \"enumerated\",\n values: [\"top\", \"middle\", \"bottom\"]\n },\n padding: {\n valType: \"number\",\n dflt: 3,\n min: 0\n }\n }\n },\n activeshape: {\n fillcolor: {\n valType: \"color\",\n dflt: \"rgb(255,0,255)\"\n },\n opacity: {\n valType: \"number\",\n min: 0,\n max: 1,\n dflt: 0.5\n }\n }\n }, \"none\", \"from-root\");\n }\n });\n\n // src/components/selections/draw_newselection/attributes.js\n var require_attributes6 = __commonJS({\n \"src/components/selections/draw_newselection/attributes.js\"(exports, module) {\n \"use strict\";\n var dash = require_attributes4().dash;\n var extendFlat = require_extend().extendFlat;\n module.exports = {\n newselection: {\n mode: {\n valType: \"enumerated\",\n values: [\"immediate\", \"gradual\"],\n dflt: \"immediate\",\n editType: \"none\"\n },\n line: {\n color: {\n valType: \"color\",\n editType: \"none\"\n },\n width: {\n valType: \"number\",\n min: 1,\n dflt: 1,\n editType: \"none\"\n },\n dash: extendFlat({}, dash, {\n dflt: \"dot\",\n editType: \"none\"\n }),\n editType: \"none\"\n },\n // no drawdirection here noting that layout.selectdirection is used instead.\n editType: \"none\"\n },\n activeselection: {\n fillcolor: {\n valType: \"color\",\n dflt: \"rgba(0,0,0,0)\",\n editType: \"none\"\n },\n opacity: {\n valType: \"number\",\n min: 0,\n max: 1,\n dflt: 0.5,\n editType: \"none\"\n },\n editType: \"none\"\n }\n };\n }\n });\n\n // src/plots/pad_attributes.js\n var require_pad_attributes = __commonJS({\n \"src/plots/pad_attributes.js\"(exports, module) {\n \"use strict\";\n module.exports = function(opts) {\n var editType = opts.editType;\n return {\n t: {\n valType: \"number\",\n dflt: 0,\n editType\n },\n r: {\n valType: \"number\",\n dflt: 0,\n editType\n },\n b: {\n valType: \"number\",\n dflt: 0,\n editType\n },\n l: {\n valType: \"number\",\n dflt: 0,\n editType\n },\n editType\n };\n };\n }\n });\n\n // src/plots/layout_attributes.js\n var require_layout_attributes2 = __commonJS({\n \"src/plots/layout_attributes.js\"(exports, module) {\n \"use strict\";\n var fontAttrs = require_font_attributes();\n var animationAttrs = require_animation_attributes();\n var colorAttrs = require_attributes3();\n var drawNewShapeAttrs = require_attributes5();\n var drawNewSelectionAttrs = require_attributes6();\n var padAttrs = require_pad_attributes();\n var extendFlat = require_extend().extendFlat;\n var globalFont = fontAttrs({\n editType: \"calc\"\n });\n globalFont.family.dflt = '\"Open Sans\", verdana, arial, sans-serif';\n globalFont.size.dflt = 12;\n globalFont.color.dflt = colorAttrs.defaultLine;\n module.exports = {\n font: globalFont,\n title: {\n text: {\n valType: \"string\",\n editType: \"layoutstyle\"\n },\n font: fontAttrs({\n editType: \"layoutstyle\"\n }),\n subtitle: {\n text: {\n valType: \"string\",\n editType: \"layoutstyle\"\n },\n font: fontAttrs({\n editType: \"layoutstyle\"\n }),\n editType: \"layoutstyle\"\n },\n xref: {\n valType: \"enumerated\",\n dflt: \"container\",\n values: [\"container\", \"paper\"],\n editType: \"layoutstyle\"\n },\n yref: {\n valType: \"enumerated\",\n dflt: \"container\",\n values: [\"container\", \"paper\"],\n editType: \"layoutstyle\"\n },\n x: {\n valType: \"number\",\n min: 0,\n max: 1,\n dflt: 0.5,\n editType: \"layoutstyle\"\n },\n y: {\n valType: \"number\",\n min: 0,\n max: 1,\n dflt: \"auto\",\n editType: \"layoutstyle\"\n },\n xanchor: {\n valType: \"enumerated\",\n dflt: \"auto\",\n values: [\"auto\", \"left\", \"center\", \"right\"],\n editType: \"layoutstyle\"\n },\n yanchor: {\n valType: \"enumerated\",\n dflt: \"auto\",\n values: [\"auto\", \"top\", \"middle\", \"bottom\"],\n editType: \"layoutstyle\"\n },\n pad: extendFlat(padAttrs({ editType: \"layoutstyle\" }), {}),\n automargin: {\n valType: \"boolean\",\n dflt: false,\n editType: \"plot\"\n },\n editType: \"layoutstyle\"\n },\n uniformtext: {\n mode: {\n valType: \"enumerated\",\n values: [false, \"hide\", \"show\"],\n dflt: false,\n editType: \"plot\"\n },\n minsize: {\n valType: \"number\",\n min: 0,\n dflt: 0,\n editType: \"plot\"\n },\n editType: \"plot\"\n },\n autosize: {\n valType: \"boolean\",\n dflt: false,\n // autosize, width, and height get special editType treatment in _relayout\n // so we can handle noop resizes more efficiently\n editType: \"none\"\n },\n width: {\n valType: \"number\",\n min: 10,\n dflt: 700,\n editType: \"plot\"\n },\n height: {\n valType: \"number\",\n min: 10,\n dflt: 450,\n editType: \"plot\"\n },\n minreducedwidth: {\n valType: \"number\",\n min: 2,\n dflt: 64,\n editType: \"plot\"\n },\n minreducedheight: {\n valType: \"number\",\n min: 2,\n dflt: 64,\n editType: \"plot\"\n },\n margin: {\n l: {\n valType: \"number\",\n min: 0,\n dflt: 80,\n editType: \"plot\"\n },\n r: {\n valType: \"number\",\n min: 0,\n dflt: 80,\n editType: \"plot\"\n },\n t: {\n valType: \"number\",\n min: 0,\n dflt: 100,\n editType: \"plot\"\n },\n b: {\n valType: \"number\",\n min: 0,\n dflt: 80,\n editType: \"plot\"\n },\n pad: {\n valType: \"number\",\n min: 0,\n dflt: 0,\n editType: \"plot\"\n },\n autoexpand: {\n valType: \"boolean\",\n dflt: true,\n editType: \"plot\"\n },\n editType: \"plot\"\n },\n computed: {\n valType: \"any\",\n editType: \"none\"\n },\n paper_bgcolor: {\n valType: \"color\",\n dflt: colorAttrs.background,\n editType: \"plot\"\n },\n plot_bgcolor: {\n // defined here, but set in cartesian.supplyLayoutDefaults\n // because it needs to know if there are (2D) axes or not\n valType: \"color\",\n dflt: colorAttrs.background,\n editType: \"layoutstyle\"\n },\n autotypenumbers: {\n valType: \"enumerated\",\n values: [\"convert types\", \"strict\"],\n dflt: \"convert types\",\n editType: \"calc\"\n },\n separators: {\n valType: \"string\",\n editType: \"plot\"\n },\n hidesources: {\n valType: \"boolean\",\n dflt: false,\n editType: \"plot\"\n },\n showlegend: {\n // handled in legend.supplyLayoutDefaults\n // but included here because it's not in the legend object\n valType: \"boolean\",\n editType: \"legend\"\n },\n colorway: {\n valType: \"colorlist\",\n dflt: colorAttrs.defaults,\n editType: \"calc\"\n },\n datarevision: {\n valType: \"any\",\n editType: \"calc\"\n },\n uirevision: {\n valType: \"any\",\n editType: \"none\"\n },\n editrevision: {\n valType: \"any\",\n editType: \"none\"\n },\n selectionrevision: {\n valType: \"any\",\n editType: \"none\"\n },\n template: {\n valType: \"any\",\n editType: \"calc\"\n },\n newshape: drawNewShapeAttrs.newshape,\n activeshape: drawNewShapeAttrs.activeshape,\n newselection: drawNewSelectionAttrs.newselection,\n activeselection: drawNewSelectionAttrs.activeselection,\n meta: {\n valType: \"any\",\n arrayOk: true,\n editType: \"plot\"\n },\n transition: extendFlat({}, animationAttrs.transition, {\n editType: \"none\"\n })\n };\n }\n });\n\n // temp_stylePlugin:node_modules/maplibre-gl/dist/maplibre-gl.css\n var init_maplibre_gl = __esm({\n \"temp_stylePlugin:node_modules/maplibre-gl/dist/maplibre-gl.css\"() {\n }\n });\n\n // stylePlugin:/Users/alex/plotly/plotly.js/node_modules/maplibre-gl/dist/maplibre-gl.css\n var maplibre_gl_exports = {};\n var init_maplibre_gl2 = __esm({\n \"stylePlugin:/Users/alex/plotly/plotly.js/node_modules/maplibre-gl/dist/maplibre-gl.css\"() {\n init_maplibre_gl();\n }\n });\n\n // src/registry.js\n var require_registry = __commonJS({\n \"src/registry.js\"(exports) {\n \"use strict\";\n var Loggers = require_loggers();\n var noop = require_noop();\n var pushUnique = require_push_unique();\n var isPlainObject = require_is_plain_object();\n var addStyleRule = require_dom().addStyleRule;\n var ExtendModule = require_extend();\n var basePlotAttributes = require_attributes2();\n var baseLayoutAttributes = require_layout_attributes2();\n var extendFlat = ExtendModule.extendFlat;\n var extendDeepAll = ExtendModule.extendDeepAll;\n exports.modules = {};\n exports.allCategories = {};\n exports.allTypes = [];\n exports.subplotsRegistry = {};\n exports.componentsRegistry = {};\n exports.layoutArrayContainers = [];\n exports.layoutArrayRegexes = [];\n exports.traceLayoutAttributes = {};\n exports.localeRegistry = {};\n exports.apiMethodRegistry = {};\n exports.collectableSubplotTypes = null;\n exports.register = function register(_modules) {\n exports.collectableSubplotTypes = null;\n if (!_modules) {\n throw new Error(\"No argument passed to Plotly.register.\");\n } else if (_modules && !Array.isArray(_modules)) {\n _modules = [_modules];\n }\n for (var i = 0; i < _modules.length; i++) {\n var newModule = _modules[i];\n if (!newModule) {\n throw new Error(\"Invalid module was attempted to be registered!\");\n }\n switch (newModule.moduleType) {\n case \"trace\":\n registerTraceModule(newModule);\n break;\n case \"transform\":\n registerTransformModule(newModule);\n break;\n case \"component\":\n registerComponentModule(newModule);\n break;\n case \"locale\":\n registerLocale(newModule);\n break;\n case \"apiMethod\":\n var name = newModule.name;\n exports.apiMethodRegistry[name] = newModule.fn;\n break;\n default:\n throw new Error(\"Invalid module was attempted to be registered!\");\n }\n }\n };\n exports.getModule = function(trace) {\n var _module = exports.modules[getTraceType(trace)];\n if (!_module) return false;\n return _module._module;\n };\n exports.traceIs = function(traceType, category) {\n traceType = getTraceType(traceType);\n if (traceType === \"various\") return false;\n var _module = exports.modules[traceType];\n if (!_module) {\n if (traceType) {\n Loggers.log(\"Unrecognized trace type \" + traceType + \".\");\n }\n _module = exports.modules[basePlotAttributes.type.dflt];\n }\n return !!_module.categories[category];\n };\n exports.getComponentMethod = function(name, method) {\n var _module = exports.componentsRegistry[name];\n if (!_module) return noop;\n return _module[method] || noop;\n };\n exports.call = function() {\n var name = arguments[0];\n var args = [].slice.call(arguments, 1);\n return exports.apiMethodRegistry[name].apply(null, args);\n };\n function registerTraceModule(_module) {\n var thisType = _module.name;\n var categoriesIn = _module.categories;\n var meta = _module.meta;\n if (exports.modules[thisType]) {\n Loggers.log(\"Type \" + thisType + \" already registered\");\n return;\n }\n if (!exports.subplotsRegistry[_module.basePlotModule.name]) {\n registerSubplot(_module.basePlotModule);\n }\n var categoryObj = {};\n for (var i = 0; i < categoriesIn.length; i++) {\n categoryObj[categoriesIn[i]] = true;\n exports.allCategories[categoriesIn[i]] = true;\n }\n exports.modules[thisType] = {\n _module,\n categories: categoryObj\n };\n if (meta && Object.keys(meta).length) {\n exports.modules[thisType].meta = meta;\n }\n exports.allTypes.push(thisType);\n for (var componentName in exports.componentsRegistry) {\n mergeComponentAttrsToTrace(componentName, thisType);\n }\n if (_module.layoutAttributes) {\n extendFlat(exports.traceLayoutAttributes, _module.layoutAttributes);\n }\n var basePlotModule = _module.basePlotModule;\n var bpmName = basePlotModule.name;\n if (bpmName === \"mapbox\") {\n var styleRules = basePlotModule.constants.styleRules;\n for (var k in styleRules) {\n addStyleRule(\".js-plotly-plot .plotly .mapboxgl-\" + k, styleRules[k]);\n }\n }\n if (bpmName === \"map\") {\n init_maplibre_gl2();\n }\n if ((bpmName === \"geo\" || bpmName === \"mapbox\" || bpmName === \"map\") && window.PlotlyGeoAssets === void 0) {\n window.PlotlyGeoAssets = { topojson: {} };\n }\n }\n function registerSubplot(_module) {\n var plotType = _module.name;\n if (exports.subplotsRegistry[plotType]) {\n Loggers.log(\"Plot type \" + plotType + \" already registered.\");\n return;\n }\n findArrayRegexps(_module);\n exports.subplotsRegistry[plotType] = _module;\n for (var componentName in exports.componentsRegistry) {\n mergeComponentAttrsToSubplot(componentName, _module.name);\n }\n }\n function registerComponentModule(_module) {\n if (typeof _module.name !== \"string\") {\n throw new Error(\"Component module *name* must be a string.\");\n }\n var name = _module.name;\n exports.componentsRegistry[name] = _module;\n if (_module.layoutAttributes) {\n if (_module.layoutAttributes._isLinkedToArray) {\n pushUnique(exports.layoutArrayContainers, name);\n }\n findArrayRegexps(_module);\n }\n for (var traceType in exports.modules) {\n mergeComponentAttrsToTrace(name, traceType);\n }\n for (var subplotName in exports.subplotsRegistry) {\n mergeComponentAttrsToSubplot(name, subplotName);\n }\n if (_module.schema && _module.schema.layout) {\n extendDeepAll(baseLayoutAttributes, _module.schema.layout);\n }\n }\n function registerTransformModule(_module) {\n if (typeof _module.name !== \"string\") {\n throw new Error(\"Transform module *name* must be a string.\");\n }\n var prefix = \"Transform module \" + _module.name;\n var hasTransform = typeof _module.transform === \"function\";\n var hasCalcTransform = typeof _module.calcTransform === \"function\";\n if (!hasTransform && !hasCalcTransform) {\n throw new Error(prefix + \" is missing a *transform* or *calcTransform* method.\");\n }\n if (hasTransform && hasCalcTransform) {\n Loggers.log([\n prefix + \" has both a *transform* and *calcTransform* methods.\",\n \"Please note that all *transform* methods are executed\",\n \"before all *calcTransform* methods.\"\n ].join(\" \"));\n }\n if (!isPlainObject(_module.attributes)) {\n Loggers.log(prefix + \" registered without an *attributes* object.\");\n }\n if (typeof _module.supplyDefaults !== \"function\") {\n Loggers.log(prefix + \" registered without a *supplyDefaults* method.\");\n }\n }\n function registerLocale(_module) {\n var locale = _module.name;\n var baseLocale = locale.split(\"-\")[0];\n var newDict = _module.dictionary;\n var newFormat = _module.format;\n var hasDict = newDict && Object.keys(newDict).length;\n var hasFormat = newFormat && Object.keys(newFormat).length;\n var locales = exports.localeRegistry;\n var localeObj = locales[locale];\n if (!localeObj) locales[locale] = localeObj = {};\n if (baseLocale !== locale) {\n var baseLocaleObj = locales[baseLocale];\n if (!baseLocaleObj) locales[baseLocale] = baseLocaleObj = {};\n if (hasDict && baseLocaleObj.dictionary === localeObj.dictionary) {\n baseLocaleObj.dictionary = newDict;\n }\n if (hasFormat && baseLocaleObj.format === localeObj.format) {\n baseLocaleObj.format = newFormat;\n }\n }\n if (hasDict) localeObj.dictionary = newDict;\n if (hasFormat) localeObj.format = newFormat;\n }\n function findArrayRegexps(_module) {\n if (_module.layoutAttributes) {\n var arrayAttrRegexps = _module.layoutAttributes._arrayAttrRegexps;\n if (arrayAttrRegexps) {\n for (var i = 0; i < arrayAttrRegexps.length; i++) {\n pushUnique(exports.layoutArrayRegexes, arrayAttrRegexps[i]);\n }\n }\n }\n }\n function mergeComponentAttrsToTrace(componentName, traceType) {\n var componentSchema = exports.componentsRegistry[componentName].schema;\n if (!componentSchema || !componentSchema.traces) return;\n var traceAttrs = componentSchema.traces[traceType];\n if (traceAttrs) {\n extendDeepAll(exports.modules[traceType]._module.attributes, traceAttrs);\n }\n }\n function mergeComponentAttrsToSubplot(componentName, subplotName) {\n var componentSchema = exports.componentsRegistry[componentName].schema;\n if (!componentSchema || !componentSchema.subplots) return;\n var subplotModule = exports.subplotsRegistry[subplotName];\n var subplotAttrs = subplotModule.layoutAttributes;\n var subplotAttr = subplotModule.attr === \"subplot\" ? subplotModule.name : subplotModule.attr;\n if (Array.isArray(subplotAttr)) subplotAttr = subplotAttr[0];\n var componentLayoutAttrs = componentSchema.subplots[subplotAttr];\n if (subplotAttrs && componentLayoutAttrs) {\n extendDeepAll(subplotAttrs, componentLayoutAttrs);\n }\n }\n function getTraceType(traceType) {\n if (typeof traceType === \"object\") traceType = traceType.type;\n return traceType;\n }\n }\n });\n\n // src/lib/dates.js\n var require_dates = __commonJS({\n \"src/lib/dates.js\"(exports) {\n \"use strict\";\n var timeFormat = require_d3_time_format().timeFormat;\n var isNumeric = require_fast_isnumeric();\n var Loggers = require_loggers();\n var mod = require_mod().mod;\n var constants = require_numerical();\n var BADNUM = constants.BADNUM;\n var ONEDAY = constants.ONEDAY;\n var ONEHOUR = constants.ONEHOUR;\n var ONEMIN = constants.ONEMIN;\n var ONESEC = constants.ONESEC;\n var EPOCHJD = constants.EPOCHJD;\n var Registry = require_registry();\n var utcFormat = require_d3_time_format().utcFormat;\n var DATETIME_REGEXP = /^\\s*(-?\\d\\d\\d\\d|\\d\\d)(-(\\d?\\d)(-(\\d?\\d)([ Tt]([01]?\\d|2[0-3])(:([0-5]\\d)(:([0-5]\\d(\\.\\d+)?))?(Z|z|[+\\-]\\d\\d(:?\\d\\d)?)?)?)?)?)?\\s*$/m;\n var DATETIME_REGEXP_CN = /^\\s*(-?\\d\\d\\d\\d|\\d\\d)(-(\\d?\\di?)(-(\\d?\\d)([ Tt]([01]?\\d|2[0-3])(:([0-5]\\d)(:([0-5]\\d(\\.\\d+)?))?(Z|z|[+\\-]\\d\\d(:?\\d\\d)?)?)?)?)?)?\\s*$/m;\n var YFIRST = (/* @__PURE__ */ new Date()).getFullYear() - 70;\n function isWorldCalendar(calendar) {\n return calendar && Registry.componentsRegistry.calendars && typeof calendar === \"string\" && calendar !== \"gregorian\";\n }\n exports.dateTick0 = function(calendar, dayOfWeek) {\n var tick0 = _dateTick0(calendar, !!dayOfWeek);\n if (dayOfWeek < 2) return tick0;\n var v = exports.dateTime2ms(tick0, calendar);\n v += ONEDAY * (dayOfWeek - 1);\n return exports.ms2DateTime(v, 0, calendar);\n };\n function _dateTick0(calendar, sunday) {\n if (isWorldCalendar(calendar)) {\n return sunday ? Registry.getComponentMethod(\"calendars\", \"CANONICAL_SUNDAY\")[calendar] : Registry.getComponentMethod(\"calendars\", \"CANONICAL_TICK\")[calendar];\n } else {\n return sunday ? \"2000-01-02\" : \"2000-01-01\";\n }\n }\n exports.dfltRange = function(calendar) {\n if (isWorldCalendar(calendar)) {\n return Registry.getComponentMethod(\"calendars\", \"DFLTRANGE\")[calendar];\n } else {\n return [\"2000-01-01\", \"2001-01-01\"];\n }\n };\n exports.isJSDate = function(v) {\n return typeof v === \"object\" && v !== null && typeof v.getTime === \"function\";\n };\n var MIN_MS;\n var MAX_MS;\n exports.dateTime2ms = function(s, calendar) {\n if (exports.isJSDate(s)) {\n var tzOffset = s.getTimezoneOffset() * ONEMIN;\n var offsetTweak = (s.getUTCMinutes() - s.getMinutes()) * ONEMIN + (s.getUTCSeconds() - s.getSeconds()) * ONESEC + (s.getUTCMilliseconds() - s.getMilliseconds());\n if (offsetTweak) {\n var comb = 3 * ONEMIN;\n tzOffset = tzOffset - comb / 2 + mod(offsetTweak - tzOffset + comb / 2, comb);\n }\n s = Number(s) - tzOffset;\n if (s >= MIN_MS && s <= MAX_MS) return s;\n return BADNUM;\n }\n if (typeof s !== \"string\" && typeof s !== \"number\") return BADNUM;\n s = String(s);\n var isWorld = isWorldCalendar(calendar);\n var s0 = s.charAt(0);\n if (isWorld && (s0 === \"G\" || s0 === \"g\")) {\n s = s.substr(1);\n calendar = \"\";\n }\n var isChinese = isWorld && calendar.substr(0, 7) === \"chinese\";\n var match = s.match(isChinese ? DATETIME_REGEXP_CN : DATETIME_REGEXP);\n if (!match) return BADNUM;\n var y = match[1];\n var m = match[3] || \"1\";\n var d = Number(match[5] || 1);\n var H = Number(match[7] || 0);\n var M = Number(match[9] || 0);\n var S = Number(match[11] || 0);\n if (isWorld) {\n if (y.length === 2) return BADNUM;\n y = Number(y);\n var cDate;\n try {\n var calInstance = Registry.getComponentMethod(\"calendars\", \"getCal\")(calendar);\n if (isChinese) {\n var isIntercalary = m.charAt(m.length - 1) === \"i\";\n m = parseInt(m, 10);\n cDate = calInstance.newDate(y, calInstance.toMonthIndex(y, m, isIntercalary), d);\n } else {\n cDate = calInstance.newDate(y, Number(m), d);\n }\n } catch (e) {\n return BADNUM;\n }\n if (!cDate) return BADNUM;\n return (cDate.toJD() - EPOCHJD) * ONEDAY + H * ONEHOUR + M * ONEMIN + S * ONESEC;\n }\n if (y.length === 2) {\n y = (Number(y) + 2e3 - YFIRST) % 100 + YFIRST;\n } else y = Number(y);\n m -= 1;\n var date = new Date(Date.UTC(2e3, m, d, H, M));\n date.setUTCFullYear(y);\n if (date.getUTCMonth() !== m) return BADNUM;\n if (date.getUTCDate() !== d) return BADNUM;\n return date.getTime() + S * ONESEC;\n };\n MIN_MS = exports.MIN_MS = exports.dateTime2ms(\"-9999\");\n MAX_MS = exports.MAX_MS = exports.dateTime2ms(\"9999-12-31 23:59:59.9999\");\n exports.isDateTime = function(s, calendar) {\n return exports.dateTime2ms(s, calendar) !== BADNUM;\n };\n function lpad(val, digits) {\n return String(val + Math.pow(10, digits)).substr(1);\n }\n var NINETYDAYS = 90 * ONEDAY;\n var THREEHOURS = 3 * ONEHOUR;\n var FIVEMIN = 5 * ONEMIN;\n exports.ms2DateTime = function(ms, r, calendar) {\n if (typeof ms !== \"number\" || !(ms >= MIN_MS && ms <= MAX_MS)) return BADNUM;\n if (!r) r = 0;\n var msecTenths = Math.floor(mod(ms + 0.05, 1) * 10);\n var msRounded = Math.round(ms - msecTenths / 10);\n var dateStr, h, m, s, msec10, d;\n if (isWorldCalendar(calendar)) {\n var dateJD = Math.floor(msRounded / ONEDAY) + EPOCHJD;\n var timeMs = Math.floor(mod(ms, ONEDAY));\n try {\n dateStr = Registry.getComponentMethod(\"calendars\", \"getCal\")(calendar).fromJD(dateJD).formatDate(\"yyyy-mm-dd\");\n } catch (e) {\n dateStr = utcFormat(\"G%Y-%m-%d\")(new Date(msRounded));\n }\n if (dateStr.charAt(0) === \"-\") {\n while (dateStr.length < 11) dateStr = \"-0\" + dateStr.substr(1);\n } else {\n while (dateStr.length < 10) dateStr = \"0\" + dateStr;\n }\n h = r < NINETYDAYS ? Math.floor(timeMs / ONEHOUR) : 0;\n m = r < NINETYDAYS ? Math.floor(timeMs % ONEHOUR / ONEMIN) : 0;\n s = r < THREEHOURS ? Math.floor(timeMs % ONEMIN / ONESEC) : 0;\n msec10 = r < FIVEMIN ? timeMs % ONESEC * 10 + msecTenths : 0;\n } else {\n d = new Date(msRounded);\n dateStr = utcFormat(\"%Y-%m-%d\")(d);\n h = r < NINETYDAYS ? d.getUTCHours() : 0;\n m = r < NINETYDAYS ? d.getUTCMinutes() : 0;\n s = r < THREEHOURS ? d.getUTCSeconds() : 0;\n msec10 = r < FIVEMIN ? d.getUTCMilliseconds() * 10 + msecTenths : 0;\n }\n return includeTime(dateStr, h, m, s, msec10);\n };\n exports.ms2DateTimeLocal = function(ms) {\n if (!(ms >= MIN_MS + ONEDAY && ms <= MAX_MS - ONEDAY)) return BADNUM;\n var msecTenths = Math.floor(mod(ms + 0.05, 1) * 10);\n var d = new Date(Math.round(ms - msecTenths / 10));\n var dateStr = timeFormat(\"%Y-%m-%d\")(d);\n var h = d.getHours();\n var m = d.getMinutes();\n var s = d.getSeconds();\n var msec10 = d.getUTCMilliseconds() * 10 + msecTenths;\n return includeTime(dateStr, h, m, s, msec10);\n };\n function includeTime(dateStr, h, m, s, msec10) {\n if (h || m || s || msec10) {\n dateStr += \" \" + lpad(h, 2) + \":\" + lpad(m, 2);\n if (s || msec10) {\n dateStr += \":\" + lpad(s, 2);\n if (msec10) {\n var digits = 4;\n while (msec10 % 10 === 0) {\n digits -= 1;\n msec10 /= 10;\n }\n dateStr += \".\" + lpad(msec10, digits);\n }\n }\n }\n return dateStr;\n }\n exports.cleanDate = function(v, dflt, calendar) {\n if (v === BADNUM) return dflt;\n if (exports.isJSDate(v) || typeof v === \"number\" && isFinite(v)) {\n if (isWorldCalendar(calendar)) {\n Loggers.error(\"JS Dates and milliseconds are incompatible with world calendars\", v);\n return dflt;\n }\n v = exports.ms2DateTimeLocal(+v);\n if (!v && dflt !== void 0) return dflt;\n } else if (!exports.isDateTime(v, calendar)) {\n Loggers.error(\"unrecognized date\", v);\n return dflt;\n }\n return v;\n };\n var fracMatch = /%\\d?f/g;\n var halfYearMatch = /%h/g;\n var quarterToHalfYear = {\n 1: \"1\",\n 2: \"1\",\n 3: \"2\",\n 4: \"2\"\n };\n function modDateFormat(fmt, x, formatter, calendar) {\n fmt = fmt.replace(fracMatch, function(match) {\n var digits = Math.min(+match.charAt(1) || 6, 6);\n var fracSecs = (x / 1e3 % 1 + 2).toFixed(digits).substr(2).replace(/0+$/, \"\") || \"0\";\n return fracSecs;\n });\n var d = new Date(Math.floor(x + 0.05));\n fmt = fmt.replace(halfYearMatch, function() {\n return quarterToHalfYear[formatter(\"%q\")(d)];\n });\n if (isWorldCalendar(calendar)) {\n try {\n fmt = Registry.getComponentMethod(\"calendars\", \"worldCalFmt\")(fmt, x, calendar);\n } catch (e) {\n return \"Invalid\";\n }\n }\n return formatter(fmt)(d);\n }\n var MAXSECONDS = [59, 59.9, 59.99, 59.999, 59.9999];\n function formatTime(x, tr) {\n var timePart = mod(x + 0.05, ONEDAY);\n var timeStr = lpad(Math.floor(timePart / ONEHOUR), 2) + \":\" + lpad(mod(Math.floor(timePart / ONEMIN), 60), 2);\n if (tr !== \"M\") {\n if (!isNumeric(tr)) tr = 0;\n var sec = Math.min(mod(x / ONESEC, 60), MAXSECONDS[tr]);\n var secStr = (100 + sec).toFixed(tr).substr(1);\n if (tr > 0) {\n secStr = secStr.replace(/0+$/, \"\").replace(/[\\.]$/, \"\");\n }\n timeStr += \":\" + secStr;\n }\n return timeStr;\n }\n exports.formatDate = function(x, fmt, tr, formatter, calendar, extraFormat) {\n calendar = isWorldCalendar(calendar) && calendar;\n if (!fmt) {\n if (tr === \"y\") fmt = extraFormat.year;\n else if (tr === \"m\") fmt = extraFormat.month;\n else if (tr === \"d\") {\n fmt = extraFormat.dayMonth + \"\\n\" + extraFormat.year;\n } else {\n return formatTime(x, tr) + \"\\n\" + modDateFormat(extraFormat.dayMonthYear, x, formatter, calendar);\n }\n }\n return modDateFormat(fmt, x, formatter, calendar);\n };\n var THREEDAYS = 3 * ONEDAY;\n exports.incrementMonth = function(ms, dMonth, calendar) {\n calendar = isWorldCalendar(calendar) && calendar;\n var timeMs = mod(ms, ONEDAY);\n ms = Math.round(ms - timeMs);\n if (calendar) {\n try {\n var dateJD = Math.round(ms / ONEDAY) + EPOCHJD;\n var calInstance = Registry.getComponentMethod(\"calendars\", \"getCal\")(calendar);\n var cDate = calInstance.fromJD(dateJD);\n if (dMonth % 12) calInstance.add(cDate, dMonth, \"m\");\n else calInstance.add(cDate, dMonth / 12, \"y\");\n return (cDate.toJD() - EPOCHJD) * ONEDAY + timeMs;\n } catch (e) {\n Loggers.error(\"invalid ms \" + ms + \" in calendar \" + calendar);\n }\n }\n var y = new Date(ms + THREEDAYS);\n return y.setUTCMonth(y.getUTCMonth() + dMonth) + timeMs - THREEDAYS;\n };\n exports.findExactDates = function(data, calendar) {\n var exactYears = 0;\n var exactMonths = 0;\n var exactDays = 0;\n var blankCount = 0;\n var d;\n var di;\n var calInstance = isWorldCalendar(calendar) && Registry.getComponentMethod(\"calendars\", \"getCal\")(calendar);\n for (var i = 0; i < data.length; i++) {\n di = data[i];\n if (!isNumeric(di)) {\n blankCount++;\n continue;\n }\n if (di % ONEDAY) continue;\n if (calInstance) {\n try {\n d = calInstance.fromJD(di / ONEDAY + EPOCHJD);\n if (d.day() === 1) {\n if (d.month() === 1) exactYears++;\n else exactMonths++;\n } else exactDays++;\n } catch (e) {\n }\n } else {\n d = new Date(di);\n if (d.getUTCDate() === 1) {\n if (d.getUTCMonth() === 0) exactYears++;\n else exactMonths++;\n } else exactDays++;\n }\n }\n exactMonths += exactYears;\n exactDays += exactMonths;\n var dataCount = data.length - blankCount;\n return {\n exactYears: exactYears / dataCount,\n exactMonths: exactMonths / dataCount,\n exactDays: exactDays / dataCount\n };\n };\n }\n });\n\n // src/lib/identity.js\n var require_identity2 = __commonJS({\n \"src/lib/identity.js\"(exports, module) {\n \"use strict\";\n module.exports = function identity(d) {\n return d;\n };\n }\n });\n\n // src/lib/search.js\n var require_search = __commonJS({\n \"src/lib/search.js\"(exports) {\n \"use strict\";\n var isNumeric = require_fast_isnumeric();\n var loggers = require_loggers();\n var identity = require_identity2();\n var BADNUM = require_numerical().BADNUM;\n var roundingError = 1e-9;\n exports.findBin = function(val, bins, linelow) {\n if (isNumeric(bins.start)) {\n return linelow ? Math.ceil((val - bins.start) / bins.size - roundingError) - 1 : Math.floor((val - bins.start) / bins.size + roundingError);\n } else {\n var n1 = 0;\n var n2 = bins.length;\n var c = 0;\n var binSize = n2 > 1 ? (bins[n2 - 1] - bins[0]) / (n2 - 1) : 1;\n var n, test;\n if (binSize >= 0) {\n test = linelow ? lessThan : lessOrEqual;\n } else {\n test = linelow ? greaterOrEqual : greaterThan;\n }\n val += binSize * roundingError * (linelow ? -1 : 1) * (binSize >= 0 ? 1 : -1);\n while (n1 < n2 && c++ < 100) {\n n = Math.floor((n1 + n2) / 2);\n if (test(bins[n], val)) n1 = n + 1;\n else n2 = n;\n }\n if (c > 90) loggers.log(\"Long binary search...\");\n return n1 - 1;\n }\n };\n function lessThan(a, b) {\n return a < b;\n }\n function lessOrEqual(a, b) {\n return a <= b;\n }\n function greaterThan(a, b) {\n return a > b;\n }\n function greaterOrEqual(a, b) {\n return a >= b;\n }\n exports.sorterAsc = function(a, b) {\n return a - b;\n };\n exports.sorterDes = function(a, b) {\n return b - a;\n };\n exports.distinctVals = function(valsIn) {\n var vals = valsIn.slice();\n vals.sort(exports.sorterAsc);\n var last;\n for (last = vals.length - 1; last > -1; last--) {\n if (vals[last] !== BADNUM) break;\n }\n var minDiff = vals[last] - vals[0] || 1;\n var errDiff = minDiff / (last || 1) / 1e4;\n var newVals = [];\n var preV;\n for (var i = 0; i <= last; i++) {\n var v = vals[i];\n var diff = v - preV;\n if (preV === void 0) {\n newVals.push(v);\n preV = v;\n } else if (diff > errDiff) {\n minDiff = Math.min(minDiff, diff);\n newVals.push(v);\n preV = v;\n }\n }\n return { vals: newVals, minDiff };\n };\n exports.roundUp = function(val, arrayIn, reverse) {\n var low = 0;\n var high = arrayIn.length - 1;\n var mid;\n var c = 0;\n var dlow = reverse ? 0 : 1;\n var dhigh = reverse ? 1 : 0;\n var rounded = reverse ? Math.ceil : Math.floor;\n while (low < high && c++ < 100) {\n mid = rounded((low + high) / 2);\n if (arrayIn[mid] <= val) low = mid + dlow;\n else high = mid - dhigh;\n }\n return arrayIn[low];\n };\n exports.sort = function(array, sortFn) {\n var notOrdered = 0;\n var notReversed = 0;\n for (var i = 1; i < array.length; i++) {\n var pairOrder = sortFn(array[i], array[i - 1]);\n if (pairOrder < 0) notOrdered = 1;\n else if (pairOrder > 0) notReversed = 1;\n if (notOrdered && notReversed) return array.sort(sortFn);\n }\n return notReversed ? array : array.reverse();\n };\n exports.findIndexOfMin = function(arr, fn) {\n fn = fn || identity;\n var min = Infinity;\n var ind;\n for (var i = 0; i < arr.length; i++) {\n var v = fn(arr[i]);\n if (v < min) {\n min = v;\n ind = i;\n }\n }\n return ind;\n };\n }\n });\n\n // src/lib/sort_object_keys.js\n var require_sort_object_keys = __commonJS({\n \"src/lib/sort_object_keys.js\"(exports, module) {\n \"use strict\";\n module.exports = function sortObjectKeys(obj) {\n return Object.keys(obj).sort();\n };\n }\n });\n\n // src/lib/stats.js\n var require_stats = __commonJS({\n \"src/lib/stats.js\"(exports) {\n \"use strict\";\n var isNumeric = require_fast_isnumeric();\n var isArrayOrTypedArray = require_array().isArrayOrTypedArray;\n exports.aggNums = function(f, v, a, len) {\n var i, b;\n if (!len || len > a.length) len = a.length;\n if (!isNumeric(v)) v = false;\n if (isArrayOrTypedArray(a[0])) {\n b = new Array(len);\n for (i = 0; i < len; i++) b[i] = exports.aggNums(f, v, a[i]);\n a = b;\n }\n for (i = 0; i < len; i++) {\n if (!isNumeric(v)) v = a[i];\n else if (isNumeric(a[i])) v = f(+v, +a[i]);\n }\n return v;\n };\n exports.len = function(data) {\n return exports.aggNums(function(a) {\n return a + 1;\n }, 0, data);\n };\n exports.mean = function(data, len) {\n if (!len) len = exports.len(data);\n return exports.aggNums(function(a, b) {\n return a + b;\n }, 0, data) / len;\n };\n exports.geometricMean = function(data, len) {\n if (!len) len = exports.len(data);\n return Math.pow(exports.aggNums(function(a, b) {\n return a * b;\n }, 1, data), 1 / len);\n };\n exports.midRange = function(numArr) {\n if (numArr === void 0 || numArr.length === 0) return void 0;\n return (exports.aggNums(Math.max, null, numArr) + exports.aggNums(Math.min, null, numArr)) / 2;\n };\n exports.variance = function(data, len, mean) {\n if (!len) len = exports.len(data);\n if (!isNumeric(mean)) mean = exports.mean(data, len);\n return exports.aggNums(function(a, b) {\n return a + Math.pow(b - mean, 2);\n }, 0, data) / len;\n };\n exports.stdev = function(data, len, mean) {\n return Math.sqrt(exports.variance(data, len, mean));\n };\n exports.median = function(data) {\n var b = data.slice().sort();\n return exports.interp(b, 0.5);\n };\n exports.interp = function(arr, n) {\n if (!isNumeric(n)) throw \"n should be a finite number\";\n n = n * arr.length - 0.5;\n if (n < 0) return arr[0];\n if (n > arr.length - 1) return arr[arr.length - 1];\n var frac = n % 1;\n return frac * arr[Math.ceil(n)] + (1 - frac) * arr[Math.floor(n)];\n };\n }\n });\n\n // src/lib/angles.js\n var require_angles = __commonJS({\n \"src/lib/angles.js\"(exports, module) {\n \"use strict\";\n var modModule = require_mod();\n var mod = modModule.mod;\n var modHalf = modModule.modHalf;\n var PI = Math.PI;\n var twoPI = 2 * PI;\n function deg2rad(deg) {\n return deg / 180 * PI;\n }\n function rad2deg(rad) {\n return rad / PI * 180;\n }\n function isFullCircle(aBnds) {\n return Math.abs(aBnds[1] - aBnds[0]) > twoPI - 1e-14;\n }\n function angleDelta(a, b) {\n return modHalf(b - a, twoPI);\n }\n function angleDist(a, b) {\n return Math.abs(angleDelta(a, b));\n }\n function isAngleInsideSector(a, aBnds) {\n if (isFullCircle(aBnds)) return true;\n var s0, s1;\n if (aBnds[0] < aBnds[1]) {\n s0 = aBnds[0];\n s1 = aBnds[1];\n } else {\n s0 = aBnds[1];\n s1 = aBnds[0];\n }\n s0 = mod(s0, twoPI);\n s1 = mod(s1, twoPI);\n if (s0 > s1) s1 += twoPI;\n var a0 = mod(a, twoPI);\n var a1 = a0 + twoPI;\n return a0 >= s0 && a0 <= s1 || a1 >= s0 && a1 <= s1;\n }\n function isPtInsideSector(r, a, rBnds, aBnds) {\n if (!isAngleInsideSector(a, aBnds)) return false;\n var r0, r1;\n if (rBnds[0] < rBnds[1]) {\n r0 = rBnds[0];\n r1 = rBnds[1];\n } else {\n r0 = rBnds[1];\n r1 = rBnds[0];\n }\n return r >= r0 && r <= r1;\n }\n function _path(r0, r1, a0, a1, cx, cy, isClosed) {\n cx = cx || 0;\n cy = cy || 0;\n var isCircle = isFullCircle([a0, a1]);\n var aStart, aMid, aEnd;\n var rStart, rEnd;\n if (isCircle) {\n aStart = 0;\n aMid = PI;\n aEnd = twoPI;\n } else {\n if (a0 < a1) {\n aStart = a0;\n aEnd = a1;\n } else {\n aStart = a1;\n aEnd = a0;\n }\n }\n if (r0 < r1) {\n rStart = r0;\n rEnd = r1;\n } else {\n rStart = r1;\n rEnd = r0;\n }\n function pt(r, a) {\n return [r * Math.cos(a) + cx, cy - r * Math.sin(a)];\n }\n var largeArc = Math.abs(aEnd - aStart) <= PI ? 0 : 1;\n function arc(r, a, cw) {\n return \"A\" + [r, r] + \" \" + [0, largeArc, cw] + \" \" + pt(r, a);\n }\n var p;\n if (isCircle) {\n if (rStart === null) {\n p = \"M\" + pt(rEnd, aStart) + arc(rEnd, aMid, 0) + arc(rEnd, aEnd, 0) + \"Z\";\n } else {\n p = \"M\" + pt(rStart, aStart) + arc(rStart, aMid, 0) + arc(rStart, aEnd, 0) + \"ZM\" + pt(rEnd, aStart) + arc(rEnd, aMid, 1) + arc(rEnd, aEnd, 1) + \"Z\";\n }\n } else {\n if (rStart === null) {\n p = \"M\" + pt(rEnd, aStart) + arc(rEnd, aEnd, 0);\n if (isClosed) p += \"L0,0Z\";\n } else {\n p = \"M\" + pt(rStart, aStart) + \"L\" + pt(rEnd, aStart) + arc(rEnd, aEnd, 0) + \"L\" + pt(rStart, aEnd) + arc(rStart, aStart, 1) + \"Z\";\n }\n }\n return p;\n }\n function pathArc(r, a0, a1, cx, cy) {\n return _path(null, r, a0, a1, cx, cy, 0);\n }\n function pathSector(r, a0, a1, cx, cy) {\n return _path(null, r, a0, a1, cx, cy, 1);\n }\n function pathAnnulus(r0, r1, a0, a1, cx, cy) {\n return _path(r0, r1, a0, a1, cx, cy, 1);\n }\n module.exports = {\n deg2rad,\n rad2deg,\n angleDelta,\n angleDist,\n isFullCircle,\n isAngleInsideSector,\n isPtInsideSector,\n pathArc,\n pathSector,\n pathAnnulus\n };\n }\n });\n\n // src/lib/anchor_utils.js\n var require_anchor_utils = __commonJS({\n \"src/lib/anchor_utils.js\"(exports) {\n \"use strict\";\n exports.isLeftAnchor = function isLeftAnchor(opts) {\n return opts.xanchor === \"left\" || opts.xanchor === \"auto\" && opts.x <= 1 / 3;\n };\n exports.isCenterAnchor = function isCenterAnchor(opts) {\n return opts.xanchor === \"center\" || opts.xanchor === \"auto\" && opts.x > 1 / 3 && opts.x < 2 / 3;\n };\n exports.isRightAnchor = function isRightAnchor(opts) {\n return opts.xanchor === \"right\" || opts.xanchor === \"auto\" && opts.x >= 2 / 3;\n };\n exports.isTopAnchor = function isTopAnchor(opts) {\n return opts.yanchor === \"top\" || opts.yanchor === \"auto\" && opts.y >= 2 / 3;\n };\n exports.isMiddleAnchor = function isMiddleAnchor(opts) {\n return opts.yanchor === \"middle\" || opts.yanchor === \"auto\" && opts.y > 1 / 3 && opts.y < 2 / 3;\n };\n exports.isBottomAnchor = function isBottomAnchor(opts) {\n return opts.yanchor === \"bottom\" || opts.yanchor === \"auto\" && opts.y <= 1 / 3;\n };\n }\n });\n\n // src/lib/geometry2d.js\n var require_geometry2d = __commonJS({\n \"src/lib/geometry2d.js\"(exports) {\n \"use strict\";\n var mod = require_mod().mod;\n exports.segmentsIntersect = segmentsIntersect;\n function segmentsIntersect(x1, y1, x2, y2, x3, y3, x4, y4) {\n var a = x2 - x1;\n var b = x3 - x1;\n var c = x4 - x3;\n var d = y2 - y1;\n var e = y3 - y1;\n var f = y4 - y3;\n var det = a * f - c * d;\n if (det === 0) return null;\n var t = (b * f - c * e) / det;\n var u = (b * d - a * e) / det;\n if (u < 0 || u > 1 || t < 0 || t > 1) return null;\n return { x: x1 + a * t, y: y1 + d * t };\n }\n exports.segmentDistance = function segmentDistance(x1, y1, x2, y2, x3, y3, x4, y4) {\n if (segmentsIntersect(x1, y1, x2, y2, x3, y3, x4, y4)) return 0;\n var x12 = x2 - x1;\n var y12 = y2 - y1;\n var x34 = x4 - x3;\n var y34 = y4 - y3;\n var ll12 = x12 * x12 + y12 * y12;\n var ll34 = x34 * x34 + y34 * y34;\n var dist2 = Math.min(\n perpDistance2(x12, y12, ll12, x3 - x1, y3 - y1),\n perpDistance2(x12, y12, ll12, x4 - x1, y4 - y1),\n perpDistance2(x34, y34, ll34, x1 - x3, y1 - y3),\n perpDistance2(x34, y34, ll34, x2 - x3, y2 - y3)\n );\n return Math.sqrt(dist2);\n };\n function perpDistance2(xab, yab, llab, xac, yac) {\n var fcAB = xac * xab + yac * yab;\n if (fcAB < 0) {\n return xac * xac + yac * yac;\n } else if (fcAB > llab) {\n var xbc = xac - xab;\n var ybc = yac - yab;\n return xbc * xbc + ybc * ybc;\n } else {\n var crossProduct = xac * yab - yac * xab;\n return crossProduct * crossProduct / llab;\n }\n }\n var locationCache;\n var workingPath;\n var workingTextWidth;\n exports.getTextLocation = function getTextLocation(path, totalPathLen, positionOnPath, textWidth) {\n if (path !== workingPath || textWidth !== workingTextWidth) {\n locationCache = {};\n workingPath = path;\n workingTextWidth = textWidth;\n }\n if (locationCache[positionOnPath]) {\n return locationCache[positionOnPath];\n }\n var p0 = path.getPointAtLength(mod(positionOnPath - textWidth / 2, totalPathLen));\n var p1 = path.getPointAtLength(mod(positionOnPath + textWidth / 2, totalPathLen));\n var theta = Math.atan((p1.y - p0.y) / (p1.x - p0.x));\n var pCenter = path.getPointAtLength(mod(positionOnPath, totalPathLen));\n var x = (pCenter.x * 4 + p0.x + p1.x) / 6;\n var y = (pCenter.y * 4 + p0.y + p1.y) / 6;\n var out = { x, y, theta };\n locationCache[positionOnPath] = out;\n return out;\n };\n exports.clearLocationCache = function() {\n workingPath = null;\n };\n exports.getVisibleSegment = function getVisibleSegment(path, bounds, buffer) {\n var left = bounds.left;\n var right = bounds.right;\n var top = bounds.top;\n var bottom = bounds.bottom;\n var pMin = 0;\n var pTotal = path.getTotalLength();\n var pMax = pTotal;\n var pt0, ptTotal;\n function getDistToPlot(len) {\n var pt = path.getPointAtLength(len);\n if (len === 0) pt0 = pt;\n else if (len === pTotal) ptTotal = pt;\n var dx = pt.x < left ? left - pt.x : pt.x > right ? pt.x - right : 0;\n var dy = pt.y < top ? top - pt.y : pt.y > bottom ? pt.y - bottom : 0;\n return Math.sqrt(dx * dx + dy * dy);\n }\n var distToPlot = getDistToPlot(pMin);\n while (distToPlot) {\n pMin += distToPlot + buffer;\n if (pMin > pMax) return;\n distToPlot = getDistToPlot(pMin);\n }\n distToPlot = getDistToPlot(pMax);\n while (distToPlot) {\n pMax -= distToPlot + buffer;\n if (pMin > pMax) return;\n distToPlot = getDistToPlot(pMax);\n }\n return {\n min: pMin,\n max: pMax,\n len: pMax - pMin,\n total: pTotal,\n isClosed: pMin === 0 && pMax === pTotal && Math.abs(pt0.x - ptTotal.x) < 0.1 && Math.abs(pt0.y - ptTotal.y) < 0.1\n };\n };\n exports.findPointOnPath = function findPointOnPath(path, val, coord, opts) {\n opts = opts || {};\n var pathLength = opts.pathLength || path.getTotalLength();\n var tolerance = opts.tolerance || 1e-3;\n var iterationLimit = opts.iterationLimit || 30;\n var mul = path.getPointAtLength(0)[coord] > path.getPointAtLength(pathLength)[coord] ? -1 : 1;\n var i = 0;\n var b0 = 0;\n var b1 = pathLength;\n var mid;\n var pt;\n var diff;\n while (i < iterationLimit) {\n mid = (b0 + b1) / 2;\n pt = path.getPointAtLength(mid);\n diff = pt[coord] - val;\n if (Math.abs(diff) < tolerance) {\n return pt;\n } else {\n if (mul * diff > 0) {\n b1 = mid;\n } else {\n b0 = mid;\n }\n i++;\n }\n }\n return pt;\n };\n }\n });\n\n // src/lib/throttle.js\n var require_throttle = __commonJS({\n \"src/lib/throttle.js\"(exports) {\n \"use strict\";\n var timerCache = {};\n exports.throttle = function throttle(id, minInterval, callback) {\n var cache = timerCache[id];\n var now = Date.now();\n if (!cache) {\n for (var idi in timerCache) {\n if (timerCache[idi].ts < now - 6e4) {\n delete timerCache[idi];\n }\n }\n cache = timerCache[id] = { ts: 0, timer: null };\n }\n _clearTimeout(cache);\n function exec() {\n callback();\n cache.ts = Date.now();\n if (cache.onDone) {\n cache.onDone();\n cache.onDone = null;\n }\n }\n if (now > cache.ts + minInterval) {\n exec();\n return;\n }\n cache.timer = setTimeout(function() {\n exec();\n cache.timer = null;\n }, minInterval);\n };\n exports.done = function(id) {\n var cache = timerCache[id];\n if (!cache || !cache.timer) return Promise.resolve();\n return new Promise(function(resolve) {\n var previousOnDone = cache.onDone;\n cache.onDone = function onDone() {\n if (previousOnDone) previousOnDone();\n resolve();\n cache.onDone = null;\n };\n });\n };\n exports.clear = function(id) {\n if (id) {\n _clearTimeout(timerCache[id]);\n delete timerCache[id];\n } else {\n for (var idi in timerCache) exports.clear(idi);\n }\n };\n function _clearTimeout(cache) {\n if (cache && cache.timer !== null) {\n clearTimeout(cache.timer);\n cache.timer = null;\n }\n }\n }\n });\n\n // src/lib/clear_responsive.js\n var require_clear_responsive = __commonJS({\n \"src/lib/clear_responsive.js\"(exports, module) {\n \"use strict\";\n module.exports = function clearResponsive(gd) {\n if (gd._responsiveChartHandler) {\n window.removeEventListener(\"resize\", gd._responsiveChartHandler);\n delete gd._responsiveChartHandler;\n }\n };\n }\n });\n\n // node_modules/is-mobile/index.js\n var require_is_mobile = __commonJS({\n \"node_modules/is-mobile/index.js\"(exports, module) {\n \"use strict\";\n module.exports = isMobile;\n module.exports.isMobile = isMobile;\n module.exports.default = isMobile;\n var mobileRE = /(android|bb\\d+|meego).+mobile|armv7l|avantgo|bada\\/|blackberry|blazer|compal|elaine|fennec|hiptop|iemobile|ip(hone|od)|iris|kindle|lge |maemo|midp|mmp|mobile.+firefox|netfront|opera m(ob|in)i|palm( os)?|phone|p(ixi|re)\\/|plucker|pocket|psp|series[46]0|samsungbrowser.*mobile|symbian|treo|up\\.(browser|link)|vodafone|wap|windows (ce|phone)|xda|xiino/i;\n var notMobileRE = /CrOS/;\n var tabletRE = /android|ipad|playbook|silk/i;\n function isMobile(opts) {\n if (!opts) opts = {};\n let ua = opts.ua;\n if (!ua && typeof navigator !== \"undefined\") ua = navigator.userAgent;\n if (ua && ua.headers && typeof ua.headers[\"user-agent\"] === \"string\") {\n ua = ua.headers[\"user-agent\"];\n }\n if (typeof ua !== \"string\") return false;\n let result = mobileRE.test(ua) && !notMobileRE.test(ua) || !!opts.tablet && tabletRE.test(ua);\n if (!result && opts.tablet && opts.featureDetect && navigator && navigator.maxTouchPoints > 1 && ua.indexOf(\"Macintosh\") !== -1 && ua.indexOf(\"Safari\") !== -1) {\n result = true;\n }\n return result;\n }\n }\n });\n\n // src/lib/preserve_drawing_buffer.js\n var require_preserve_drawing_buffer = __commonJS({\n \"src/lib/preserve_drawing_buffer.js\"(exports, module) {\n \"use strict\";\n var isNumeric = require_fast_isnumeric();\n var isMobileOrTablet = require_is_mobile();\n module.exports = function preserveDrawingBuffer(opts) {\n var ua;\n if (opts && opts.hasOwnProperty(\"userAgent\")) {\n ua = opts.userAgent;\n } else {\n ua = getUserAgent();\n }\n if (typeof ua !== \"string\") return true;\n var enable = isMobileOrTablet({\n ua: { headers: { \"user-agent\": ua } },\n tablet: true,\n featureDetect: false\n });\n if (!enable) {\n var allParts = ua.split(\" \");\n for (var i = 1; i < allParts.length; i++) {\n var part = allParts[i];\n if (part.indexOf(\"Safari\") !== -1) {\n for (var k = i - 1; k > -1; k--) {\n var prevPart = allParts[k];\n if (prevPart.substr(0, 8) === \"Version/\") {\n var v = prevPart.substr(8).split(\".\")[0];\n if (isNumeric(v)) v = +v;\n if (v >= 13) return true;\n }\n }\n }\n }\n }\n return enable;\n };\n function getUserAgent() {\n var ua;\n if (typeof navigator !== \"undefined\") {\n ua = navigator.userAgent;\n }\n if (ua && ua.headers && typeof ua.headers[\"user-agent\"] === \"string\") {\n ua = ua.headers[\"user-agent\"];\n }\n return ua;\n }\n }\n });\n\n // src/lib/make_trace_groups.js\n var require_make_trace_groups = __commonJS({\n \"src/lib/make_trace_groups.js\"(exports, module) {\n \"use strict\";\n var d3 = require_d3();\n module.exports = function makeTraceGroups(traceLayer, cdModule, cls) {\n var traces = traceLayer.selectAll(\"g.\" + cls.replace(/\\s/g, \".\")).data(cdModule, function(cd) {\n return cd[0].trace.uid;\n });\n traces.exit().remove();\n traces.enter().append(\"g\").attr(\"class\", cls);\n traces.order();\n var k = traceLayer.classed(\"rangeplot\") ? \"nodeRangePlot3\" : \"node3\";\n traces.each(function(cd) {\n cd[0][k] = d3.select(this);\n });\n return traces;\n };\n }\n });\n\n // src/lib/localize.js\n var require_localize = __commonJS({\n \"src/lib/localize.js\"(exports, module) {\n \"use strict\";\n var Registry = require_registry();\n module.exports = function localize(gd, s) {\n var locale = gd._context.locale;\n for (var i = 0; i < 2; i++) {\n var locales = gd._context.locales;\n for (var j = 0; j < 2; j++) {\n var dict = (locales[locale] || {}).dictionary;\n if (dict) {\n var out = dict[s];\n if (out) return out;\n }\n locales = Registry.localeRegistry;\n }\n var baseLocale = locale.split(\"-\")[0];\n if (baseLocale === locale) break;\n locale = baseLocale;\n }\n return s;\n };\n }\n });\n\n // src/lib/filter_unique.js\n var require_filter_unique = __commonJS({\n \"src/lib/filter_unique.js\"(exports, module) {\n \"use strict\";\n module.exports = function filterUnique(array) {\n var seen = {};\n var out = [];\n var j = 0;\n for (var i = 0; i < array.length; i++) {\n var item = array[i];\n if (seen[item] !== 1) {\n seen[item] = 1;\n out[j++] = item;\n }\n }\n return out;\n };\n }\n });\n\n // src/lib/filter_visible.js\n var require_filter_visible = __commonJS({\n \"src/lib/filter_visible.js\"(exports, module) {\n \"use strict\";\n module.exports = function filterVisible(container) {\n var filterFn = isCalcData(container) ? calcDataFilter : baseFilter;\n var out = [];\n for (var i = 0; i < container.length; i++) {\n var item = container[i];\n if (filterFn(item)) out.push(item);\n }\n return out;\n };\n function baseFilter(item) {\n return item.visible === true;\n }\n function calcDataFilter(item) {\n var trace = item[0].trace;\n return trace.visible === true && trace._length !== 0;\n }\n function isCalcData(cont) {\n return Array.isArray(cont) && Array.isArray(cont[0]) && cont[0][0] && cont[0][0].trace;\n }\n }\n });\n\n // src/lib/increment.js\n var require_increment = __commonJS({\n \"src/lib/increment.js\"(exports, module) {\n \"use strict\";\n module.exports = function incrementNumeric(x, delta) {\n if (!delta) return x;\n var scale = 1 / Math.abs(delta);\n var newX = scale > 1 ? (scale * x + scale * delta) / scale : x + delta;\n var lenX1 = String(newX).length;\n if (lenX1 > 16) {\n var lenDt = String(delta).length;\n var lenX0 = String(x).length;\n if (lenX1 >= lenX0 + lenDt) {\n var s = parseFloat(newX).toPrecision(12);\n if (s.indexOf(\"e+\") === -1) newX = +s;\n }\n }\n return newX;\n };\n }\n });\n\n // src/lib/clean_number.js\n var require_clean_number = __commonJS({\n \"src/lib/clean_number.js\"(exports, module) {\n \"use strict\";\n var isNumeric = require_fast_isnumeric();\n var BADNUM = require_numerical().BADNUM;\n var JUNK = /^['\"%,$#\\s']+|[, ]|['\"%,$#\\s']+$/g;\n module.exports = function cleanNumber(v) {\n if (typeof v === \"string\") {\n v = v.replace(JUNK, \"\");\n }\n if (isNumeric(v)) return Number(v);\n return BADNUM;\n };\n }\n });\n\n // src/lib/index.js\n var require_lib = __commonJS({\n \"src/lib/index.js\"(exports, module) {\n \"use strict\";\n var d3 = require_d3();\n var utcFormat = require_d3_time_format().utcFormat;\n var d3Format = require_d3_format().format;\n var isNumeric = require_fast_isnumeric();\n var numConstants = require_numerical();\n var MAX_SAFE = numConstants.FP_SAFE;\n var MIN_SAFE = -MAX_SAFE;\n var BADNUM = numConstants.BADNUM;\n var lib = module.exports = {};\n lib.adjustFormat = function adjustFormat(formatStr) {\n if (!formatStr || /^\\d[.]\\df/.test(formatStr) || /[.]\\d%/.test(formatStr)) return formatStr;\n if (formatStr === \"0.f\") return \"~f\";\n if (/^\\d%/.test(formatStr)) return \"~%\";\n if (/^\\ds/.test(formatStr)) return \"~s\";\n if (!/^[~,.0$]/.test(formatStr) && /[&fps]/.test(formatStr)) return \"~\" + formatStr;\n return formatStr;\n };\n var seenBadFormats = {};\n lib.warnBadFormat = function(f) {\n var key = String(f);\n if (!seenBadFormats[key]) {\n seenBadFormats[key] = 1;\n lib.warn('encountered bad format: \"' + key + '\"');\n }\n };\n lib.noFormat = function(value) {\n return String(value);\n };\n lib.numberFormat = function(formatStr) {\n var fn;\n try {\n fn = d3Format(lib.adjustFormat(formatStr));\n } catch (e) {\n lib.warnBadFormat(formatStr);\n return lib.noFormat;\n }\n return fn;\n };\n lib.nestedProperty = require_nested_property();\n lib.keyedContainer = require_keyed_container();\n lib.relativeAttr = require_relative_attr();\n lib.isPlainObject = require_is_plain_object();\n lib.toLogRange = require_to_log_range();\n lib.relinkPrivateKeys = require_relink_private();\n var arrayModule = require_array();\n lib.isArrayBuffer = arrayModule.isArrayBuffer;\n lib.isTypedArray = arrayModule.isTypedArray;\n lib.isArrayOrTypedArray = arrayModule.isArrayOrTypedArray;\n lib.isArray1D = arrayModule.isArray1D;\n lib.ensureArray = arrayModule.ensureArray;\n lib.concat = arrayModule.concat;\n lib.maxRowLength = arrayModule.maxRowLength;\n lib.minRowLength = arrayModule.minRowLength;\n var modModule = require_mod();\n lib.mod = modModule.mod;\n lib.modHalf = modModule.modHalf;\n var coerceModule = require_coerce();\n lib.valObjectMeta = coerceModule.valObjectMeta;\n lib.coerce = coerceModule.coerce;\n lib.coerce2 = coerceModule.coerce2;\n lib.coerceFont = coerceModule.coerceFont;\n lib.coercePattern = coerceModule.coercePattern;\n lib.coerceHoverinfo = coerceModule.coerceHoverinfo;\n lib.coerceSelectionMarkerOpacity = coerceModule.coerceSelectionMarkerOpacity;\n lib.validate = coerceModule.validate;\n var datesModule = require_dates();\n lib.dateTime2ms = datesModule.dateTime2ms;\n lib.isDateTime = datesModule.isDateTime;\n lib.ms2DateTime = datesModule.ms2DateTime;\n lib.ms2DateTimeLocal = datesModule.ms2DateTimeLocal;\n lib.cleanDate = datesModule.cleanDate;\n lib.isJSDate = datesModule.isJSDate;\n lib.formatDate = datesModule.formatDate;\n lib.incrementMonth = datesModule.incrementMonth;\n lib.dateTick0 = datesModule.dateTick0;\n lib.dfltRange = datesModule.dfltRange;\n lib.findExactDates = datesModule.findExactDates;\n lib.MIN_MS = datesModule.MIN_MS;\n lib.MAX_MS = datesModule.MAX_MS;\n var searchModule = require_search();\n lib.findBin = searchModule.findBin;\n lib.sorterAsc = searchModule.sorterAsc;\n lib.sorterDes = searchModule.sorterDes;\n lib.distinctVals = searchModule.distinctVals;\n lib.roundUp = searchModule.roundUp;\n lib.sort = searchModule.sort;\n lib.findIndexOfMin = searchModule.findIndexOfMin;\n lib.sortObjectKeys = require_sort_object_keys();\n var statsModule = require_stats();\n lib.aggNums = statsModule.aggNums;\n lib.len = statsModule.len;\n lib.mean = statsModule.mean;\n lib.geometricMean = statsModule.geometricMean;\n lib.median = statsModule.median;\n lib.midRange = statsModule.midRange;\n lib.variance = statsModule.variance;\n lib.stdev = statsModule.stdev;\n lib.interp = statsModule.interp;\n var matrixModule = require_matrix();\n lib.init2dArray = matrixModule.init2dArray;\n lib.transposeRagged = matrixModule.transposeRagged;\n lib.dot = matrixModule.dot;\n lib.translationMatrix = matrixModule.translationMatrix;\n lib.rotationMatrix = matrixModule.rotationMatrix;\n lib.rotationXYMatrix = matrixModule.rotationXYMatrix;\n lib.apply3DTransform = matrixModule.apply3DTransform;\n lib.apply2DTransform = matrixModule.apply2DTransform;\n lib.apply2DTransform2 = matrixModule.apply2DTransform2;\n lib.convertCssMatrix = matrixModule.convertCssMatrix;\n lib.inverseTransformMatrix = matrixModule.inverseTransformMatrix;\n var anglesModule = require_angles();\n lib.deg2rad = anglesModule.deg2rad;\n lib.rad2deg = anglesModule.rad2deg;\n lib.angleDelta = anglesModule.angleDelta;\n lib.angleDist = anglesModule.angleDist;\n lib.isFullCircle = anglesModule.isFullCircle;\n lib.isAngleInsideSector = anglesModule.isAngleInsideSector;\n lib.isPtInsideSector = anglesModule.isPtInsideSector;\n lib.pathArc = anglesModule.pathArc;\n lib.pathSector = anglesModule.pathSector;\n lib.pathAnnulus = anglesModule.pathAnnulus;\n var anchorUtils = require_anchor_utils();\n lib.isLeftAnchor = anchorUtils.isLeftAnchor;\n lib.isCenterAnchor = anchorUtils.isCenterAnchor;\n lib.isRightAnchor = anchorUtils.isRightAnchor;\n lib.isTopAnchor = anchorUtils.isTopAnchor;\n lib.isMiddleAnchor = anchorUtils.isMiddleAnchor;\n lib.isBottomAnchor = anchorUtils.isBottomAnchor;\n var geom2dModule = require_geometry2d();\n lib.segmentsIntersect = geom2dModule.segmentsIntersect;\n lib.segmentDistance = geom2dModule.segmentDistance;\n lib.getTextLocation = geom2dModule.getTextLocation;\n lib.clearLocationCache = geom2dModule.clearLocationCache;\n lib.getVisibleSegment = geom2dModule.getVisibleSegment;\n lib.findPointOnPath = geom2dModule.findPointOnPath;\n var extendModule = require_extend();\n lib.extendFlat = extendModule.extendFlat;\n lib.extendDeep = extendModule.extendDeep;\n lib.extendDeepAll = extendModule.extendDeepAll;\n lib.extendDeepNoArrays = extendModule.extendDeepNoArrays;\n var loggersModule = require_loggers();\n lib.log = loggersModule.log;\n lib.warn = loggersModule.warn;\n lib.error = loggersModule.error;\n var regexModule = require_regex();\n lib.counterRegex = regexModule.counter;\n var throttleModule = require_throttle();\n lib.throttle = throttleModule.throttle;\n lib.throttleDone = throttleModule.done;\n lib.clearThrottle = throttleModule.clear;\n var domModule = require_dom();\n lib.getGraphDiv = domModule.getGraphDiv;\n lib.isPlotDiv = domModule.isPlotDiv;\n lib.removeElement = domModule.removeElement;\n lib.addStyleRule = domModule.addStyleRule;\n lib.addRelatedStyleRule = domModule.addRelatedStyleRule;\n lib.deleteRelatedStyleRule = domModule.deleteRelatedStyleRule;\n lib.setStyleOnHover = domModule.setStyleOnHover;\n lib.getFullTransformMatrix = domModule.getFullTransformMatrix;\n lib.getElementTransformMatrix = domModule.getElementTransformMatrix;\n lib.getElementAndAncestors = domModule.getElementAndAncestors;\n lib.equalDomRects = domModule.equalDomRects;\n lib.clearResponsive = require_clear_responsive();\n lib.preserveDrawingBuffer = require_preserve_drawing_buffer();\n lib.makeTraceGroups = require_make_trace_groups();\n lib._ = require_localize();\n lib.notifier = require_notifier();\n lib.filterUnique = require_filter_unique();\n lib.filterVisible = require_filter_visible();\n lib.pushUnique = require_push_unique();\n lib.increment = require_increment();\n lib.cleanNumber = require_clean_number();\n lib.ensureNumber = function ensureNumber(v) {\n if (!isNumeric(v)) return BADNUM;\n v = Number(v);\n return v > MAX_SAFE || v < MIN_SAFE ? BADNUM : v;\n };\n lib.isIndex = function(v, len) {\n if (len !== void 0 && v >= len) return false;\n return isNumeric(v) && v >= 0 && v % 1 === 0;\n };\n lib.noop = require_noop();\n lib.identity = require_identity2();\n lib.repeat = function(v, cnt) {\n var out = new Array(cnt);\n for (var i = 0; i < cnt; i++) {\n out[i] = v;\n }\n return out;\n };\n lib.swapAttrs = function(cont, attrList, part1, part2) {\n if (!part1) part1 = \"x\";\n if (!part2) part2 = \"y\";\n for (var i = 0; i < attrList.length; i++) {\n var attr = attrList[i];\n var xp = lib.nestedProperty(cont, attr.replace(\"?\", part1));\n var yp = lib.nestedProperty(cont, attr.replace(\"?\", part2));\n var temp = xp.get();\n xp.set(yp.get());\n yp.set(temp);\n }\n };\n lib.raiseToTop = function raiseToTop(elem) {\n elem.parentNode.appendChild(elem);\n };\n lib.cancelTransition = function(selection) {\n return selection.transition().duration(0);\n };\n lib.constrain = function(v, v0, v1) {\n if (v0 > v1) return Math.max(v1, Math.min(v0, v));\n return Math.max(v0, Math.min(v1, v));\n };\n lib.bBoxIntersect = function(a, b, pad) {\n pad = pad || 0;\n return a.left <= b.right + pad && b.left <= a.right + pad && a.top <= b.bottom + pad && b.top <= a.bottom + pad;\n };\n lib.simpleMap = function(array, func, x1, x2, opts) {\n var len = array.length;\n var out = new Array(len);\n for (var i = 0; i < len; i++) out[i] = func(array[i], x1, x2, opts);\n return out;\n };\n lib.randstr = function randstr(existing, bits, base, _recursion) {\n if (!base) base = 16;\n if (bits === void 0) bits = 24;\n if (bits <= 0) return \"0\";\n var digits = Math.log(Math.pow(2, bits)) / Math.log(base);\n var res = \"\";\n var i, b, x;\n for (i = 2; digits === Infinity; i *= 2) {\n digits = Math.log(Math.pow(2, bits / i)) / Math.log(base) * i;\n }\n var rem = digits - Math.floor(digits);\n for (i = 0; i < Math.floor(digits); i++) {\n x = Math.floor(Math.random() * base).toString(base);\n res = x + res;\n }\n if (rem) {\n b = Math.pow(base, rem);\n x = Math.floor(Math.random() * b).toString(base);\n res = x + res;\n }\n var parsed = parseInt(res, base);\n if (existing && existing[res] || parsed !== Infinity && parsed >= Math.pow(2, bits)) {\n if (_recursion > 10) {\n lib.warn(\"randstr failed uniqueness\");\n return res;\n }\n return randstr(existing, bits, base, (_recursion || 0) + 1);\n } else return res;\n };\n lib.OptionControl = function(opt, optname) {\n if (!opt) opt = {};\n if (!optname) optname = \"opt\";\n var self2 = {};\n self2.optionList = [];\n self2._newoption = function(optObj) {\n optObj[optname] = opt;\n self2[optObj.name] = optObj;\n self2.optionList.push(optObj);\n };\n self2[\"_\" + optname] = opt;\n return self2;\n };\n lib.smooth = function(arrayIn, FWHM) {\n FWHM = Math.round(FWHM) || 0;\n if (FWHM < 2) return arrayIn;\n var alen = arrayIn.length;\n var alen2 = 2 * alen;\n var wlen = 2 * FWHM - 1;\n var w = new Array(wlen);\n var arrayOut = new Array(alen);\n var i;\n var j;\n var k;\n var v;\n for (i = 0; i < wlen; i++) {\n w[i] = (1 - Math.cos(Math.PI * (i + 1) / FWHM)) / (2 * FWHM);\n }\n for (i = 0; i < alen; i++) {\n v = 0;\n for (j = 0; j < wlen; j++) {\n k = i + j + 1 - FWHM;\n if (k < -alen) k -= alen2 * Math.round(k / alen2);\n else if (k >= alen2) k -= alen2 * Math.floor(k / alen2);\n if (k < 0) k = -1 - k;\n else if (k >= alen) k = alen2 - 1 - k;\n v += arrayIn[k] * w[j];\n }\n arrayOut[i] = v;\n }\n return arrayOut;\n };\n lib.syncOrAsync = function(sequence, arg, finalStep) {\n var ret, fni;\n function continueAsync() {\n return lib.syncOrAsync(sequence, arg, finalStep);\n }\n while (sequence.length) {\n fni = sequence.splice(0, 1)[0];\n ret = fni(arg);\n if (ret && ret.then) {\n return ret.then(continueAsync);\n }\n }\n return finalStep && finalStep(arg);\n };\n lib.stripTrailingSlash = function(str) {\n if (str.substr(-1) === \"/\") return str.substr(0, str.length - 1);\n return str;\n };\n lib.noneOrAll = function(containerIn, containerOut, attrList) {\n if (!containerIn) return;\n var hasAny = false;\n var hasAll = true;\n var i;\n var val;\n for (i = 0; i < attrList.length; i++) {\n val = containerIn[attrList[i]];\n if (val !== void 0 && val !== null) hasAny = true;\n else hasAll = false;\n }\n if (hasAny && !hasAll) {\n for (i = 0; i < attrList.length; i++) {\n containerIn[attrList[i]] = containerOut[attrList[i]];\n }\n }\n };\n lib.mergeArray = function(traceAttr, cd, cdAttr, fn) {\n var hasFn = typeof fn === \"function\";\n if (lib.isArrayOrTypedArray(traceAttr)) {\n var imax = Math.min(traceAttr.length, cd.length);\n for (var i = 0; i < imax; i++) {\n var v = traceAttr[i];\n cd[i][cdAttr] = hasFn ? fn(v) : v;\n }\n }\n };\n lib.mergeArrayCastPositive = function(traceAttr, cd, cdAttr) {\n return lib.mergeArray(traceAttr, cd, cdAttr, function(v) {\n var w = +v;\n return !isFinite(w) ? 0 : w > 0 ? w : 0;\n });\n };\n lib.fillArray = function(traceAttr, cd, cdAttr, fn) {\n fn = fn || lib.identity;\n if (lib.isArrayOrTypedArray(traceAttr)) {\n for (var i = 0; i < cd.length; i++) {\n cd[i][cdAttr] = fn(traceAttr[i]);\n }\n }\n };\n lib.castOption = function(trace, ptNumber, astr, fn) {\n fn = fn || lib.identity;\n var val = lib.nestedProperty(trace, astr).get();\n if (lib.isArrayOrTypedArray(val)) {\n if (Array.isArray(ptNumber) && lib.isArrayOrTypedArray(val[ptNumber[0]])) {\n return fn(val[ptNumber[0]][ptNumber[1]]);\n } else {\n return fn(val[ptNumber]);\n }\n } else {\n return val;\n }\n };\n lib.extractOption = function(calcPt, trace, calcKey, traceKey) {\n if (calcKey in calcPt) return calcPt[calcKey];\n var traceVal = lib.nestedProperty(trace, traceKey).get();\n if (!Array.isArray(traceVal)) return traceVal;\n };\n function makePtIndex2PtNumber(indexToPoints) {\n var ptIndex2ptNumber = {};\n for (var k in indexToPoints) {\n var pts = indexToPoints[k];\n for (var j = 0; j < pts.length; j++) {\n ptIndex2ptNumber[pts[j]] = +k;\n }\n }\n return ptIndex2ptNumber;\n }\n lib.tagSelected = function(calcTrace, trace, ptNumber2cdIndex) {\n var selectedpoints = trace.selectedpoints;\n var indexToPoints = trace._indexToPoints;\n var ptIndex2ptNumber;\n if (indexToPoints) {\n ptIndex2ptNumber = makePtIndex2PtNumber(indexToPoints);\n }\n function isCdIndexValid(v) {\n return v !== void 0 && v < calcTrace.length;\n }\n for (var i = 0; i < selectedpoints.length; i++) {\n var ptIndex = selectedpoints[i];\n if (lib.isIndex(ptIndex) || lib.isArrayOrTypedArray(ptIndex) && lib.isIndex(ptIndex[0]) && lib.isIndex(ptIndex[1])) {\n var ptNumber = ptIndex2ptNumber ? ptIndex2ptNumber[ptIndex] : ptIndex;\n var cdIndex = ptNumber2cdIndex ? ptNumber2cdIndex[ptNumber] : ptNumber;\n if (isCdIndexValid(cdIndex)) {\n calcTrace[cdIndex].selected = 1;\n }\n }\n }\n };\n lib.selIndices2selPoints = function(trace) {\n var selectedpoints = trace.selectedpoints;\n var indexToPoints = trace._indexToPoints;\n if (indexToPoints) {\n var ptIndex2ptNumber = makePtIndex2PtNumber(indexToPoints);\n var out = [];\n for (var i = 0; i < selectedpoints.length; i++) {\n var ptIndex = selectedpoints[i];\n if (lib.isIndex(ptIndex)) {\n var ptNumber = ptIndex2ptNumber[ptIndex];\n if (lib.isIndex(ptNumber)) {\n out.push(ptNumber);\n }\n }\n }\n return out;\n } else {\n return selectedpoints;\n }\n };\n lib.getTargetArray = function(trace, transformOpts) {\n var target = transformOpts.target;\n if (typeof target === \"string\" && target) {\n var array = lib.nestedProperty(trace, target).get();\n return lib.isArrayOrTypedArray(array) ? array : false;\n } else if (lib.isArrayOrTypedArray(target)) {\n return target;\n }\n return false;\n };\n function minExtend(obj1, obj2, opt) {\n var objOut = {};\n if (typeof obj2 !== \"object\") obj2 = {};\n var arrayLen = opt === \"pieLike\" ? -1 : 3;\n var keys = Object.keys(obj1);\n var i, k, v;\n for (i = 0; i < keys.length; i++) {\n k = keys[i];\n v = obj1[k];\n if (k.charAt(0) === \"_\" || typeof v === \"function\") continue;\n else if (k === \"module\") objOut[k] = v;\n else if (Array.isArray(v)) {\n if (k === \"colorscale\" || arrayLen === -1) {\n objOut[k] = v.slice();\n } else {\n objOut[k] = v.slice(0, arrayLen);\n }\n } else if (lib.isTypedArray(v)) {\n if (arrayLen === -1) {\n objOut[k] = v.subarray();\n } else {\n objOut[k] = v.subarray(0, arrayLen);\n }\n } else if (v && typeof v === \"object\") objOut[k] = minExtend(obj1[k], obj2[k], opt);\n else objOut[k] = v;\n }\n keys = Object.keys(obj2);\n for (i = 0; i < keys.length; i++) {\n k = keys[i];\n v = obj2[k];\n if (typeof v !== \"object\" || !(k in objOut) || typeof objOut[k] !== \"object\") {\n objOut[k] = v;\n }\n }\n return objOut;\n }\n lib.minExtend = minExtend;\n lib.titleCase = function(s) {\n return s.charAt(0).toUpperCase() + s.substr(1);\n };\n lib.containsAny = function(s, fragments) {\n for (var i = 0; i < fragments.length; i++) {\n if (s.indexOf(fragments[i]) !== -1) return true;\n }\n return false;\n };\n var IS_SAFARI_REGEX = /Version\\/[\\d\\.]+.*Safari/;\n lib.isSafari = function() {\n return IS_SAFARI_REGEX.test(window.navigator.userAgent);\n };\n var IS_IOS_REGEX = /iPad|iPhone|iPod/;\n lib.isIOS = function() {\n return IS_IOS_REGEX.test(window.navigator.userAgent);\n };\n var FIREFOX_VERSION_REGEX = /Firefox\\/(\\d+)\\.\\d+/;\n lib.getFirefoxVersion = function() {\n var match = FIREFOX_VERSION_REGEX.exec(window.navigator.userAgent);\n if (match && match.length === 2) {\n var versionInt = parseInt(match[1]);\n if (!isNaN(versionInt)) {\n return versionInt;\n }\n }\n return null;\n };\n lib.isD3Selection = function(obj) {\n return obj instanceof d3.selection;\n };\n lib.ensureSingle = function(parent, nodeType, className, enterFn) {\n var sel = parent.select(nodeType + (className ? \".\" + className : \"\"));\n if (sel.size()) return sel;\n var layer = parent.append(nodeType);\n if (className) layer.classed(className, true);\n if (enterFn) layer.call(enterFn);\n return layer;\n };\n lib.ensureSingleById = function(parent, nodeType, id, enterFn) {\n var sel = parent.select(nodeType + \"#\" + id);\n if (sel.size()) return sel;\n var layer = parent.append(nodeType).attr(\"id\", id);\n if (enterFn) layer.call(enterFn);\n return layer;\n };\n lib.objectFromPath = function(path, value) {\n var keys = path.split(\".\");\n var tmpObj;\n var obj = tmpObj = {};\n for (var i = 0; i < keys.length; i++) {\n var key = keys[i];\n var el = null;\n var parts = keys[i].match(/(.*)\\[([0-9]+)\\]/);\n if (parts) {\n key = parts[1];\n el = parts[2];\n tmpObj = tmpObj[key] = [];\n if (i === keys.length - 1) {\n tmpObj[el] = value;\n } else {\n tmpObj[el] = {};\n }\n tmpObj = tmpObj[el];\n } else {\n if (i === keys.length - 1) {\n tmpObj[key] = value;\n } else {\n tmpObj[key] = {};\n }\n tmpObj = tmpObj[key];\n }\n }\n return obj;\n };\n var dottedPropertyRegex = /^([^\\[\\.]+)\\.(.+)?/;\n var indexedPropertyRegex = /^([^\\.]+)\\[([0-9]+)\\](\\.)?(.+)?/;\n function notValid(prop) {\n return prop.slice(0, 2) === \"__\";\n }\n lib.expandObjectPaths = function(data) {\n var match, key, prop, datum, idx, dest, trailingPath;\n if (typeof data === \"object\" && !Array.isArray(data)) {\n for (key in data) {\n if (data.hasOwnProperty(key)) {\n if (match = key.match(dottedPropertyRegex)) {\n datum = data[key];\n prop = match[1];\n if (notValid(prop)) continue;\n delete data[key];\n data[prop] = lib.extendDeepNoArrays(data[prop] || {}, lib.objectFromPath(key, lib.expandObjectPaths(datum))[prop]);\n } else if (match = key.match(indexedPropertyRegex)) {\n datum = data[key];\n prop = match[1];\n if (notValid(prop)) continue;\n idx = parseInt(match[2]);\n delete data[key];\n data[prop] = data[prop] || [];\n if (match[3] === \".\") {\n trailingPath = match[4];\n dest = data[prop][idx] = data[prop][idx] || {};\n lib.extendDeepNoArrays(dest, lib.objectFromPath(trailingPath, lib.expandObjectPaths(datum)));\n } else {\n if (notValid(prop)) continue;\n data[prop][idx] = lib.expandObjectPaths(datum);\n }\n } else {\n if (notValid(key)) continue;\n data[key] = lib.expandObjectPaths(data[key]);\n }\n }\n }\n }\n return data;\n };\n lib.numSeparate = function(value, separators, separatethousands) {\n if (!separatethousands) separatethousands = false;\n if (typeof separators !== \"string\" || separators.length === 0) {\n throw new Error(\"Separator string required for formatting!\");\n }\n if (typeof value === \"number\") {\n value = String(value);\n }\n var thousandsRe = /(\\d+)(\\d{3})/;\n var decimalSep = separators.charAt(0);\n var thouSep = separators.charAt(1);\n var x = value.split(\".\");\n var x1 = x[0];\n var x2 = x.length > 1 ? decimalSep + x[1] : \"\";\n if (thouSep && (x.length > 1 || x1.length > 4 || separatethousands)) {\n while (thousandsRe.test(x1)) {\n x1 = x1.replace(thousandsRe, \"$1\" + thouSep + \"$2\");\n }\n }\n return x1 + x2;\n };\n lib.TEMPLATE_STRING_REGEX = /%{([^\\s%{}:]*)([:|\\|][^}]*)?}/g;\n var SIMPLE_PROPERTY_REGEX = /^\\w*$/;\n lib.templateString = function(string, obj) {\n var getterCache = {};\n return string.replace(lib.TEMPLATE_STRING_REGEX, function(dummy, key) {\n var v;\n if (SIMPLE_PROPERTY_REGEX.test(key)) {\n v = obj[key];\n } else {\n getterCache[key] = getterCache[key] || lib.nestedProperty(obj, key).get;\n v = getterCache[key]();\n }\n return lib.isValidTextValue(v) ? v : \"\";\n });\n };\n var hovertemplateWarnings = {\n max: 10,\n count: 0,\n name: \"hovertemplate\"\n };\n lib.hovertemplateString = function() {\n return templateFormatString.apply(hovertemplateWarnings, arguments);\n };\n var texttemplateWarnings = {\n max: 10,\n count: 0,\n name: \"texttemplate\"\n };\n lib.texttemplateString = function() {\n return templateFormatString.apply(texttemplateWarnings, arguments);\n };\n var MULT_DIV_REGEX = /^(\\S+)([\\*\\/])(-?\\d+(\\.\\d+)?)$/;\n function multDivParser(inputStr) {\n var match = inputStr.match(MULT_DIV_REGEX);\n if (match) return { key: match[1], op: match[2], number: Number(match[3]) };\n return { key: inputStr, op: null, number: null };\n }\n var texttemplateWarningsForShapes = {\n max: 10,\n count: 0,\n name: \"texttemplate\",\n parseMultDiv: true\n };\n lib.texttemplateStringForShapes = function() {\n return templateFormatString.apply(texttemplateWarningsForShapes, arguments);\n };\n var TEMPLATE_STRING_FORMAT_SEPARATOR = /^[:|\\|]/;\n function templateFormatString(string, labels, d3locale) {\n var opts = this;\n var args = arguments;\n if (!labels) labels = {};\n var getterCache = {};\n return string.replace(lib.TEMPLATE_STRING_REGEX, function(match, rawKey, format) {\n var isOther = rawKey === \"xother\" || rawKey === \"yother\";\n var isSpaceOther = rawKey === \"_xother\" || rawKey === \"_yother\";\n var isSpaceOtherSpace = rawKey === \"_xother_\" || rawKey === \"_yother_\";\n var isOtherSpace = rawKey === \"xother_\" || rawKey === \"yother_\";\n var hasOther = isOther || isSpaceOther || isOtherSpace || isSpaceOtherSpace;\n var key = rawKey;\n if (isSpaceOther || isSpaceOtherSpace) key = key.substring(1);\n if (isOtherSpace || isSpaceOtherSpace) key = key.substring(0, key.length - 1);\n var parsedOp = null;\n var parsedNumber = null;\n if (opts.parseMultDiv) {\n var _match = multDivParser(key);\n key = _match.key;\n parsedOp = _match.op;\n parsedNumber = _match.number;\n }\n var value;\n if (hasOther) {\n value = labels[key];\n if (value === void 0) return \"\";\n } else {\n var obj, i;\n for (i = 3; i < args.length; i++) {\n obj = args[i];\n if (!obj) continue;\n if (obj.hasOwnProperty(key)) {\n value = obj[key];\n break;\n }\n if (!SIMPLE_PROPERTY_REGEX.test(key)) {\n value = lib.nestedProperty(obj, key).get();\n value = getterCache[key] || lib.nestedProperty(obj, key).get();\n if (value) getterCache[key] = value;\n }\n if (value !== void 0) break;\n }\n }\n if (value !== void 0) {\n if (parsedOp === \"*\") value *= parsedNumber;\n if (parsedOp === \"/\") value /= parsedNumber;\n }\n if (value === void 0 && opts) {\n if (opts.count < opts.max) {\n lib.warn(\"Variable '\" + key + \"' in \" + opts.name + \" could not be found!\");\n value = match;\n }\n if (opts.count === opts.max) {\n lib.warn(\"Too many \" + opts.name + \" warnings - additional warnings will be suppressed\");\n }\n opts.count++;\n return match;\n }\n if (format) {\n var fmt;\n if (format[0] === \":\") {\n fmt = d3locale ? d3locale.numberFormat : lib.numberFormat;\n if (value !== \"\") {\n value = fmt(format.replace(TEMPLATE_STRING_FORMAT_SEPARATOR, \"\"))(value);\n }\n }\n if (format[0] === \"|\") {\n fmt = d3locale ? d3locale.timeFormat : utcFormat;\n var ms = lib.dateTime2ms(value);\n value = lib.formatDate(ms, format.replace(TEMPLATE_STRING_FORMAT_SEPARATOR, \"\"), false, fmt);\n }\n } else {\n var keyLabel = key + \"Label\";\n if (labels.hasOwnProperty(keyLabel)) value = labels[keyLabel];\n }\n if (hasOther) {\n value = \"(\" + value + \")\";\n if (isSpaceOther || isSpaceOtherSpace) value = \" \" + value;\n if (isOtherSpace || isSpaceOtherSpace) value = value + \" \";\n }\n return value;\n });\n }\n var char0 = 48;\n var char9 = 57;\n lib.subplotSort = function(a, b) {\n var l = Math.min(a.length, b.length) + 1;\n var numA = 0;\n var numB = 0;\n for (var i = 0; i < l; i++) {\n var charA = a.charCodeAt(i) || 0;\n var charB = b.charCodeAt(i) || 0;\n var isNumA = charA >= char0 && charA <= char9;\n var isNumB = charB >= char0 && charB <= char9;\n if (isNumA) numA = 10 * numA + charA - char0;\n if (isNumB) numB = 10 * numB + charB - char0;\n if (!isNumA || !isNumB) {\n if (numA !== numB) return numA - numB;\n if (charA !== charB) return charA - charB;\n }\n }\n return numB - numA;\n };\n var randSeed = 2e9;\n lib.seedPseudoRandom = function() {\n randSeed = 2e9;\n };\n lib.pseudoRandom = function() {\n var lastVal = randSeed;\n randSeed = (69069 * randSeed + 1) % 4294967296;\n if (Math.abs(randSeed - lastVal) < 429496729) return lib.pseudoRandom();\n return randSeed / 4294967296;\n };\n lib.fillText = function(calcPt, trace, contOut) {\n var fill = Array.isArray(contOut) ? function(v) {\n contOut.push(v);\n } : function(v) {\n contOut.text = v;\n };\n var htx = lib.extractOption(calcPt, trace, \"htx\", \"hovertext\");\n if (lib.isValidTextValue(htx)) return fill(htx);\n var tx = lib.extractOption(calcPt, trace, \"tx\", \"text\");\n if (lib.isValidTextValue(tx)) return fill(tx);\n };\n lib.isValidTextValue = function(v) {\n return v || v === 0;\n };\n lib.formatPercent = function(ratio, n) {\n n = n || 0;\n var str = (Math.round(100 * ratio * Math.pow(10, n)) * Math.pow(0.1, n)).toFixed(n) + \"%\";\n for (var i = 0; i < n; i++) {\n if (str.indexOf(\".\") !== -1) {\n str = str.replace(\"0%\", \"%\");\n str = str.replace(\".%\", \"%\");\n }\n }\n return str;\n };\n lib.isHidden = function(gd) {\n var display = window.getComputedStyle(gd).display;\n return !display || display === \"none\";\n };\n lib.strTranslate = function(x, y) {\n return x || y ? \"translate(\" + x + \",\" + y + \")\" : \"\";\n };\n lib.strRotate = function(a) {\n return a ? \"rotate(\" + a + \")\" : \"\";\n };\n lib.strScale = function(s) {\n return s !== 1 ? \"scale(\" + s + \")\" : \"\";\n };\n lib.getTextTransform = function(transform) {\n var noCenter = transform.noCenter;\n var textX = transform.textX;\n var textY = transform.textY;\n var targetX = transform.targetX;\n var targetY = transform.targetY;\n var anchorX = transform.anchorX || 0;\n var anchorY = transform.anchorY || 0;\n var rotate = transform.rotate;\n var scale = transform.scale;\n if (!scale) scale = 0;\n else if (scale > 1) scale = 1;\n return lib.strTranslate(\n targetX - scale * (textX + anchorX),\n targetY - scale * (textY + anchorY)\n ) + lib.strScale(scale) + (rotate ? \"rotate(\" + rotate + (noCenter ? \"\" : \" \" + textX + \" \" + textY) + \")\" : \"\");\n };\n lib.setTransormAndDisplay = function(s, transform) {\n s.attr(\"transform\", lib.getTextTransform(transform));\n s.style(\"display\", transform.scale ? null : \"none\");\n };\n lib.ensureUniformFontSize = function(gd, baseFont) {\n var out = lib.extendFlat({}, baseFont);\n out.size = Math.max(\n baseFont.size,\n gd._fullLayout.uniformtext.minsize || 0\n );\n return out;\n };\n lib.join2 = function(arr, mainSeparator, lastSeparator) {\n var len = arr.length;\n if (len > 1) {\n return arr.slice(0, -1).join(mainSeparator) + lastSeparator + arr[len - 1];\n }\n return arr.join(mainSeparator);\n };\n lib.bigFont = function(size) {\n return Math.round(1.2 * size);\n };\n var firefoxVersion = lib.getFirefoxVersion();\n var isProblematicFirefox = firefoxVersion !== null && firefoxVersion < 86;\n lib.getPositionFromD3Event = function() {\n if (isProblematicFirefox) {\n return [\n d3.event.layerX,\n d3.event.layerY\n ];\n } else {\n return [\n d3.event.offsetX,\n d3.event.offsetY\n ];\n }\n };\n }\n });\n\n // build/plotcss.js\n var require_plotcss = __commonJS({\n \"build/plotcss.js\"() {\n \"use strict\";\n var Lib = require_lib();\n var rules = {\n \"X,X div\": 'direction:ltr;font-family:\"Open Sans\",verdana,arial,sans-serif;margin:0;padding:0;',\n \"X input,X button\": 'font-family:\"Open Sans\",verdana,arial,sans-serif;',\n \"X input:focus,X button:focus\": \"outline:none;\",\n \"X a\": \"text-decoration:none;\",\n \"X a:hover\": \"text-decoration:none;\",\n \"X .crisp\": \"shape-rendering:crispEdges;\",\n \"X .user-select-none\": \"-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;-o-user-select:none;user-select:none;\",\n \"X svg a\": \"fill:#447adb;\",\n \"X svg a:hover\": \"fill:#3c6dc5;\",\n \"X .main-svg\": \"position:absolute;top:0;left:0;pointer-events:none;\",\n \"X .main-svg .draglayer\": \"pointer-events:all;\",\n \"X .cursor-default\": \"cursor:default;\",\n \"X .cursor-pointer\": \"cursor:pointer;\",\n \"X .cursor-crosshair\": \"cursor:crosshair;\",\n \"X .cursor-move\": \"cursor:move;\",\n \"X .cursor-col-resize\": \"cursor:col-resize;\",\n \"X .cursor-row-resize\": \"cursor:row-resize;\",\n \"X .cursor-ns-resize\": \"cursor:ns-resize;\",\n \"X .cursor-ew-resize\": \"cursor:ew-resize;\",\n \"X .cursor-sw-resize\": \"cursor:sw-resize;\",\n \"X .cursor-s-resize\": \"cursor:s-resize;\",\n \"X .cursor-se-resize\": \"cursor:se-resize;\",\n \"X .cursor-w-resize\": \"cursor:w-resize;\",\n \"X .cursor-e-resize\": \"cursor:e-resize;\",\n \"X .cursor-nw-resize\": \"cursor:nw-resize;\",\n \"X .cursor-n-resize\": \"cursor:n-resize;\",\n \"X .cursor-ne-resize\": \"cursor:ne-resize;\",\n \"X .cursor-grab\": \"cursor:-webkit-grab;cursor:grab;\",\n \"X .modebar\": \"position:absolute;top:2px;right:2px;\",\n \"X .ease-bg\": \"-webkit-transition:background-color .3s ease 0s;-moz-transition:background-color .3s ease 0s;-ms-transition:background-color .3s ease 0s;-o-transition:background-color .3s ease 0s;transition:background-color .3s ease 0s;\",\n \"X .modebar--hover>:not(.watermark)\": \"opacity:0;-webkit-transition:opacity .3s ease 0s;-moz-transition:opacity .3s ease 0s;-ms-transition:opacity .3s ease 0s;-o-transition:opacity .3s ease 0s;transition:opacity .3s ease 0s;\",\n \"X:hover .modebar--hover .modebar-group\": \"opacity:1;\",\n \"X .modebar-group\": \"float:left;display:inline-block;box-sizing:border-box;padding-left:8px;position:relative;vertical-align:middle;white-space:nowrap;\",\n \"X .modebar-btn\": \"position:relative;font-size:16px;padding:3px 4px;height:22px;cursor:pointer;line-height:normal;box-sizing:border-box;\",\n \"X .modebar-btn svg\": \"position:relative;top:2px;\",\n \"X .modebar.vertical\": \"display:flex;flex-direction:column;flex-wrap:wrap;align-content:flex-end;max-height:100%;\",\n \"X .modebar.vertical svg\": \"top:-1px;\",\n \"X .modebar.vertical .modebar-group\": \"display:block;float:none;padding-left:0px;padding-bottom:8px;\",\n \"X .modebar.vertical .modebar-group .modebar-btn\": \"display:block;text-align:center;\",\n \"X [data-title]:before,X [data-title]:after\": \"position:absolute;-webkit-transform:translate3d(0, 0, 0);-moz-transform:translate3d(0, 0, 0);-ms-transform:translate3d(0, 0, 0);-o-transform:translate3d(0, 0, 0);transform:translate3d(0, 0, 0);display:none;opacity:0;z-index:1001;pointer-events:none;top:110%;right:50%;\",\n \"X [data-title]:hover:before,X [data-title]:hover:after\": \"display:block;opacity:1;\",\n \"X [data-title]:before\": 'content:\"\";position:absolute;background:rgba(0,0,0,0);border:6px solid rgba(0,0,0,0);z-index:1002;margin-top:-12px;border-bottom-color:#69738a;margin-right:-6px;',\n \"X [data-title]:after\": \"content:attr(data-title);background:#69738a;color:#fff;padding:8px 10px;font-size:12px;line-height:12px;white-space:nowrap;margin-right:-18px;border-radius:2px;\",\n \"X .vertical [data-title]:before,X .vertical [data-title]:after\": \"top:0%;right:200%;\",\n \"X .vertical [data-title]:before\": \"border:6px solid rgba(0,0,0,0);border-left-color:#69738a;margin-top:8px;margin-right:-30px;\",\n Y: 'font-family:\"Open Sans\",verdana,arial,sans-serif;position:fixed;top:50px;right:20px;z-index:10000;font-size:10pt;max-width:180px;',\n \"Y p\": \"margin:0;\",\n \"Y .notifier-note\": \"min-width:180px;max-width:250px;border:1px solid #fff;z-index:3000;margin:0;background-color:#8c97af;background-color:rgba(140,151,175,.9);color:#fff;padding:10px;overflow-wrap:break-word;word-wrap:break-word;-ms-hyphens:auto;-webkit-hyphens:auto;hyphens:auto;\",\n \"Y .notifier-close\": \"color:#fff;opacity:.8;float:right;padding:0 5px;background:none;border:none;font-size:20px;font-weight:bold;line-height:20px;\",\n \"Y .notifier-close:hover\": \"color:#444;text-decoration:none;cursor:pointer;\"\n };\n for (selector in rules) {\n fullSelector = selector.replace(/^,/, \" ,\").replace(/X/g, \".js-plotly-plot .plotly\").replace(/Y/g, \".plotly-notifier\");\n Lib.addStyleRule(fullSelector, rules[selector]);\n }\n var fullSelector;\n var selector;\n }\n });\n\n // node_modules/is-browser/client.js\n var require_client = __commonJS({\n \"node_modules/is-browser/client.js\"(exports, module) {\n module.exports = true;\n }\n });\n\n // node_modules/has-hover/index.js\n var require_has_hover = __commonJS({\n \"node_modules/has-hover/index.js\"(exports, module) {\n \"use strict\";\n var isBrowser = require_client();\n var hasHover;\n if (typeof window.matchMedia === \"function\") {\n hasHover = !window.matchMedia(\"(hover: none)\").matches;\n } else {\n hasHover = isBrowser;\n }\n module.exports = hasHover;\n }\n });\n\n // node_modules/events/events.js\n var require_events = __commonJS({\n \"node_modules/events/events.js\"(exports, module) {\n \"use strict\";\n var R = typeof Reflect === \"object\" ? Reflect : null;\n var ReflectApply = R && typeof R.apply === \"function\" ? R.apply : function ReflectApply2(target, receiver, args) {\n return Function.prototype.apply.call(target, receiver, args);\n };\n var ReflectOwnKeys;\n if (R && typeof R.ownKeys === \"function\") {\n ReflectOwnKeys = R.ownKeys;\n } else if (Object.getOwnPropertySymbols) {\n ReflectOwnKeys = function ReflectOwnKeys2(target) {\n return Object.getOwnPropertyNames(target).concat(Object.getOwnPropertySymbols(target));\n };\n } else {\n ReflectOwnKeys = function ReflectOwnKeys2(target) {\n return Object.getOwnPropertyNames(target);\n };\n }\n function ProcessEmitWarning(warning) {\n if (console && console.warn) console.warn(warning);\n }\n var NumberIsNaN = Number.isNaN || function NumberIsNaN2(value) {\n return value !== value;\n };\n function EventEmitter() {\n EventEmitter.init.call(this);\n }\n module.exports = EventEmitter;\n module.exports.once = once;\n EventEmitter.EventEmitter = EventEmitter;\n EventEmitter.prototype._events = void 0;\n EventEmitter.prototype._eventsCount = 0;\n EventEmitter.prototype._maxListeners = void 0;\n var defaultMaxListeners = 10;\n function checkListener(listener) {\n if (typeof listener !== \"function\") {\n throw new TypeError('The \"listener\" argument must be of type Function. Received type ' + typeof listener);\n }\n }\n Object.defineProperty(EventEmitter, \"defaultMaxListeners\", {\n enumerable: true,\n get: function() {\n return defaultMaxListeners;\n },\n set: function(arg) {\n if (typeof arg !== \"number\" || arg < 0 || NumberIsNaN(arg)) {\n throw new RangeError('The value of \"defaultMaxListeners\" is out of range. It must be a non-negative number. Received ' + arg + \".\");\n }\n defaultMaxListeners = arg;\n }\n });\n EventEmitter.init = function() {\n if (this._events === void 0 || this._events === Object.getPrototypeOf(this)._events) {\n this._events = /* @__PURE__ */ Object.create(null);\n this._eventsCount = 0;\n }\n this._maxListeners = this._maxListeners || void 0;\n };\n EventEmitter.prototype.setMaxListeners = function setMaxListeners(n) {\n if (typeof n !== \"number\" || n < 0 || NumberIsNaN(n)) {\n throw new RangeError('The value of \"n\" is out of range. It must be a non-negative number. Received ' + n + \".\");\n }\n this._maxListeners = n;\n return this;\n };\n function _getMaxListeners(that) {\n if (that._maxListeners === void 0)\n return EventEmitter.defaultMaxListeners;\n return that._maxListeners;\n }\n EventEmitter.prototype.getMaxListeners = function getMaxListeners() {\n return _getMaxListeners(this);\n };\n EventEmitter.prototype.emit = function emit(type) {\n var args = [];\n for (var i = 1; i < arguments.length; i++) args.push(arguments[i]);\n var doError = type === \"error\";\n var events = this._events;\n if (events !== void 0)\n doError = doError && events.error === void 0;\n else if (!doError)\n return false;\n if (doError) {\n var er;\n if (args.length > 0)\n er = args[0];\n if (er instanceof Error) {\n throw er;\n }\n var err = new Error(\"Unhandled error.\" + (er ? \" (\" + er.message + \")\" : \"\"));\n err.context = er;\n throw err;\n }\n var handler = events[type];\n if (handler === void 0)\n return false;\n if (typeof handler === \"function\") {\n ReflectApply(handler, this, args);\n } else {\n var len = handler.length;\n var listeners = arrayClone(handler, len);\n for (var i = 0; i < len; ++i)\n ReflectApply(listeners[i], this, args);\n }\n return true;\n };\n function _addListener(target, type, listener, prepend) {\n var m;\n var events;\n var existing;\n checkListener(listener);\n events = target._events;\n if (events === void 0) {\n events = target._events = /* @__PURE__ */ Object.create(null);\n target._eventsCount = 0;\n } else {\n if (events.newListener !== void 0) {\n target.emit(\n \"newListener\",\n type,\n listener.listener ? listener.listener : listener\n );\n events = target._events;\n }\n existing = events[type];\n }\n if (existing === void 0) {\n existing = events[type] = listener;\n ++target._eventsCount;\n } else {\n if (typeof existing === \"function\") {\n existing = events[type] = prepend ? [listener, existing] : [existing, listener];\n } else if (prepend) {\n existing.unshift(listener);\n } else {\n existing.push(listener);\n }\n m = _getMaxListeners(target);\n if (m > 0 && existing.length > m && !existing.warned) {\n existing.warned = true;\n var w = new Error(\"Possible EventEmitter memory leak detected. \" + existing.length + \" \" + String(type) + \" listeners added. Use emitter.setMaxListeners() to increase limit\");\n w.name = \"MaxListenersExceededWarning\";\n w.emitter = target;\n w.type = type;\n w.count = existing.length;\n ProcessEmitWarning(w);\n }\n }\n return target;\n }\n EventEmitter.prototype.addListener = function addListener(type, listener) {\n return _addListener(this, type, listener, false);\n };\n EventEmitter.prototype.on = EventEmitter.prototype.addListener;\n EventEmitter.prototype.prependListener = function prependListener(type, listener) {\n return _addListener(this, type, listener, true);\n };\n function onceWrapper() {\n if (!this.fired) {\n this.target.removeListener(this.type, this.wrapFn);\n this.fired = true;\n if (arguments.length === 0)\n return this.listener.call(this.target);\n return this.listener.apply(this.target, arguments);\n }\n }\n function _onceWrap(target, type, listener) {\n var state = { fired: false, wrapFn: void 0, target, type, listener };\n var wrapped = onceWrapper.bind(state);\n wrapped.listener = listener;\n state.wrapFn = wrapped;\n return wrapped;\n }\n EventEmitter.prototype.once = function once2(type, listener) {\n checkListener(listener);\n this.on(type, _onceWrap(this, type, listener));\n return this;\n };\n EventEmitter.prototype.prependOnceListener = function prependOnceListener(type, listener) {\n checkListener(listener);\n this.prependListener(type, _onceWrap(this, type, listener));\n return this;\n };\n EventEmitter.prototype.removeListener = function removeListener(type, listener) {\n var list, events, position, i, originalListener;\n checkListener(listener);\n events = this._events;\n if (events === void 0)\n return this;\n list = events[type];\n if (list === void 0)\n return this;\n if (list === listener || list.listener === listener) {\n if (--this._eventsCount === 0)\n this._events = /* @__PURE__ */ Object.create(null);\n else {\n delete events[type];\n if (events.removeListener)\n this.emit(\"removeListener\", type, list.listener || listener);\n }\n } else if (typeof list !== \"function\") {\n position = -1;\n for (i = list.length - 1; i >= 0; i--) {\n if (list[i] === listener || list[i].listener === listener) {\n originalListener = list[i].listener;\n position = i;\n break;\n }\n }\n if (position < 0)\n return this;\n if (position === 0)\n list.shift();\n else {\n spliceOne(list, position);\n }\n if (list.length === 1)\n events[type] = list[0];\n if (events.removeListener !== void 0)\n this.emit(\"removeListener\", type, originalListener || listener);\n }\n return this;\n };\n EventEmitter.prototype.off = EventEmitter.prototype.removeListener;\n EventEmitter.prototype.removeAllListeners = function removeAllListeners(type) {\n var listeners, events, i;\n events = this._events;\n if (events === void 0)\n return this;\n if (events.removeListener === void 0) {\n if (arguments.length === 0) {\n this._events = /* @__PURE__ */ Object.create(null);\n this._eventsCount = 0;\n } else if (events[type] !== void 0) {\n if (--this._eventsCount === 0)\n this._events = /* @__PURE__ */ Object.create(null);\n else\n delete events[type];\n }\n return this;\n }\n if (arguments.length === 0) {\n var keys = Object.keys(events);\n var key;\n for (i = 0; i < keys.length; ++i) {\n key = keys[i];\n if (key === \"removeListener\") continue;\n this.removeAllListeners(key);\n }\n this.removeAllListeners(\"removeListener\");\n this._events = /* @__PURE__ */ Object.create(null);\n this._eventsCount = 0;\n return this;\n }\n listeners = events[type];\n if (typeof listeners === \"function\") {\n this.removeListener(type, listeners);\n } else if (listeners !== void 0) {\n for (i = listeners.length - 1; i >= 0; i--) {\n this.removeListener(type, listeners[i]);\n }\n }\n return this;\n };\n function _listeners(target, type, unwrap) {\n var events = target._events;\n if (events === void 0)\n return [];\n var evlistener = events[type];\n if (evlistener === void 0)\n return [];\n if (typeof evlistener === \"function\")\n return unwrap ? [evlistener.listener || evlistener] : [evlistener];\n return unwrap ? unwrapListeners(evlistener) : arrayClone(evlistener, evlistener.length);\n }\n EventEmitter.prototype.listeners = function listeners(type) {\n return _listeners(this, type, true);\n };\n EventEmitter.prototype.rawListeners = function rawListeners(type) {\n return _listeners(this, type, false);\n };\n EventEmitter.listenerCount = function(emitter, type) {\n if (typeof emitter.listenerCount === \"function\") {\n return emitter.listenerCount(type);\n } else {\n return listenerCount.call(emitter, type);\n }\n };\n EventEmitter.prototype.listenerCount = listenerCount;\n function listenerCount(type) {\n var events = this._events;\n if (events !== void 0) {\n var evlistener = events[type];\n if (typeof evlistener === \"function\") {\n return 1;\n } else if (evlistener !== void 0) {\n return evlistener.length;\n }\n }\n return 0;\n }\n EventEmitter.prototype.eventNames = function eventNames() {\n return this._eventsCount > 0 ? ReflectOwnKeys(this._events) : [];\n };\n function arrayClone(arr, n) {\n var copy = new Array(n);\n for (var i = 0; i < n; ++i)\n copy[i] = arr[i];\n return copy;\n }\n function spliceOne(list, index) {\n for (; index + 1 < list.length; index++)\n list[index] = list[index + 1];\n list.pop();\n }\n function unwrapListeners(arr) {\n var ret = new Array(arr.length);\n for (var i = 0; i < ret.length; ++i) {\n ret[i] = arr[i].listener || arr[i];\n }\n return ret;\n }\n function once(emitter, name) {\n return new Promise(function(resolve, reject) {\n function errorListener(err) {\n emitter.removeListener(name, resolver);\n reject(err);\n }\n function resolver() {\n if (typeof emitter.removeListener === \"function\") {\n emitter.removeListener(\"error\", errorListener);\n }\n resolve([].slice.call(arguments));\n }\n ;\n eventTargetAgnosticAddListener(emitter, name, resolver, { once: true });\n if (name !== \"error\") {\n addErrorHandlerIfEventEmitter(emitter, errorListener, { once: true });\n }\n });\n }\n function addErrorHandlerIfEventEmitter(emitter, handler, flags) {\n if (typeof emitter.on === \"function\") {\n eventTargetAgnosticAddListener(emitter, \"error\", handler, flags);\n }\n }\n function eventTargetAgnosticAddListener(emitter, name, listener, flags) {\n if (typeof emitter.on === \"function\") {\n if (flags.once) {\n emitter.once(name, listener);\n } else {\n emitter.on(name, listener);\n }\n } else if (typeof emitter.addEventListener === \"function\") {\n emitter.addEventListener(name, function wrapListener(arg) {\n if (flags.once) {\n emitter.removeEventListener(name, wrapListener);\n }\n listener(arg);\n });\n } else {\n throw new TypeError('The \"emitter\" argument must be of type EventEmitter. Received type ' + typeof emitter);\n }\n }\n }\n });\n\n // src/lib/events.js\n var require_events2 = __commonJS({\n \"src/lib/events.js\"(exports, module) {\n \"use strict\";\n var EventEmitter = require_events().EventEmitter;\n var Events = {\n init: function(plotObj) {\n if (plotObj._ev instanceof EventEmitter) return plotObj;\n var ev = new EventEmitter();\n var internalEv = new EventEmitter();\n plotObj._ev = ev;\n plotObj._internalEv = internalEv;\n plotObj.on = ev.on.bind(ev);\n plotObj.once = ev.once.bind(ev);\n plotObj.removeListener = ev.removeListener.bind(ev);\n plotObj.removeAllListeners = ev.removeAllListeners.bind(ev);\n plotObj._internalOn = internalEv.on.bind(internalEv);\n plotObj._internalOnce = internalEv.once.bind(internalEv);\n plotObj._removeInternalListener = internalEv.removeListener.bind(internalEv);\n plotObj._removeAllInternalListeners = internalEv.removeAllListeners.bind(internalEv);\n plotObj.emit = function(event, data) {\n ev.emit(event, data);\n internalEv.emit(event, data);\n };\n return plotObj;\n },\n /*\n * This function behaves like jQuery's triggerHandler. It calls\n * all handlers for a particular event and returns the return value\n * of the LAST handler.\n */\n triggerHandler: function(plotObj, event, data) {\n var nodeEventHandlerValue;\n var ev = plotObj._ev;\n if (!ev) return;\n var handlers = ev._events[event];\n if (!handlers) return;\n function apply(handler) {\n if (handler.listener) {\n ev.removeListener(event, handler.listener);\n if (!handler.fired) {\n handler.fired = true;\n return handler.listener.apply(ev, [data]);\n }\n } else {\n return handler.apply(ev, [data]);\n }\n }\n handlers = Array.isArray(handlers) ? handlers : [handlers];\n var i;\n for (i = 0; i < handlers.length - 1; i++) {\n apply(handlers[i]);\n }\n nodeEventHandlerValue = apply(handlers[i]);\n return nodeEventHandlerValue;\n },\n purge: function(plotObj) {\n delete plotObj._ev;\n delete plotObj.on;\n delete plotObj.once;\n delete plotObj.removeListener;\n delete plotObj.removeAllListeners;\n delete plotObj.emit;\n delete plotObj._ev;\n delete plotObj._internalEv;\n delete plotObj._internalOn;\n delete plotObj._internalOnce;\n delete plotObj._removeInternalListener;\n delete plotObj._removeAllInternalListeners;\n return plotObj;\n }\n };\n module.exports = Events;\n }\n });\n\n // src/lib/queue.js\n var require_queue = __commonJS({\n \"src/lib/queue.js\"(exports, module) {\n \"use strict\";\n var Lib = require_lib();\n var dfltConfig = require_plot_config().dfltConfig;\n function copyArgArray(gd, args) {\n var copy = [];\n var arg;\n for (var i = 0; i < args.length; i++) {\n arg = args[i];\n if (arg === gd) copy[i] = arg;\n else if (typeof arg === \"object\") {\n copy[i] = Array.isArray(arg) ? Lib.extendDeep([], arg) : Lib.extendDeepAll({}, arg);\n } else copy[i] = arg;\n }\n return copy;\n }\n var queue = {};\n queue.add = function(gd, undoFunc, undoArgs, redoFunc, redoArgs) {\n var queueObj, queueIndex;\n gd.undoQueue = gd.undoQueue || { index: 0, queue: [], sequence: false };\n queueIndex = gd.undoQueue.index;\n if (gd.autoplay) {\n if (!gd.undoQueue.inSequence) gd.autoplay = false;\n return;\n }\n if (!gd.undoQueue.sequence || gd.undoQueue.beginSequence) {\n queueObj = { undo: { calls: [], args: [] }, redo: { calls: [], args: [] } };\n gd.undoQueue.queue.splice(queueIndex, gd.undoQueue.queue.length - queueIndex, queueObj);\n gd.undoQueue.index += 1;\n } else {\n queueObj = gd.undoQueue.queue[queueIndex - 1];\n }\n gd.undoQueue.beginSequence = false;\n if (queueObj) {\n queueObj.undo.calls.unshift(undoFunc);\n queueObj.undo.args.unshift(undoArgs);\n queueObj.redo.calls.push(redoFunc);\n queueObj.redo.args.push(redoArgs);\n }\n if (gd.undoQueue.queue.length > dfltConfig.queueLength) {\n gd.undoQueue.queue.shift();\n gd.undoQueue.index--;\n }\n };\n queue.startSequence = function(gd) {\n gd.undoQueue = gd.undoQueue || { index: 0, queue: [], sequence: false };\n gd.undoQueue.sequence = true;\n gd.undoQueue.beginSequence = true;\n };\n queue.stopSequence = function(gd) {\n gd.undoQueue = gd.undoQueue || { index: 0, queue: [], sequence: false };\n gd.undoQueue.sequence = false;\n gd.undoQueue.beginSequence = false;\n };\n queue.undo = function undo(gd) {\n var queueObj, i;\n if (gd.undoQueue === void 0 || isNaN(gd.undoQueue.index) || gd.undoQueue.index <= 0) {\n return;\n }\n gd.undoQueue.index--;\n queueObj = gd.undoQueue.queue[gd.undoQueue.index];\n gd.undoQueue.inSequence = true;\n for (i = 0; i < queueObj.undo.calls.length; i++) {\n queue.plotDo(gd, queueObj.undo.calls[i], queueObj.undo.args[i]);\n }\n gd.undoQueue.inSequence = false;\n gd.autoplay = false;\n };\n queue.redo = function redo(gd) {\n var queueObj, i;\n if (gd.undoQueue === void 0 || isNaN(gd.undoQueue.index) || gd.undoQueue.index >= gd.undoQueue.queue.length) {\n return;\n }\n queueObj = gd.undoQueue.queue[gd.undoQueue.index];\n gd.undoQueue.inSequence = true;\n for (i = 0; i < queueObj.redo.calls.length; i++) {\n queue.plotDo(gd, queueObj.redo.calls[i], queueObj.redo.args[i]);\n }\n gd.undoQueue.inSequence = false;\n gd.autoplay = false;\n gd.undoQueue.index++;\n };\n queue.plotDo = function(gd, func, args) {\n gd.autoplay = true;\n args = copyArgArray(gd, args);\n func.apply(null, args);\n };\n module.exports = queue;\n }\n });\n\n // src/plots/frame_attributes.js\n var require_frame_attributes = __commonJS({\n \"src/plots/frame_attributes.js\"(exports, module) {\n \"use strict\";\n module.exports = {\n _isLinkedToArray: \"frames_entry\",\n group: {\n valType: \"string\"\n },\n name: {\n valType: \"string\"\n },\n traces: {\n valType: \"any\"\n },\n baseframe: {\n valType: \"string\"\n },\n data: {\n valType: \"any\"\n },\n layout: {\n valType: \"any\"\n }\n };\n }\n });\n\n // src/plot_api/plot_schema.js\n var require_plot_schema = __commonJS({\n \"src/plot_api/plot_schema.js\"(exports) {\n \"use strict\";\n var Registry = require_registry();\n var Lib = require_lib();\n var baseAttributes = require_attributes2();\n var baseLayoutAttributes = require_layout_attributes2();\n var frameAttributes = require_frame_attributes();\n var animationAttributes = require_animation_attributes();\n var configAttributes = require_plot_config().configAttributes;\n var editTypes = require_edit_types();\n var extendDeepAll = Lib.extendDeepAll;\n var isPlainObject = Lib.isPlainObject;\n var isArrayOrTypedArray = Lib.isArrayOrTypedArray;\n var nestedProperty = Lib.nestedProperty;\n var valObjectMeta = Lib.valObjectMeta;\n var IS_SUBPLOT_OBJ = \"_isSubplotObj\";\n var IS_LINKED_TO_ARRAY = \"_isLinkedToArray\";\n var ARRAY_ATTR_REGEXPS = \"_arrayAttrRegexps\";\n var DEPRECATED = \"_deprecated\";\n var UNDERSCORE_ATTRS = [IS_SUBPLOT_OBJ, IS_LINKED_TO_ARRAY, ARRAY_ATTR_REGEXPS, DEPRECATED];\n exports.IS_SUBPLOT_OBJ = IS_SUBPLOT_OBJ;\n exports.IS_LINKED_TO_ARRAY = IS_LINKED_TO_ARRAY;\n exports.DEPRECATED = DEPRECATED;\n exports.UNDERSCORE_ATTRS = UNDERSCORE_ATTRS;\n exports.get = function() {\n var traces = {};\n Registry.allTypes.forEach(function(type) {\n traces[type] = getTraceAttributes(type);\n });\n return {\n defs: {\n valObjects: valObjectMeta,\n metaKeys: UNDERSCORE_ATTRS.concat([\"description\", \"role\", \"editType\", \"impliedEdits\"]),\n editType: {\n traces: editTypes.traces,\n layout: editTypes.layout\n },\n impliedEdits: {}\n },\n traces,\n layout: getLayoutAttributes(),\n frames: getFramesAttributes(),\n animation: formatAttributes(animationAttributes),\n config: formatAttributes(configAttributes)\n };\n };\n exports.crawl = function(attrs, callback, specifiedLevel, attrString) {\n var level = specifiedLevel || 0;\n attrString = attrString || \"\";\n Object.keys(attrs).forEach(function(attrName) {\n var attr = attrs[attrName];\n if (UNDERSCORE_ATTRS.indexOf(attrName) !== -1) return;\n var fullAttrString = (attrString ? attrString + \".\" : \"\") + attrName;\n callback(attr, attrName, attrs, level, fullAttrString);\n if (exports.isValObject(attr)) return;\n if (isPlainObject(attr) && attrName !== \"impliedEdits\") {\n exports.crawl(attr, callback, level + 1, fullAttrString);\n }\n });\n };\n exports.isValObject = function(obj) {\n return obj && obj.valType !== void 0;\n };\n exports.findArrayAttributes = function(trace) {\n var arrayAttributes = [];\n var stack = [];\n var isArrayStack = [];\n var baseContainer, baseAttrName;\n function callback(attr, attrName, attrs, level) {\n stack = stack.slice(0, level).concat([attrName]);\n isArrayStack = isArrayStack.slice(0, level).concat([attr && attr._isLinkedToArray]);\n var splittableAttr = attr && (attr.valType === \"data_array\" || attr.arrayOk === true) && !(stack[level - 1] === \"colorbar\" && (attrName === \"ticktext\" || attrName === \"tickvals\"));\n if (!splittableAttr) return;\n crawlIntoTrace(baseContainer, 0, \"\");\n }\n function crawlIntoTrace(container, i, astrPartial) {\n var item = container[stack[i]];\n var newAstrPartial = astrPartial + stack[i];\n if (i === stack.length - 1) {\n if (isArrayOrTypedArray(item)) {\n arrayAttributes.push(baseAttrName + newAstrPartial);\n }\n } else {\n if (isArrayStack[i]) {\n if (Array.isArray(item)) {\n for (var j = 0; j < item.length; j++) {\n if (isPlainObject(item[j])) {\n crawlIntoTrace(item[j], i + 1, newAstrPartial + \"[\" + j + \"].\");\n }\n }\n }\n } else if (isPlainObject(item)) {\n crawlIntoTrace(item, i + 1, newAstrPartial + \".\");\n }\n }\n }\n baseContainer = trace;\n baseAttrName = \"\";\n exports.crawl(baseAttributes, callback);\n if (trace._module && trace._module.attributes) {\n exports.crawl(trace._module.attributes, callback);\n }\n return arrayAttributes;\n };\n exports.getTraceValObject = function(trace, parts) {\n var head = parts[0];\n var i = 1;\n var moduleAttrs, valObject;\n var _module = trace._module;\n if (!_module) _module = (Registry.modules[trace.type || baseAttributes.type.dflt] || {})._module;\n if (!_module) return false;\n moduleAttrs = _module.attributes;\n valObject = moduleAttrs && moduleAttrs[head];\n if (!valObject) {\n var subplotModule = _module.basePlotModule;\n if (subplotModule && subplotModule.attributes) {\n valObject = subplotModule.attributes[head];\n }\n }\n if (!valObject) valObject = baseAttributes[head];\n return recurseIntoValObject(valObject, parts, i);\n };\n exports.getLayoutValObject = function(fullLayout, parts) {\n var valObject = layoutHeadAttr(fullLayout, parts[0]);\n return recurseIntoValObject(valObject, parts, 1);\n };\n function layoutHeadAttr(fullLayout, head) {\n var i, key, _module, attributes;\n var basePlotModules = fullLayout._basePlotModules;\n if (basePlotModules) {\n var out;\n for (i = 0; i < basePlotModules.length; i++) {\n _module = basePlotModules[i];\n if (_module.attrRegex && _module.attrRegex.test(head)) {\n if (_module.layoutAttrOverrides) return _module.layoutAttrOverrides;\n if (!out && _module.layoutAttributes) out = _module.layoutAttributes;\n }\n var baseOverrides = _module.baseLayoutAttrOverrides;\n if (baseOverrides && head in baseOverrides) return baseOverrides[head];\n }\n if (out) return out;\n }\n var modules = fullLayout._modules;\n if (modules) {\n for (i = 0; i < modules.length; i++) {\n attributes = modules[i].layoutAttributes;\n if (attributes && head in attributes) {\n return attributes[head];\n }\n }\n }\n for (key in Registry.componentsRegistry) {\n _module = Registry.componentsRegistry[key];\n if (_module.name === \"colorscale\" && head.indexOf(\"coloraxis\") === 0) {\n return _module.layoutAttributes[head];\n } else if (!_module.schema && head === _module.name) {\n return _module.layoutAttributes;\n }\n }\n if (head in baseLayoutAttributes) return baseLayoutAttributes[head];\n return false;\n }\n function recurseIntoValObject(valObject, parts, i) {\n if (!valObject) return false;\n if (valObject._isLinkedToArray) {\n if (isIndex(parts[i])) i++;\n else if (i < parts.length) return false;\n }\n for (; i < parts.length; i++) {\n var newValObject = valObject[parts[i]];\n if (isPlainObject(newValObject)) valObject = newValObject;\n else break;\n if (i === parts.length - 1) break;\n if (valObject._isLinkedToArray) {\n i++;\n if (!isIndex(parts[i])) return false;\n } else if (valObject.valType === \"info_array\") {\n i++;\n var index = parts[i];\n if (!isIndex(index)) return false;\n var items = valObject.items;\n if (Array.isArray(items)) {\n if (index >= items.length) return false;\n if (valObject.dimensions === 2) {\n i++;\n if (parts.length === i) return valObject;\n var index2 = parts[i];\n if (!isIndex(index2)) return false;\n valObject = items[index][index2];\n } else valObject = items[index];\n } else {\n valObject = items;\n }\n }\n }\n return valObject;\n }\n function isIndex(val) {\n return val === Math.round(val) && val >= 0;\n }\n function getTraceAttributes(type) {\n var _module, basePlotModule;\n _module = Registry.modules[type]._module, basePlotModule = _module.basePlotModule;\n var attributes = {};\n attributes.type = null;\n var copyBaseAttributes = extendDeepAll({}, baseAttributes);\n var copyModuleAttributes = extendDeepAll({}, _module.attributes);\n exports.crawl(copyModuleAttributes, function(attr, attrName, attrs, level, fullAttrString) {\n nestedProperty(copyBaseAttributes, fullAttrString).set(void 0);\n if (attr === void 0) nestedProperty(copyModuleAttributes, fullAttrString).set(void 0);\n });\n extendDeepAll(attributes, copyBaseAttributes);\n if (Registry.traceIs(type, \"noOpacity\")) {\n delete attributes.opacity;\n }\n if (!Registry.traceIs(type, \"showLegend\")) {\n delete attributes.showlegend;\n delete attributes.legendgroup;\n }\n if (Registry.traceIs(type, \"noHover\")) {\n delete attributes.hoverinfo;\n delete attributes.hoverlabel;\n }\n if (!_module.selectPoints) {\n delete attributes.selectedpoints;\n }\n extendDeepAll(attributes, copyModuleAttributes);\n if (basePlotModule.attributes) {\n extendDeepAll(attributes, basePlotModule.attributes);\n }\n attributes.type = type;\n var out = {\n meta: _module.meta || {},\n categories: _module.categories || {},\n animatable: Boolean(_module.animatable),\n type,\n attributes: formatAttributes(attributes)\n };\n if (_module.layoutAttributes) {\n var layoutAttributes = {};\n extendDeepAll(layoutAttributes, _module.layoutAttributes);\n out.layoutAttributes = formatAttributes(layoutAttributes);\n }\n if (!_module.animatable) {\n exports.crawl(out, function(attr) {\n if (exports.isValObject(attr) && \"anim\" in attr) {\n delete attr.anim;\n }\n });\n }\n return out;\n }\n function getLayoutAttributes() {\n var layoutAttributes = {};\n var key, _module;\n extendDeepAll(layoutAttributes, baseLayoutAttributes);\n for (key in Registry.subplotsRegistry) {\n _module = Registry.subplotsRegistry[key];\n if (!_module.layoutAttributes) continue;\n if (Array.isArray(_module.attr)) {\n for (var i = 0; i < _module.attr.length; i++) {\n handleBasePlotModule(layoutAttributes, _module, _module.attr[i]);\n }\n } else {\n var astr = _module.attr === \"subplot\" ? _module.name : _module.attr;\n handleBasePlotModule(layoutAttributes, _module, astr);\n }\n }\n for (key in Registry.componentsRegistry) {\n _module = Registry.componentsRegistry[key];\n var schema = _module.schema;\n if (schema && (schema.subplots || schema.layout)) {\n var subplots = schema.subplots;\n if (subplots && subplots.xaxis && !subplots.yaxis) {\n for (var xkey in subplots.xaxis) {\n delete layoutAttributes.yaxis[xkey];\n }\n }\n delete layoutAttributes.xaxis.shift;\n delete layoutAttributes.xaxis.autoshift;\n } else if (_module.name === \"colorscale\") {\n extendDeepAll(layoutAttributes, _module.layoutAttributes);\n } else if (_module.layoutAttributes) {\n insertAttrs(layoutAttributes, _module.layoutAttributes, _module.name);\n }\n }\n return {\n layoutAttributes: formatAttributes(layoutAttributes)\n };\n }\n function getFramesAttributes() {\n var attrs = {\n frames: extendDeepAll({}, frameAttributes)\n };\n formatAttributes(attrs);\n return attrs.frames;\n }\n function formatAttributes(attrs) {\n mergeValTypeAndRole(attrs);\n formatArrayContainers(attrs);\n stringify(attrs);\n return attrs;\n }\n function mergeValTypeAndRole(attrs) {\n function makeSrcAttr(attrName) {\n return {\n valType: \"string\",\n editType: \"none\"\n };\n }\n function callback(attr, attrName, attrs2) {\n if (exports.isValObject(attr)) {\n if (attr.arrayOk === true || attr.valType === \"data_array\") {\n attrs2[attrName + \"src\"] = makeSrcAttr(attrName);\n }\n } else if (isPlainObject(attr)) {\n attr.role = \"object\";\n }\n }\n exports.crawl(attrs, callback);\n }\n function formatArrayContainers(attrs) {\n function callback(attr, attrName, attrs2) {\n if (!attr) return;\n var itemName = attr[IS_LINKED_TO_ARRAY];\n if (!itemName) return;\n delete attr[IS_LINKED_TO_ARRAY];\n attrs2[attrName] = { items: {} };\n attrs2[attrName].items[itemName] = attr;\n attrs2[attrName].role = \"object\";\n }\n exports.crawl(attrs, callback);\n }\n function stringify(attrs) {\n function walk(attr) {\n for (var k in attr) {\n if (isPlainObject(attr[k])) {\n walk(attr[k]);\n } else if (Array.isArray(attr[k])) {\n for (var i = 0; i < attr[k].length; i++) {\n walk(attr[k][i]);\n }\n } else {\n if (attr[k] instanceof RegExp) {\n attr[k] = attr[k].toString();\n }\n }\n }\n }\n walk(attrs);\n }\n function handleBasePlotModule(layoutAttributes, _module, astr) {\n var np = nestedProperty(layoutAttributes, astr);\n var attrs = extendDeepAll({}, _module.layoutAttributes);\n attrs[IS_SUBPLOT_OBJ] = true;\n np.set(attrs);\n }\n function insertAttrs(baseAttrs, newAttrs, astr) {\n var np = nestedProperty(baseAttrs, astr);\n np.set(extendDeepAll(np.get() || {}, newAttrs));\n }\n }\n });\n\n // src/plot_api/plot_template.js\n var require_plot_template = __commonJS({\n \"src/plot_api/plot_template.js\"(exports) {\n \"use strict\";\n var Lib = require_lib();\n var plotAttributes = require_attributes2();\n var TEMPLATEITEMNAME = \"templateitemname\";\n var templateAttrs = {\n name: {\n valType: \"string\",\n editType: \"none\"\n }\n };\n templateAttrs[TEMPLATEITEMNAME] = {\n valType: \"string\",\n editType: \"calc\"\n };\n exports.templatedArray = function(name, attrs) {\n attrs._isLinkedToArray = name;\n attrs.name = templateAttrs.name;\n attrs[TEMPLATEITEMNAME] = templateAttrs[TEMPLATEITEMNAME];\n return attrs;\n };\n exports.traceTemplater = function(dataTemplate) {\n var traceCounts = {};\n var traceType, typeTemplates;\n for (traceType in dataTemplate) {\n typeTemplates = dataTemplate[traceType];\n if (Array.isArray(typeTemplates) && typeTemplates.length) {\n traceCounts[traceType] = 0;\n }\n }\n function newTrace(traceIn) {\n traceType = Lib.coerce(traceIn, {}, plotAttributes, \"type\");\n var traceOut = { type: traceType, _template: null };\n if (traceType in traceCounts) {\n typeTemplates = dataTemplate[traceType];\n var typei = traceCounts[traceType] % typeTemplates.length;\n traceCounts[traceType]++;\n traceOut._template = typeTemplates[typei];\n } else {\n }\n return traceOut;\n }\n return {\n newTrace\n // TODO: function to figure out what's left & what didn't work\n };\n };\n exports.newContainer = function(container, name, baseName) {\n var template = container._template;\n var part = template && (template[name] || baseName && template[baseName]);\n if (!Lib.isPlainObject(part)) part = null;\n var out = container[name] = { _template: part };\n return out;\n };\n exports.arrayTemplater = function(container, name, inclusionAttr) {\n var template = container._template;\n var defaultsTemplate = template && template[arrayDefaultKey(name)];\n var templateItems = template && template[name];\n if (!Array.isArray(templateItems) || !templateItems.length) {\n templateItems = [];\n }\n var usedNames = {};\n function newItem(itemIn) {\n var out = { name: itemIn.name, _input: itemIn };\n var templateItemName = out[TEMPLATEITEMNAME] = itemIn[TEMPLATEITEMNAME];\n if (!validItemName(templateItemName)) {\n out._template = defaultsTemplate;\n return out;\n }\n for (var i = 0; i < templateItems.length; i++) {\n var templateItem = templateItems[i];\n if (templateItem.name === templateItemName) {\n usedNames[templateItemName] = 1;\n out._template = templateItem;\n return out;\n }\n }\n out[inclusionAttr] = itemIn[inclusionAttr] || false;\n out._template = false;\n return out;\n }\n function defaultItems() {\n var out = [];\n for (var i = 0; i < templateItems.length; i++) {\n var templateItem = templateItems[i];\n var name2 = templateItem.name;\n if (validItemName(name2) && !usedNames[name2]) {\n var outi = {\n _template: templateItem,\n name: name2,\n _input: { _templateitemname: name2 }\n };\n outi[TEMPLATEITEMNAME] = templateItem[TEMPLATEITEMNAME];\n out.push(outi);\n usedNames[name2] = 1;\n }\n }\n return out;\n }\n return {\n newItem,\n defaultItems\n };\n };\n function validItemName(name) {\n return name && typeof name === \"string\";\n }\n function arrayDefaultKey(name) {\n var lastChar = name.length - 1;\n if (name.charAt(lastChar) !== \"s\") {\n Lib.warn(\"bad argument to arrayDefaultKey: \" + name);\n }\n return name.substr(0, name.length - 1) + \"defaults\";\n }\n exports.arrayDefaultKey = arrayDefaultKey;\n exports.arrayEditor = function(parentIn, containerStr, itemOut) {\n var lengthIn = (Lib.nestedProperty(parentIn, containerStr).get() || []).length;\n var index = itemOut._index;\n var templateItemName = index >= lengthIn && (itemOut._input || {})._templateitemname;\n if (templateItemName) index = lengthIn;\n var itemStr = containerStr + \"[\" + index + \"]\";\n var update;\n function resetUpdate() {\n update = {};\n if (templateItemName) {\n update[itemStr] = {};\n update[itemStr][TEMPLATEITEMNAME] = templateItemName;\n }\n }\n resetUpdate();\n function modifyBase(attr, value) {\n update[attr] = value;\n }\n function modifyItem(attr, value) {\n if (templateItemName) {\n Lib.nestedProperty(update[itemStr], attr).set(value);\n } else {\n update[itemStr + \".\" + attr] = value;\n }\n }\n function getUpdateObj() {\n var updateOut = update;\n resetUpdate();\n return updateOut;\n }\n function applyUpdate(attr, value) {\n if (attr) modifyItem(attr, value);\n var updateToApply = getUpdateObj();\n for (var key in updateToApply) {\n Lib.nestedProperty(parentIn, key).set(updateToApply[key]);\n }\n }\n return {\n modifyBase,\n modifyItem,\n getUpdateObj,\n applyUpdate\n };\n };\n }\n });\n\n // src/plots/cartesian/constants.js\n var require_constants2 = __commonJS({\n \"src/plots/cartesian/constants.js\"(exports, module) {\n \"use strict\";\n var counterRegex = require_regex().counter;\n module.exports = {\n idRegex: {\n x: counterRegex(\"x\", \"( domain)?\"),\n y: counterRegex(\"y\", \"( domain)?\")\n },\n attrRegex: counterRegex(\"[xy]axis\"),\n // axis match regular expression\n xAxisMatch: counterRegex(\"xaxis\"),\n yAxisMatch: counterRegex(\"yaxis\"),\n // pattern matching axis ids and names\n // note that this is more permissive than counterRegex, as\n // id2name, name2id, and cleanId accept \"x1\" etc\n AX_ID_PATTERN: /^[xyz][0-9]*( domain)?$/,\n AX_NAME_PATTERN: /^[xyz]axis[0-9]*$/,\n // and for 2D subplots\n SUBPLOT_PATTERN: /^x([0-9]*)y([0-9]*)$/,\n HOUR_PATTERN: \"hour\",\n WEEKDAY_PATTERN: \"day of week\",\n // pixels to move mouse before you stop clamping to starting point\n MINDRAG: 8,\n // smallest dimension allowed for a zoombox\n MINZOOM: 20,\n // width of axis drag regions\n DRAGGERSIZE: 20,\n // delay before a redraw (relayout) after smooth panning and zooming\n REDRAWDELAY: 50,\n // last resort axis ranges for x and y axes if we have no data\n DFLTRANGEX: [-1, 6],\n DFLTRANGEY: [-1, 4],\n // Layers to keep trace types in the right order\n // N.B. each 'unique' plot method must have its own layer\n traceLayerClasses: [\n \"imagelayer\",\n \"heatmaplayer\",\n \"contourcarpetlayer\",\n \"contourlayer\",\n \"funnellayer\",\n \"waterfalllayer\",\n \"barlayer\",\n \"carpetlayer\",\n \"violinlayer\",\n \"boxlayer\",\n \"ohlclayer\",\n \"scattercarpetlayer\",\n \"scatterlayer\"\n ],\n clipOnAxisFalseQuery: [\n \".scatterlayer\",\n \".barlayer\",\n \".funnellayer\",\n \".waterfalllayer\"\n ],\n layerValue2layerClass: {\n \"above traces\": \"above\",\n \"below traces\": \"below\"\n },\n zindexSeparator: \"z\"\n // used for zindex of cartesian subplots e.g. xy, xyz2, xyz3, etc.\n };\n }\n });\n\n // src/plots/cartesian/axis_ids.js\n var require_axis_ids = __commonJS({\n \"src/plots/cartesian/axis_ids.js\"(exports) {\n \"use strict\";\n var Registry = require_registry();\n var constants = require_constants2();\n exports.id2name = function id2name(id) {\n if (typeof id !== \"string\" || !id.match(constants.AX_ID_PATTERN)) return;\n var axNum = id.split(\" \")[0].substr(1);\n if (axNum === \"1\") axNum = \"\";\n return id.charAt(0) + \"axis\" + axNum;\n };\n exports.name2id = function name2id(name) {\n if (!name.match(constants.AX_NAME_PATTERN)) return;\n var axNum = name.substr(5);\n if (axNum === \"1\") axNum = \"\";\n return name.charAt(0) + axNum;\n };\n exports.cleanId = function cleanId(id, axLetter, domainId) {\n var domainTest = /( domain)$/.test(id);\n if (typeof id !== \"string\" || !id.match(constants.AX_ID_PATTERN)) return;\n if (axLetter && id.charAt(0) !== axLetter) return;\n if (domainTest && !domainId) return;\n var axNum = id.split(\" \")[0].substr(1).replace(/^0+/, \"\");\n if (axNum === \"1\") axNum = \"\";\n return id.charAt(0) + axNum + (domainTest && domainId ? \" domain\" : \"\");\n };\n exports.list = function(gd, axLetter, only2d) {\n var fullLayout = gd._fullLayout;\n if (!fullLayout) return [];\n var idList = exports.listIds(gd, axLetter);\n var out = new Array(idList.length);\n var i;\n for (i = 0; i < idList.length; i++) {\n var idi = idList[i];\n out[i] = fullLayout[idi.charAt(0) + \"axis\" + idi.substr(1)];\n }\n if (!only2d) {\n var sceneIds3D = fullLayout._subplots.gl3d || [];\n for (i = 0; i < sceneIds3D.length; i++) {\n var scene = fullLayout[sceneIds3D[i]];\n if (axLetter) out.push(scene[axLetter + \"axis\"]);\n else out.push(scene.xaxis, scene.yaxis, scene.zaxis);\n }\n }\n return out;\n };\n exports.listIds = function(gd, axLetter) {\n var fullLayout = gd._fullLayout;\n if (!fullLayout) return [];\n var subplotLists = fullLayout._subplots;\n if (axLetter) return subplotLists[axLetter + \"axis\"];\n return subplotLists.xaxis.concat(subplotLists.yaxis);\n };\n exports.getFromId = function(gd, id, type) {\n var fullLayout = gd._fullLayout;\n id = id === void 0 || typeof id !== \"string\" ? id : id.replace(\" domain\", \"\");\n if (type === \"x\") id = id.replace(/y[0-9]*/, \"\");\n else if (type === \"y\") id = id.replace(/x[0-9]*/, \"\");\n return fullLayout[exports.id2name(id)];\n };\n exports.getFromTrace = function(gd, fullTrace, type) {\n var fullLayout = gd._fullLayout;\n var ax = null;\n if (Registry.traceIs(fullTrace, \"gl3d\")) {\n var scene = fullTrace.scene;\n if (scene.substr(0, 5) === \"scene\") {\n ax = fullLayout[scene][type + \"axis\"];\n }\n } else {\n ax = exports.getFromId(gd, fullTrace[type + \"axis\"] || type);\n }\n return ax;\n };\n exports.idSort = function(id1, id2) {\n var letter1 = id1.charAt(0);\n var letter2 = id2.charAt(0);\n if (letter1 !== letter2) return letter1 > letter2 ? 1 : -1;\n return +(id1.substr(1) || 1) - +(id2.substr(1) || 1);\n };\n exports.ref2id = function(ar) {\n return /^[xyz]/.test(ar) ? ar.split(\" \")[0] : false;\n };\n function isFound(axId, list) {\n if (list && list.length) {\n for (var i = 0; i < list.length; i++) {\n if (list[i][axId]) return true;\n }\n }\n return false;\n }\n exports.isLinked = function(fullLayout, axId) {\n return isFound(axId, fullLayout._axisMatchGroups) || isFound(axId, fullLayout._axisConstraintGroups);\n };\n }\n });\n\n // src/components/shapes/handle_outline.js\n var require_handle_outline = __commonJS({\n \"src/components/shapes/handle_outline.js\"(exports, module) {\n \"use strict\";\n function clearOutlineControllers(gd) {\n var zoomLayer = gd._fullLayout._zoomlayer;\n if (zoomLayer) {\n zoomLayer.selectAll(\".outline-controllers\").remove();\n }\n }\n function clearOutline(gd) {\n var zoomLayer = gd._fullLayout._zoomlayer;\n if (zoomLayer) {\n zoomLayer.selectAll(\".select-outline\").remove();\n }\n gd._fullLayout._outlining = false;\n }\n module.exports = {\n clearOutlineControllers,\n clearOutline\n };\n }\n });\n\n // src/traces/scatter/layout_attributes.js\n var require_layout_attributes3 = __commonJS({\n \"src/traces/scatter/layout_attributes.js\"(exports, module) {\n \"use strict\";\n module.exports = {\n scattermode: {\n valType: \"enumerated\",\n values: [\"group\", \"overlay\"],\n dflt: \"overlay\",\n editType: \"calc\"\n },\n scattergap: {\n valType: \"number\",\n min: 0,\n max: 1,\n editType: \"calc\"\n }\n };\n }\n });\n\n // src/plots/get_data.js\n var require_get_data = __commonJS({\n \"src/plots/get_data.js\"(exports) {\n \"use strict\";\n var Registry = require_registry();\n var SUBPLOT_PATTERN = require_constants2().SUBPLOT_PATTERN;\n exports.getSubplotCalcData = function(calcData, type, subplotId) {\n var basePlotModule = Registry.subplotsRegistry[type];\n if (!basePlotModule) return [];\n var attr = basePlotModule.attr;\n var subplotCalcData = [];\n for (var i = 0; i < calcData.length; i++) {\n var calcTrace = calcData[i];\n var trace = calcTrace[0].trace;\n if (trace[attr] === subplotId) subplotCalcData.push(calcTrace);\n }\n return subplotCalcData;\n };\n exports.getModuleCalcData = function(calcdata, arg1, arg2) {\n var moduleCalcData = [];\n var remainingCalcData = [];\n var plotMethod;\n if (typeof arg1 === \"string\") {\n plotMethod = Registry.getModule(arg1).plot;\n } else if (typeof arg1 === \"function\") {\n plotMethod = arg1;\n } else {\n plotMethod = arg1.plot;\n }\n if (!plotMethod) {\n return [moduleCalcData, calcdata];\n }\n var zorder = arg2;\n for (var i = 0; i < calcdata.length; i++) {\n var cd = calcdata[i];\n var trace = cd[0].trace;\n var filterByZ = trace.zorder !== void 0;\n if (trace.visible !== true || trace._length === 0) continue;\n if (trace._module && trace._module.plot === plotMethod && (!filterByZ || trace.zorder === zorder)) {\n moduleCalcData.push(cd);\n } else {\n remainingCalcData.push(cd);\n }\n }\n return [moduleCalcData, remainingCalcData];\n };\n exports.getSubplotData = function getSubplotData(data, type, subplotId) {\n if (!Registry.subplotsRegistry[type]) return [];\n var attr = Registry.subplotsRegistry[type].attr;\n var subplotData = [];\n var trace, subplotX, subplotY;\n for (var i = 0; i < data.length; i++) {\n trace = data[i];\n if (trace[attr] === subplotId) subplotData.push(trace);\n }\n return subplotData;\n };\n }\n });\n\n // src/plots/command.js\n var require_command = __commonJS({\n \"src/plots/command.js\"(exports) {\n \"use strict\";\n var Registry = require_registry();\n var Lib = require_lib();\n exports.manageCommandObserver = function(gd, container, commandList, onchange) {\n var ret = {};\n var enabled = true;\n if (container && container._commandObserver) {\n ret = container._commandObserver;\n }\n if (!ret.cache) {\n ret.cache = {};\n }\n ret.lookupTable = {};\n var binding = exports.hasSimpleAPICommandBindings(gd, commandList, ret.lookupTable);\n if (container && container._commandObserver) {\n if (!binding) {\n if (container._commandObserver.remove) {\n container._commandObserver.remove();\n container._commandObserver = null;\n return ret;\n }\n } else {\n return ret;\n }\n }\n if (binding) {\n bindingValueHasChanged(gd, binding, ret.cache);\n ret.check = function check() {\n if (!enabled) return;\n var update = bindingValueHasChanged(gd, binding, ret.cache);\n if (update.changed && onchange) {\n if (ret.lookupTable[update.value] !== void 0) {\n ret.disable();\n Promise.resolve(onchange({\n value: update.value,\n type: binding.type,\n prop: binding.prop,\n traces: binding.traces,\n index: ret.lookupTable[update.value]\n })).then(ret.enable, ret.enable);\n }\n }\n return update.changed;\n };\n var checkEvents = [\n \"plotly_relayout\",\n \"plotly_redraw\",\n \"plotly_restyle\",\n \"plotly_update\",\n \"plotly_animatingframe\",\n \"plotly_afterplot\"\n ];\n for (var i = 0; i < checkEvents.length; i++) {\n gd._internalOn(checkEvents[i], ret.check);\n }\n ret.remove = function() {\n for (var i2 = 0; i2 < checkEvents.length; i2++) {\n gd._removeInternalListener(checkEvents[i2], ret.check);\n }\n };\n } else {\n Lib.log(\"Unable to automatically bind plot updates to API command\");\n ret.lookupTable = {};\n ret.remove = function() {\n };\n }\n ret.disable = function disable() {\n enabled = false;\n };\n ret.enable = function enable() {\n enabled = true;\n };\n if (container) {\n container._commandObserver = ret;\n }\n return ret;\n };\n exports.hasSimpleAPICommandBindings = function(gd, commandList, bindingsByValue) {\n var i;\n var n = commandList.length;\n var refBinding;\n for (i = 0; i < n; i++) {\n var binding;\n var command = commandList[i];\n var method = command.method;\n var args = command.args;\n if (!Array.isArray(args)) args = [];\n if (!method) {\n return false;\n }\n var bindings = exports.computeAPICommandBindings(gd, method, args);\n if (bindings.length !== 1) {\n return false;\n }\n if (!refBinding) {\n refBinding = bindings[0];\n if (Array.isArray(refBinding.traces)) {\n refBinding.traces.sort();\n }\n } else {\n binding = bindings[0];\n if (binding.type !== refBinding.type) {\n return false;\n }\n if (binding.prop !== refBinding.prop) {\n return false;\n }\n if (Array.isArray(refBinding.traces)) {\n if (Array.isArray(binding.traces)) {\n binding.traces.sort();\n for (var j = 0; j < refBinding.traces.length; j++) {\n if (refBinding.traces[j] !== binding.traces[j]) {\n return false;\n }\n }\n } else {\n return false;\n }\n } else {\n if (binding.prop !== refBinding.prop) {\n return false;\n }\n }\n }\n binding = bindings[0];\n var value = binding.value;\n if (Array.isArray(value)) {\n if (value.length === 1) {\n value = value[0];\n } else {\n return false;\n }\n }\n if (bindingsByValue) {\n bindingsByValue[value] = i;\n }\n }\n return refBinding;\n };\n function bindingValueHasChanged(gd, binding, cache) {\n var container, value, obj;\n var changed = false;\n if (binding.type === \"data\") {\n container = gd._fullData[binding.traces !== null ? binding.traces[0] : 0];\n } else if (binding.type === \"layout\") {\n container = gd._fullLayout;\n } else {\n return false;\n }\n value = Lib.nestedProperty(container, binding.prop).get();\n obj = cache[binding.type] = cache[binding.type] || {};\n if (obj.hasOwnProperty(binding.prop)) {\n if (obj[binding.prop] !== value) {\n changed = true;\n }\n }\n obj[binding.prop] = value;\n return {\n changed,\n value\n };\n }\n exports.executeAPICommand = function(gd, method, args) {\n if (method === \"skip\") return Promise.resolve();\n var _method = Registry.apiMethodRegistry[method];\n var allArgs = [gd];\n if (!Array.isArray(args)) args = [];\n for (var i = 0; i < args.length; i++) {\n allArgs.push(args[i]);\n }\n return _method.apply(null, allArgs).catch(function(err) {\n Lib.warn(\"API call to Plotly.\" + method + \" rejected.\", err);\n return Promise.reject(err);\n });\n };\n exports.computeAPICommandBindings = function(gd, method, args) {\n var bindings;\n if (!Array.isArray(args)) args = [];\n switch (method) {\n case \"restyle\":\n bindings = computeDataBindings(gd, args);\n break;\n case \"relayout\":\n bindings = computeLayoutBindings(gd, args);\n break;\n case \"update\":\n bindings = computeDataBindings(gd, [args[0], args[2]]).concat(computeLayoutBindings(gd, [args[1]]));\n break;\n case \"animate\":\n bindings = computeAnimateBindings(gd, args);\n break;\n default:\n bindings = [];\n }\n return bindings;\n };\n function computeAnimateBindings(gd, args) {\n if (Array.isArray(args[0]) && args[0].length === 1 && [\"string\", \"number\"].indexOf(typeof args[0][0]) !== -1) {\n return [{ type: \"layout\", prop: \"_currentFrame\", value: args[0][0].toString() }];\n } else {\n return [];\n }\n }\n function computeLayoutBindings(gd, args) {\n var bindings = [];\n var astr = args[0];\n var aobj = {};\n if (typeof astr === \"string\") {\n aobj[astr] = args[1];\n } else if (Lib.isPlainObject(astr)) {\n aobj = astr;\n } else {\n return bindings;\n }\n crawl(aobj, function(path, attrName, attr) {\n bindings.push({ type: \"layout\", prop: path, value: attr });\n }, \"\", 0);\n return bindings;\n }\n function computeDataBindings(gd, args) {\n var traces, astr, val, aobj;\n var bindings = [];\n astr = args[0];\n val = args[1];\n traces = args[2];\n aobj = {};\n if (typeof astr === \"string\") {\n aobj[astr] = val;\n } else if (Lib.isPlainObject(astr)) {\n aobj = astr;\n if (traces === void 0) {\n traces = val;\n }\n } else {\n return bindings;\n }\n if (traces === void 0) {\n traces = null;\n }\n crawl(aobj, function(path, attrName, _attr) {\n var thisTraces;\n var attr;\n if (Array.isArray(_attr)) {\n attr = _attr.slice();\n var nAttr = Math.min(attr.length, gd.data.length);\n if (traces) {\n nAttr = Math.min(nAttr, traces.length);\n }\n thisTraces = [];\n for (var j = 0; j < nAttr; j++) {\n thisTraces[j] = traces ? traces[j] : j;\n }\n } else {\n attr = _attr;\n thisTraces = traces ? traces.slice() : null;\n }\n if (thisTraces === null) {\n if (Array.isArray(attr)) {\n attr = attr[0];\n }\n } else if (Array.isArray(thisTraces)) {\n if (!Array.isArray(attr)) {\n var tmp = attr;\n attr = [];\n for (var i = 0; i < thisTraces.length; i++) {\n attr[i] = tmp;\n }\n }\n attr.length = Math.min(thisTraces.length, attr.length);\n }\n bindings.push({\n type: \"data\",\n prop: path,\n traces: thisTraces,\n value: attr\n });\n }, \"\", 0);\n return bindings;\n }\n function crawl(attrs, callback, path, depth) {\n Object.keys(attrs).forEach(function(attrName) {\n var attr = attrs[attrName];\n if (attrName[0] === \"_\") return;\n var thisPath = path + (depth > 0 ? \".\" : \"\") + attrName;\n if (Lib.isPlainObject(attr)) {\n crawl(attr, callback, thisPath, depth + 1);\n } else {\n callback(thisPath, attrName, attr);\n }\n });\n }\n }\n });\n\n // src/plots/plots.js\n var require_plots = __commonJS({\n \"src/plots/plots.js\"(exports, module) {\n \"use strict\";\n var d3 = require_d3();\n var timeFormatLocale = require_d3_time_format().timeFormatLocale;\n var formatLocale = require_d3_format().formatLocale;\n var isNumeric = require_fast_isnumeric();\n var b64encode = require_base64_arraybuffer_umd();\n var Registry = require_registry();\n var PlotSchema = require_plot_schema();\n var Template = require_plot_template();\n var Lib = require_lib();\n var Color = require_color();\n var BADNUM = require_numerical().BADNUM;\n var axisIDs = require_axis_ids();\n var clearOutline = require_handle_outline().clearOutline;\n var scatterAttrs = require_layout_attributes3();\n var animationAttrs = require_animation_attributes();\n var frameAttrs = require_frame_attributes();\n var getModuleCalcData = require_get_data().getModuleCalcData;\n var relinkPrivateKeys = Lib.relinkPrivateKeys;\n var _ = Lib._;\n var plots = module.exports = {};\n Lib.extendFlat(plots, Registry);\n plots.attributes = require_attributes2();\n plots.attributes.type.values = plots.allTypes;\n plots.fontAttrs = require_font_attributes();\n plots.layoutAttributes = require_layout_attributes2();\n var commandModule = require_command();\n plots.executeAPICommand = commandModule.executeAPICommand;\n plots.computeAPICommandBindings = commandModule.computeAPICommandBindings;\n plots.manageCommandObserver = commandModule.manageCommandObserver;\n plots.hasSimpleAPICommandBindings = commandModule.hasSimpleAPICommandBindings;\n plots.redrawText = function(gd) {\n gd = Lib.getGraphDiv(gd);\n return new Promise(function(resolve) {\n setTimeout(function() {\n if (!gd._fullLayout) return;\n Registry.getComponentMethod(\"annotations\", \"draw\")(gd);\n Registry.getComponentMethod(\"legend\", \"draw\")(gd);\n Registry.getComponentMethod(\"colorbar\", \"draw\")(gd);\n resolve(plots.previousPromises(gd));\n }, 300);\n });\n };\n plots.resize = function(gd) {\n gd = Lib.getGraphDiv(gd);\n var resolveLastResize;\n var p = new Promise(function(resolve, reject) {\n if (!gd || Lib.isHidden(gd)) {\n reject(new Error(\"Resize must be passed a displayed plot div element.\"));\n }\n if (gd._redrawTimer) clearTimeout(gd._redrawTimer);\n if (gd._resolveResize) resolveLastResize = gd._resolveResize;\n gd._resolveResize = resolve;\n gd._redrawTimer = setTimeout(function() {\n if (!gd.layout || gd.layout.width && gd.layout.height || Lib.isHidden(gd)) {\n resolve(gd);\n return;\n }\n delete gd.layout.width;\n delete gd.layout.height;\n var oldchanged = gd.changed;\n gd.autoplay = true;\n Registry.call(\"relayout\", gd, { autosize: true }).then(function() {\n gd.changed = oldchanged;\n if (gd._resolveResize === resolve) {\n delete gd._resolveResize;\n resolve(gd);\n }\n });\n }, 100);\n });\n if (resolveLastResize) resolveLastResize(p);\n return p;\n };\n plots.previousPromises = function(gd) {\n if ((gd._promises || []).length) {\n return Promise.all(gd._promises).then(function() {\n gd._promises = [];\n });\n }\n };\n plots.addLinks = function(gd) {\n if (!gd._context.showLink && !gd._context.showSources) return;\n var fullLayout = gd._fullLayout;\n var linkContainer = Lib.ensureSingle(fullLayout._paper, \"text\", \"js-plot-link-container\", function(s) {\n s.style({\n \"font-family\": '\"Open Sans\", Arial, sans-serif',\n \"font-size\": \"12px\",\n fill: Color.defaultLine,\n \"pointer-events\": \"all\"\n }).each(function() {\n var links = d3.select(this);\n links.append(\"tspan\").classed(\"js-link-to-tool\", true);\n links.append(\"tspan\").classed(\"js-link-spacer\", true);\n links.append(\"tspan\").classed(\"js-sourcelinks\", true);\n });\n });\n var text = linkContainer.node();\n var attrs = { y: fullLayout._paper.attr(\"height\") - 9 };\n if (document.body.contains(text) && text.getComputedTextLength() >= fullLayout.width - 20) {\n attrs[\"text-anchor\"] = \"start\";\n attrs.x = 5;\n } else {\n attrs[\"text-anchor\"] = \"end\";\n attrs.x = fullLayout._paper.attr(\"width\") - 7;\n }\n linkContainer.attr(attrs);\n var toolspan = linkContainer.select(\".js-link-to-tool\");\n var spacespan = linkContainer.select(\".js-link-spacer\");\n var sourcespan = linkContainer.select(\".js-sourcelinks\");\n if (gd._context.showSources) gd._context.showSources(gd);\n if (gd._context.showLink) positionPlayWithData(gd, toolspan);\n spacespan.text(toolspan.text() && sourcespan.text() ? \" - \" : \"\");\n };\n function positionPlayWithData(gd, container) {\n container.text(\"\");\n var link = container.append(\"a\").attr({\n \"xlink:xlink:href\": \"#\",\n class: \"link--impt link--embedview\",\n \"font-weight\": \"bold\"\n }).text(gd._context.linkText + \" \" + String.fromCharCode(187));\n if (gd._context.sendData) {\n link.on(\"click\", function() {\n plots.sendDataToCloud(gd);\n });\n } else {\n var path = window.location.pathname.split(\"/\");\n var query = window.location.search;\n link.attr({\n \"xlink:xlink:show\": \"new\",\n \"xlink:xlink:href\": \"/\" + path[2].split(\".\")[0] + \"/\" + path[1] + query\n });\n }\n }\n plots.sendDataToCloud = function(gd) {\n var baseUrl = (window.PLOTLYENV || {}).BASE_URL || gd._context.plotlyServerURL;\n if (!baseUrl) return;\n gd.emit(\"plotly_beforeexport\");\n var hiddenformDiv = d3.select(gd).append(\"div\").attr(\"id\", \"hiddenform\").style(\"display\", \"none\");\n var hiddenform = hiddenformDiv.append(\"form\").attr({\n action: baseUrl + \"/external\",\n method: \"post\",\n target: \"_blank\"\n });\n var hiddenformInput = hiddenform.append(\"input\").attr({\n type: \"text\",\n name: \"data\"\n });\n hiddenformInput.node().value = plots.graphJson(gd, false, \"keepdata\");\n hiddenform.node().submit();\n hiddenformDiv.remove();\n gd.emit(\"plotly_afterexport\");\n return false;\n };\n var d3FormatKeys = [\n \"days\",\n \"shortDays\",\n \"months\",\n \"shortMonths\",\n \"periods\",\n \"dateTime\",\n \"date\",\n \"time\",\n \"decimal\",\n \"thousands\",\n \"grouping\",\n \"currency\"\n ];\n var extraFormatKeys = [\n \"year\",\n \"month\",\n \"dayMonth\",\n \"dayMonthYear\"\n ];\n plots.supplyDefaults = function(gd, opts) {\n var skipUpdateCalc = opts && opts.skipUpdateCalc;\n var oldFullLayout = gd._fullLayout || {};\n if (oldFullLayout._skipDefaults) {\n delete oldFullLayout._skipDefaults;\n return;\n }\n var newFullLayout = gd._fullLayout = {};\n var newLayout = gd.layout || {};\n var oldFullData = gd._fullData || [];\n var newFullData = gd._fullData = [];\n var newData = gd.data || [];\n var oldCalcdata = gd.calcdata || [];\n var context = gd._context || {};\n var i;\n if (!gd._transitionData) plots.createTransitionData(gd);\n newFullLayout._dfltTitle = {\n plot: _(gd, \"Click to enter Plot title\"),\n subtitle: _(gd, \"Click to enter Plot subtitle\"),\n x: _(gd, \"Click to enter X axis title\"),\n y: _(gd, \"Click to enter Y axis title\"),\n colorbar: _(gd, \"Click to enter Colorscale title\"),\n annotation: _(gd, \"new text\")\n };\n newFullLayout._traceWord = _(gd, \"trace\");\n var formatObj = getFormatObj(gd, d3FormatKeys);\n newFullLayout._mapboxAccessToken = context.mapboxAccessToken;\n if (oldFullLayout._initialAutoSizeIsDone) {\n var oldWidth = oldFullLayout.width;\n var oldHeight = oldFullLayout.height;\n plots.supplyLayoutGlobalDefaults(newLayout, newFullLayout, formatObj);\n if (!newLayout.width) newFullLayout.width = oldWidth;\n if (!newLayout.height) newFullLayout.height = oldHeight;\n plots.sanitizeMargins(newFullLayout);\n } else {\n plots.supplyLayoutGlobalDefaults(newLayout, newFullLayout, formatObj);\n var missingWidthOrHeight = !newLayout.width || !newLayout.height;\n var autosize = newFullLayout.autosize;\n var autosizable = context.autosizable;\n var initialAutoSize = missingWidthOrHeight && (autosize || autosizable);\n if (initialAutoSize) plots.plotAutoSize(gd, newLayout, newFullLayout);\n else if (missingWidthOrHeight) plots.sanitizeMargins(newFullLayout);\n if (!autosize && missingWidthOrHeight) {\n newLayout.width = newFullLayout.width;\n newLayout.height = newFullLayout.height;\n }\n }\n newFullLayout._d3locale = getFormatter(formatObj, newFullLayout.separators);\n newFullLayout._extraFormat = getFormatObj(gd, extraFormatKeys);\n newFullLayout._initialAutoSizeIsDone = true;\n newFullLayout._dataLength = newData.length;\n newFullLayout._modules = [];\n newFullLayout._visibleModules = [];\n newFullLayout._basePlotModules = [];\n var subplots = newFullLayout._subplots = emptySubplotLists();\n var splomAxes = newFullLayout._splomAxes = { x: {}, y: {} };\n var splomSubplots = newFullLayout._splomSubplots = {};\n newFullLayout._splomGridDflt = {};\n newFullLayout._scatterStackOpts = {};\n newFullLayout._firstScatter = {};\n newFullLayout._alignmentOpts = {};\n newFullLayout._colorAxes = {};\n newFullLayout._requestRangeslider = {};\n newFullLayout._traceUids = getTraceUids(oldFullData, newData);\n plots.supplyDataDefaults(newData, newFullData, newLayout, newFullLayout);\n var splomXa = Object.keys(splomAxes.x);\n var splomYa = Object.keys(splomAxes.y);\n if (splomXa.length > 1 && splomYa.length > 1) {\n Registry.getComponentMethod(\"grid\", \"sizeDefaults\")(newLayout, newFullLayout);\n for (i = 0; i < splomXa.length; i++) {\n Lib.pushUnique(subplots.xaxis, splomXa[i]);\n }\n for (i = 0; i < splomYa.length; i++) {\n Lib.pushUnique(subplots.yaxis, splomYa[i]);\n }\n for (var k in splomSubplots) {\n Lib.pushUnique(subplots.cartesian, k);\n }\n }\n newFullLayout._has = plots._hasPlotType.bind(newFullLayout);\n if (oldFullData.length === newFullData.length) {\n for (i = 0; i < newFullData.length; i++) {\n relinkPrivateKeys(newFullData[i], oldFullData[i]);\n }\n }\n plots.supplyLayoutModuleDefaults(newLayout, newFullLayout, newFullData, gd._transitionData);\n var _modules = newFullLayout._visibleModules;\n var crossTraceDefaultsFuncs = [];\n for (i = 0; i < _modules.length; i++) {\n var funci = _modules[i].crossTraceDefaults;\n if (funci) Lib.pushUnique(crossTraceDefaultsFuncs, funci);\n }\n for (i = 0; i < crossTraceDefaultsFuncs.length; i++) {\n crossTraceDefaultsFuncs[i](newFullData, newFullLayout);\n }\n newFullLayout._hasOnlyLargeSploms = newFullLayout._basePlotModules.length === 1 && newFullLayout._basePlotModules[0].name === \"splom\" && splomXa.length > 15 && splomYa.length > 15 && newFullLayout.shapes.length === 0 && newFullLayout.images.length === 0;\n plots.linkSubplots(newFullData, newFullLayout, oldFullData, oldFullLayout);\n plots.cleanPlot(newFullData, newFullLayout, oldFullData, oldFullLayout);\n var hadCartesian = !!(oldFullLayout._has && oldFullLayout._has(\"cartesian\"));\n var hasCartesian = !!(newFullLayout._has && newFullLayout._has(\"cartesian\"));\n var hadBgLayer = hadCartesian;\n var hasBgLayer = hasCartesian;\n if (hadBgLayer && !hasBgLayer) {\n oldFullLayout._bgLayer.remove();\n } else if (hasBgLayer && !hadBgLayer) {\n newFullLayout._shouldCreateBgLayer = true;\n }\n if (oldFullLayout._zoomlayer && !gd._dragging) {\n clearOutline({\n // mock old gd\n _fullLayout: oldFullLayout\n });\n }\n fillMetaTextHelpers(newFullData, newFullLayout);\n relinkPrivateKeys(newFullLayout, oldFullLayout);\n Registry.getComponentMethod(\"colorscale\", \"crossTraceDefaults\")(newFullData, newFullLayout);\n if (!newFullLayout._preGUI) newFullLayout._preGUI = {};\n if (!newFullLayout._tracePreGUI) newFullLayout._tracePreGUI = {};\n var tracePreGUI = newFullLayout._tracePreGUI;\n var uids = {};\n var uid;\n for (uid in tracePreGUI) uids[uid] = \"old\";\n for (i = 0; i < newFullData.length; i++) {\n uid = newFullData[i]._fullInput.uid;\n if (!uids[uid]) tracePreGUI[uid] = {};\n uids[uid] = \"new\";\n }\n for (uid in uids) {\n if (uids[uid] === \"old\") delete tracePreGUI[uid];\n }\n initMargins(newFullLayout);\n Registry.getComponentMethod(\"rangeslider\", \"makeData\")(newFullLayout);\n if (!skipUpdateCalc && oldCalcdata.length === newFullData.length) {\n plots.supplyDefaultsUpdateCalc(oldCalcdata, newFullData);\n }\n };\n plots.supplyDefaultsUpdateCalc = function(oldCalcdata, newFullData) {\n for (var i = 0; i < newFullData.length; i++) {\n var newTrace = newFullData[i];\n var cd0 = (oldCalcdata[i] || [])[0];\n if (cd0 && cd0.trace) {\n var oldTrace = cd0.trace;\n if (oldTrace._hasCalcTransform) {\n var arrayAttrs = oldTrace._arrayAttrs;\n var j, astr, oldArrayVal;\n for (j = 0; j < arrayAttrs.length; j++) {\n astr = arrayAttrs[j];\n oldArrayVal = Lib.nestedProperty(oldTrace, astr).get().slice();\n Lib.nestedProperty(newTrace, astr).set(oldArrayVal);\n }\n }\n cd0.trace = newTrace;\n }\n }\n };\n function getTraceUids(oldFullData, newData) {\n var len = newData.length;\n var oldFullInput = [];\n var i, prevFullInput;\n for (i = 0; i < oldFullData.length; i++) {\n var thisFullInput = oldFullData[i]._fullInput;\n if (thisFullInput !== prevFullInput) oldFullInput.push(thisFullInput);\n prevFullInput = thisFullInput;\n }\n var oldLen = oldFullInput.length;\n var out = new Array(len);\n var seenUids = {};\n function setUid(uid, i2) {\n out[i2] = uid;\n seenUids[uid] = 1;\n }\n function tryUid(uid, i2) {\n if (uid && typeof uid === \"string\" && !seenUids[uid]) {\n setUid(uid, i2);\n return true;\n }\n }\n for (i = 0; i < len; i++) {\n var newUid = newData[i].uid;\n if (typeof newUid === \"number\") newUid = String(newUid);\n if (tryUid(newUid, i)) continue;\n if (i < oldLen && tryUid(oldFullInput[i].uid, i)) continue;\n setUid(Lib.randstr(seenUids), i);\n }\n return out;\n }\n function emptySubplotLists() {\n var collectableSubplotTypes = Registry.collectableSubplotTypes;\n var out = {};\n var i, j;\n if (!collectableSubplotTypes) {\n collectableSubplotTypes = [];\n var subplotsRegistry = Registry.subplotsRegistry;\n for (var subplotType in subplotsRegistry) {\n var subplotModule = subplotsRegistry[subplotType];\n var subplotAttr = subplotModule.attr;\n if (subplotAttr) {\n collectableSubplotTypes.push(subplotType);\n if (Array.isArray(subplotAttr)) {\n for (j = 0; j < subplotAttr.length; j++) {\n Lib.pushUnique(collectableSubplotTypes, subplotAttr[j]);\n }\n }\n }\n }\n }\n for (i = 0; i < collectableSubplotTypes.length; i++) {\n out[collectableSubplotTypes[i]] = [];\n }\n return out;\n }\n function getFormatObj(gd, formatKeys) {\n var locale = gd._context.locale;\n if (!locale) locale = \"en-US\";\n var formatDone = false;\n var formatObj = {};\n function includeFormat(newFormat) {\n var formatFinished = true;\n for (var i2 = 0; i2 < formatKeys.length; i2++) {\n var formatKey = formatKeys[i2];\n if (!formatObj[formatKey]) {\n if (newFormat[formatKey]) {\n formatObj[formatKey] = newFormat[formatKey];\n } else formatFinished = false;\n }\n }\n if (formatFinished) formatDone = true;\n }\n for (var i = 0; i < 2; i++) {\n var locales = gd._context.locales;\n for (var j = 0; j < 2; j++) {\n var formatj = (locales[locale] || {}).format;\n if (formatj) {\n includeFormat(formatj);\n if (formatDone) break;\n }\n locales = Registry.localeRegistry;\n }\n var baseLocale = locale.split(\"-\")[0];\n if (formatDone || baseLocale === locale) break;\n locale = baseLocale;\n }\n if (!formatDone) includeFormat(Registry.localeRegistry.en.format);\n return formatObj;\n }\n function getFormatter(formatObj, separators) {\n formatObj.decimal = separators.charAt(0);\n formatObj.thousands = separators.charAt(1);\n return {\n numberFormat: function(formatStr) {\n try {\n formatStr = formatLocale(formatObj).format(\n Lib.adjustFormat(formatStr)\n );\n } catch (e) {\n Lib.warnBadFormat(formatStr);\n return Lib.noFormat;\n }\n return formatStr;\n },\n timeFormat: timeFormatLocale(formatObj).utcFormat\n };\n }\n function fillMetaTextHelpers(newFullData, newFullLayout) {\n var _meta;\n var meta4data = [];\n if (newFullLayout.meta) {\n _meta = newFullLayout._meta = {\n meta: newFullLayout.meta,\n layout: { meta: newFullLayout.meta }\n };\n }\n for (var i = 0; i < newFullData.length; i++) {\n var trace = newFullData[i];\n if (trace.meta) {\n meta4data[trace.index] = trace._meta = { meta: trace.meta };\n } else if (newFullLayout.meta) {\n trace._meta = { meta: newFullLayout.meta };\n }\n if (newFullLayout.meta) {\n trace._meta.layout = { meta: newFullLayout.meta };\n }\n }\n if (meta4data.length) {\n if (!_meta) {\n _meta = newFullLayout._meta = {};\n }\n _meta.data = meta4data;\n }\n }\n plots.createTransitionData = function(gd) {\n if (!gd._transitionData) {\n gd._transitionData = {};\n }\n if (!gd._transitionData._frames) {\n gd._transitionData._frames = [];\n }\n if (!gd._transitionData._frameHash) {\n gd._transitionData._frameHash = {};\n }\n if (!gd._transitionData._counter) {\n gd._transitionData._counter = 0;\n }\n if (!gd._transitionData._interruptCallbacks) {\n gd._transitionData._interruptCallbacks = [];\n }\n };\n plots._hasPlotType = function(category) {\n var i;\n var basePlotModules = this._basePlotModules || [];\n for (i = 0; i < basePlotModules.length; i++) {\n if (basePlotModules[i].name === category) return true;\n }\n var modules = this._modules || [];\n for (i = 0; i < modules.length; i++) {\n var name = modules[i].name;\n if (name === category) return true;\n var _module = Registry.modules[name];\n if (_module && _module.categories[category]) return true;\n }\n return false;\n };\n plots.cleanPlot = function(newFullData, newFullLayout, oldFullData, oldFullLayout) {\n var i, j;\n var basePlotModules = oldFullLayout._basePlotModules || [];\n for (i = 0; i < basePlotModules.length; i++) {\n var _module = basePlotModules[i];\n if (_module.clean) {\n _module.clean(newFullData, newFullLayout, oldFullData, oldFullLayout);\n }\n }\n var hadGl = oldFullLayout._has && oldFullLayout._has(\"gl\");\n var hasGl = newFullLayout._has && newFullLayout._has(\"gl\");\n if (hadGl && !hasGl) {\n if (oldFullLayout._glcontainer !== void 0) {\n oldFullLayout._glcontainer.selectAll(\".gl-canvas\").remove();\n oldFullLayout._glcontainer.selectAll(\".no-webgl\").remove();\n oldFullLayout._glcanvas = null;\n }\n }\n var hasInfoLayer = !!oldFullLayout._infolayer;\n oldLoop:\n for (i = 0; i < oldFullData.length; i++) {\n var oldTrace = oldFullData[i];\n var oldUid = oldTrace.uid;\n for (j = 0; j < newFullData.length; j++) {\n var newTrace = newFullData[j];\n if (oldUid === newTrace.uid) continue oldLoop;\n }\n if (hasInfoLayer) {\n oldFullLayout._infolayer.select(\".cb\" + oldUid).remove();\n }\n }\n };\n plots.linkSubplots = function(newFullData, newFullLayout, oldFullData, oldFullLayout) {\n var i, j;\n var oldSubplots = oldFullLayout._plots || {};\n var newSubplots = newFullLayout._plots = {};\n var newSubplotList = newFullLayout._subplots;\n var mockGd = {\n _fullData: newFullData,\n _fullLayout: newFullLayout\n };\n var ids = newSubplotList.cartesian || [];\n for (i = 0; i < ids.length; i++) {\n var id = ids[i];\n var oldSubplot = oldSubplots[id];\n var xaxis = axisIDs.getFromId(mockGd, id, \"x\");\n var yaxis = axisIDs.getFromId(mockGd, id, \"y\");\n var plotinfo;\n if (oldSubplot) {\n plotinfo = newSubplots[id] = oldSubplot;\n } else {\n plotinfo = newSubplots[id] = {};\n plotinfo.id = id;\n }\n xaxis._counterAxes.push(yaxis._id);\n yaxis._counterAxes.push(xaxis._id);\n xaxis._subplotsWith.push(id);\n yaxis._subplotsWith.push(id);\n plotinfo.xaxis = xaxis;\n plotinfo.yaxis = yaxis;\n plotinfo._hasClipOnAxisFalse = false;\n for (j = 0; j < newFullData.length; j++) {\n var trace = newFullData[j];\n if (trace.xaxis === plotinfo.xaxis._id && trace.yaxis === plotinfo.yaxis._id && trace.cliponaxis === false) {\n plotinfo._hasClipOnAxisFalse = true;\n break;\n }\n }\n }\n var axList = axisIDs.list(mockGd, null, true);\n var ax;\n for (i = 0; i < axList.length; i++) {\n ax = axList[i];\n var mainAx = null;\n if (ax.overlaying) {\n mainAx = axisIDs.getFromId(mockGd, ax.overlaying);\n if (mainAx && mainAx.overlaying) {\n ax.overlaying = false;\n mainAx = null;\n }\n }\n ax._mainAxis = mainAx || ax;\n if (mainAx) ax.domain = mainAx.domain.slice();\n ax._anchorAxis = ax.anchor === \"free\" ? null : axisIDs.getFromId(mockGd, ax.anchor);\n }\n for (i = 0; i < axList.length; i++) {\n ax = axList[i];\n ax._counterAxes.sort(axisIDs.idSort);\n ax._subplotsWith.sort(Lib.subplotSort);\n ax._mainSubplot = findMainSubplot(ax, newFullLayout);\n if (ax._counterAxes.length && (ax.spikemode && ax.spikemode.indexOf(\"across\") !== -1 || ax.automargin && ax.mirror && ax.anchor !== \"free\" || Registry.getComponentMethod(\"rangeslider\", \"isVisible\")(ax))) {\n var min = 1;\n var max = 0;\n for (j = 0; j < ax._counterAxes.length; j++) {\n var ax2 = axisIDs.getFromId(mockGd, ax._counterAxes[j]);\n min = Math.min(min, ax2.domain[0]);\n max = Math.max(max, ax2.domain[1]);\n }\n if (min < max) {\n ax._counterDomainMin = min;\n ax._counterDomainMax = max;\n }\n }\n }\n };\n function findMainSubplot(ax, fullLayout) {\n var mockGd = { _fullLayout: fullLayout };\n var isX = ax._id.charAt(0) === \"x\";\n var anchorAx = ax._mainAxis._anchorAxis;\n var mainSubplotID = \"\";\n var nextBestMainSubplotID = \"\";\n var anchorID = \"\";\n if (anchorAx) {\n anchorID = anchorAx._mainAxis._id;\n mainSubplotID = isX ? ax._id + anchorID : anchorID + ax._id;\n }\n if (!mainSubplotID || !fullLayout._plots[mainSubplotID]) {\n mainSubplotID = \"\";\n var counterIDs = ax._counterAxes;\n for (var j = 0; j < counterIDs.length; j++) {\n var counterPart = counterIDs[j];\n var id = isX ? ax._id + counterPart : counterPart + ax._id;\n if (!nextBestMainSubplotID) nextBestMainSubplotID = id;\n var counterAx = axisIDs.getFromId(mockGd, counterPart);\n if (anchorID && counterAx.overlaying === anchorID) {\n mainSubplotID = id;\n break;\n }\n }\n }\n return mainSubplotID || nextBestMainSubplotID;\n }\n plots.clearExpandedTraceDefaultColors = function(trace) {\n var colorAttrs, path, i;\n function locateColorAttrs(attr, attrName, attrs, level) {\n path[level] = attrName;\n path.length = level + 1;\n if (attr.valType === \"color\" && attr.dflt === void 0) {\n colorAttrs.push(path.join(\".\"));\n }\n }\n path = [];\n colorAttrs = trace._module._colorAttrs;\n if (!colorAttrs) {\n trace._module._colorAttrs = colorAttrs = [];\n PlotSchema.crawl(\n trace._module.attributes,\n locateColorAttrs\n );\n }\n for (i = 0; i < colorAttrs.length; i++) {\n var origprop = Lib.nestedProperty(trace, \"_input.\" + colorAttrs[i]);\n if (!origprop.get()) {\n Lib.nestedProperty(trace, colorAttrs[i]).set(null);\n }\n }\n };\n plots.supplyDataDefaults = function(dataIn, dataOut, layout, fullLayout) {\n var modules = fullLayout._modules;\n var visibleModules = fullLayout._visibleModules;\n var basePlotModules = fullLayout._basePlotModules;\n var cnt = 0;\n var colorCnt = 0;\n var i, fullTrace, trace;\n fullLayout._transformModules = [];\n function pushModule(fullTrace2) {\n dataOut.push(fullTrace2);\n var _module = fullTrace2._module;\n if (!_module) return;\n Lib.pushUnique(modules, _module);\n if (fullTrace2.visible === true) Lib.pushUnique(visibleModules, _module);\n Lib.pushUnique(basePlotModules, fullTrace2._module.basePlotModule);\n cnt++;\n if (fullTrace2._input.visible !== false) colorCnt++;\n }\n var carpetIndex = {};\n var carpetDependents = [];\n var dataTemplate = (layout.template || {}).data || {};\n var templater = Template.traceTemplater(dataTemplate);\n for (i = 0; i < dataIn.length; i++) {\n trace = dataIn[i];\n fullTrace = templater.newTrace(trace);\n fullTrace.uid = fullLayout._traceUids[i];\n plots.supplyTraceDefaults(trace, fullTrace, colorCnt, fullLayout, i);\n fullTrace.index = i;\n fullTrace._input = trace;\n fullTrace._fullInput = fullTrace;\n pushModule(fullTrace);\n if (Registry.traceIs(fullTrace, \"carpetAxis\")) {\n carpetIndex[fullTrace.carpet] = fullTrace;\n }\n if (Registry.traceIs(fullTrace, \"carpetDependent\")) {\n carpetDependents.push(i);\n }\n }\n for (i = 0; i < carpetDependents.length; i++) {\n fullTrace = dataOut[carpetDependents[i]];\n if (!fullTrace.visible) continue;\n var carpetAxis = carpetIndex[fullTrace.carpet];\n fullTrace._carpet = carpetAxis;\n if (!carpetAxis || !carpetAxis.visible) {\n fullTrace.visible = false;\n continue;\n }\n fullTrace.xaxis = carpetAxis.xaxis;\n fullTrace.yaxis = carpetAxis.yaxis;\n }\n };\n plots.supplyAnimationDefaults = function(opts) {\n opts = opts || {};\n var i;\n var optsOut = {};\n function coerce(attr, dflt) {\n return Lib.coerce(opts || {}, optsOut, animationAttrs, attr, dflt);\n }\n coerce(\"mode\");\n coerce(\"direction\");\n coerce(\"fromcurrent\");\n if (Array.isArray(opts.frame)) {\n optsOut.frame = [];\n for (i = 0; i < opts.frame.length; i++) {\n optsOut.frame[i] = plots.supplyAnimationFrameDefaults(opts.frame[i] || {});\n }\n } else {\n optsOut.frame = plots.supplyAnimationFrameDefaults(opts.frame || {});\n }\n if (Array.isArray(opts.transition)) {\n optsOut.transition = [];\n for (i = 0; i < opts.transition.length; i++) {\n optsOut.transition[i] = plots.supplyAnimationTransitionDefaults(opts.transition[i] || {});\n }\n } else {\n optsOut.transition = plots.supplyAnimationTransitionDefaults(opts.transition || {});\n }\n return optsOut;\n };\n plots.supplyAnimationFrameDefaults = function(opts) {\n var optsOut = {};\n function coerce(attr, dflt) {\n return Lib.coerce(opts || {}, optsOut, animationAttrs.frame, attr, dflt);\n }\n coerce(\"duration\");\n coerce(\"redraw\");\n return optsOut;\n };\n plots.supplyAnimationTransitionDefaults = function(opts) {\n var optsOut = {};\n function coerce(attr, dflt) {\n return Lib.coerce(opts || {}, optsOut, animationAttrs.transition, attr, dflt);\n }\n coerce(\"duration\");\n coerce(\"easing\");\n return optsOut;\n };\n plots.supplyFrameDefaults = function(frameIn) {\n var frameOut = {};\n function coerce(attr, dflt) {\n return Lib.coerce(frameIn, frameOut, frameAttrs, attr, dflt);\n }\n coerce(\"group\");\n coerce(\"name\");\n coerce(\"traces\");\n coerce(\"baseframe\");\n coerce(\"data\");\n coerce(\"layout\");\n return frameOut;\n };\n plots.supplyTraceDefaults = function(traceIn, traceOut, colorIndex, layout, traceInIndex) {\n var colorway = layout.colorway || Color.defaults;\n var defaultColor = colorway[colorIndex % colorway.length];\n var i;\n function coerce(attr, dflt) {\n return Lib.coerce(traceIn, traceOut, plots.attributes, attr, dflt);\n }\n var visible = coerce(\"visible\");\n coerce(\"type\");\n coerce(\"name\", layout._traceWord + \" \" + traceInIndex);\n coerce(\"uirevision\", layout.uirevision);\n var _module = plots.getModule(traceOut);\n traceOut._module = _module;\n if (_module) {\n var basePlotModule = _module.basePlotModule;\n var subplotAttr = basePlotModule.attr;\n var subplotAttrs = basePlotModule.attributes;\n if (subplotAttr && subplotAttrs) {\n var subplots = layout._subplots;\n var subplotId = \"\";\n if (Array.isArray(subplotAttr)) {\n for (i = 0; i < subplotAttr.length; i++) {\n var attri = subplotAttr[i];\n var vali = Lib.coerce(traceIn, traceOut, subplotAttrs, attri);\n if (subplots[attri]) Lib.pushUnique(subplots[attri], vali);\n subplotId += vali;\n }\n } else {\n subplotId = Lib.coerce(traceIn, traceOut, subplotAttrs, subplotAttr);\n }\n if (subplots[basePlotModule.name]) {\n Lib.pushUnique(subplots[basePlotModule.name], subplotId);\n }\n }\n }\n if (visible) {\n coerce(\"customdata\");\n coerce(\"ids\");\n coerce(\"meta\");\n if (Registry.traceIs(traceOut, \"showLegend\")) {\n Lib.coerce(\n traceIn,\n traceOut,\n _module.attributes.showlegend ? _module.attributes : plots.attributes,\n \"showlegend\"\n );\n coerce(\"legend\");\n coerce(\"legendwidth\");\n coerce(\"legendgroup\");\n coerce(\"legendgrouptitle.text\");\n coerce(\"legendrank\");\n traceOut._dfltShowLegend = true;\n } else {\n traceOut._dfltShowLegend = false;\n }\n if (_module) {\n _module.supplyDefaults(traceIn, traceOut, defaultColor, layout);\n }\n if (!Registry.traceIs(traceOut, \"noOpacity\")) {\n coerce(\"opacity\");\n }\n if (Registry.traceIs(traceOut, \"notLegendIsolatable\")) {\n traceOut.visible = !!traceOut.visible;\n }\n if (!Registry.traceIs(traceOut, \"noHover\")) {\n if (!traceOut.hovertemplate) Lib.coerceHoverinfo(traceIn, traceOut, layout);\n if (traceOut.type !== \"parcats\") {\n Registry.getComponentMethod(\"fx\", \"supplyDefaults\")(traceIn, traceOut, defaultColor, layout);\n }\n }\n if (_module && _module.selectPoints) {\n var selectedpoints = coerce(\"selectedpoints\");\n if (Lib.isTypedArray(selectedpoints)) {\n traceOut.selectedpoints = Array.from(selectedpoints);\n }\n }\n }\n return traceOut;\n };\n plots.supplyLayoutGlobalDefaults = function(layoutIn, layoutOut, formatObj) {\n function coerce(attr, dflt) {\n return Lib.coerce(layoutIn, layoutOut, plots.layoutAttributes, attr, dflt);\n }\n var template = layoutIn.template;\n if (Lib.isPlainObject(template)) {\n layoutOut.template = template;\n layoutOut._template = template.layout;\n layoutOut._dataTemplate = template.data;\n }\n coerce(\"autotypenumbers\");\n var font = Lib.coerceFont(coerce, \"font\");\n var fontSize = font.size;\n Lib.coerceFont(coerce, \"title.font\", font, { overrideDflt: {\n size: Math.round(fontSize * 1.4)\n } });\n coerce(\"title.text\", layoutOut._dfltTitle.plot);\n coerce(\"title.xref\");\n var titleYref = coerce(\"title.yref\");\n coerce(\"title.pad.t\");\n coerce(\"title.pad.r\");\n coerce(\"title.pad.b\");\n coerce(\"title.pad.l\");\n var titleAutomargin = coerce(\"title.automargin\");\n coerce(\"title.x\");\n coerce(\"title.xanchor\");\n coerce(\"title.y\");\n coerce(\"title.yanchor\");\n coerce(\"title.subtitle.text\", layoutOut._dfltTitle.subtitle);\n Lib.coerceFont(coerce, \"title.subtitle.font\", font, {\n overrideDflt: {\n size: Math.round(layoutOut.title.font.size * 0.7)\n }\n });\n if (titleAutomargin) {\n if (titleYref === \"paper\") {\n if (layoutOut.title.y !== 0) layoutOut.title.y = 1;\n if (layoutOut.title.yanchor === \"auto\") {\n layoutOut.title.yanchor = layoutOut.title.y === 0 ? \"top\" : \"bottom\";\n }\n }\n if (titleYref === \"container\") {\n if (layoutOut.title.y === \"auto\") layoutOut.title.y = 1;\n if (layoutOut.title.yanchor === \"auto\") {\n layoutOut.title.yanchor = layoutOut.title.y < 0.5 ? \"bottom\" : \"top\";\n }\n }\n }\n var uniformtextMode = coerce(\"uniformtext.mode\");\n if (uniformtextMode) {\n coerce(\"uniformtext.minsize\");\n }\n coerce(\"autosize\", !(layoutIn.width && layoutIn.height));\n coerce(\"width\");\n coerce(\"height\");\n coerce(\"minreducedwidth\");\n coerce(\"minreducedheight\");\n coerce(\"margin.l\");\n coerce(\"margin.r\");\n coerce(\"margin.t\");\n coerce(\"margin.b\");\n coerce(\"margin.pad\");\n coerce(\"margin.autoexpand\");\n if (layoutIn.width && layoutIn.height) plots.sanitizeMargins(layoutOut);\n Registry.getComponentMethod(\"grid\", \"sizeDefaults\")(layoutIn, layoutOut);\n coerce(\"paper_bgcolor\");\n coerce(\"separators\", formatObj.decimal + formatObj.thousands);\n coerce(\"hidesources\");\n coerce(\"colorway\");\n coerce(\"datarevision\");\n var uirevision = coerce(\"uirevision\");\n coerce(\"editrevision\", uirevision);\n coerce(\"selectionrevision\", uirevision);\n Registry.getComponentMethod(\n \"modebar\",\n \"supplyLayoutDefaults\"\n )(layoutIn, layoutOut);\n Registry.getComponentMethod(\n \"shapes\",\n \"supplyDrawNewShapeDefaults\"\n )(layoutIn, layoutOut, coerce);\n Registry.getComponentMethod(\n \"selections\",\n \"supplyDrawNewSelectionDefaults\"\n )(layoutIn, layoutOut, coerce);\n coerce(\"meta\");\n if (Lib.isPlainObject(layoutIn.transition)) {\n coerce(\"transition.duration\");\n coerce(\"transition.easing\");\n coerce(\"transition.ordering\");\n }\n Registry.getComponentMethod(\n \"calendars\",\n \"handleDefaults\"\n )(layoutIn, layoutOut, \"calendar\");\n Registry.getComponentMethod(\n \"fx\",\n \"supplyLayoutGlobalDefaults\"\n )(layoutIn, layoutOut, coerce);\n Lib.coerce(layoutIn, layoutOut, scatterAttrs, \"scattermode\");\n };\n function getComputedSize(attr) {\n return typeof attr === \"string\" && attr.substr(attr.length - 2) === \"px\" && parseFloat(attr);\n }\n plots.plotAutoSize = function plotAutoSize(gd, layout, fullLayout) {\n var context = gd._context || {};\n var frameMargins = context.frameMargins;\n var newWidth;\n var newHeight;\n var isPlotDiv = Lib.isPlotDiv(gd);\n if (isPlotDiv) gd.emit(\"plotly_autosize\");\n if (context.fillFrame) {\n newWidth = window.innerWidth;\n newHeight = window.innerHeight;\n document.body.style.overflow = \"hidden\";\n } else {\n var computedStyle = isPlotDiv ? window.getComputedStyle(gd) : {};\n newWidth = getComputedSize(computedStyle.width) || getComputedSize(computedStyle.maxWidth) || fullLayout.width;\n newHeight = getComputedSize(computedStyle.height) || getComputedSize(computedStyle.maxHeight) || fullLayout.height;\n if (isNumeric(frameMargins) && frameMargins > 0) {\n var factor = 1 - 2 * frameMargins;\n newWidth = Math.round(factor * newWidth);\n newHeight = Math.round(factor * newHeight);\n }\n }\n var minWidth = plots.layoutAttributes.width.min;\n var minHeight = plots.layoutAttributes.height.min;\n if (newWidth < minWidth) newWidth = minWidth;\n if (newHeight < minHeight) newHeight = minHeight;\n var widthHasChanged = !layout.width && Math.abs(fullLayout.width - newWidth) > 1;\n var heightHasChanged = !layout.height && Math.abs(fullLayout.height - newHeight) > 1;\n if (heightHasChanged || widthHasChanged) {\n if (widthHasChanged) fullLayout.width = newWidth;\n if (heightHasChanged) fullLayout.height = newHeight;\n }\n if (!gd._initialAutoSize) {\n gd._initialAutoSize = { width: newWidth, height: newHeight };\n }\n plots.sanitizeMargins(fullLayout);\n };\n plots.supplyLayoutModuleDefaults = function(layoutIn, layoutOut, fullData, transitionData) {\n var componentsRegistry = Registry.componentsRegistry;\n var basePlotModules = layoutOut._basePlotModules;\n var component, i, _module;\n var Cartesian = Registry.subplotsRegistry.cartesian;\n for (component in componentsRegistry) {\n _module = componentsRegistry[component];\n if (_module.includeBasePlot) {\n _module.includeBasePlot(layoutIn, layoutOut);\n }\n }\n if (!basePlotModules.length) {\n basePlotModules.push(Cartesian);\n }\n if (layoutOut._has(\"cartesian\")) {\n Registry.getComponentMethod(\"grid\", \"contentDefaults\")(layoutIn, layoutOut);\n Cartesian.finalizeSubplots(layoutIn, layoutOut);\n }\n for (var subplotType in layoutOut._subplots) {\n layoutOut._subplots[subplotType].sort(Lib.subplotSort);\n }\n for (i = 0; i < basePlotModules.length; i++) {\n _module = basePlotModules[i];\n if (_module.supplyLayoutDefaults) {\n _module.supplyLayoutDefaults(layoutIn, layoutOut, fullData);\n }\n }\n var modules = layoutOut._modules;\n for (i = 0; i < modules.length; i++) {\n _module = modules[i];\n if (_module.supplyLayoutDefaults) {\n _module.supplyLayoutDefaults(layoutIn, layoutOut, fullData);\n }\n }\n var transformModules = layoutOut._transformModules;\n for (i = 0; i < transformModules.length; i++) {\n _module = transformModules[i];\n if (_module.supplyLayoutDefaults) {\n _module.supplyLayoutDefaults(layoutIn, layoutOut, fullData, transitionData);\n }\n }\n for (component in componentsRegistry) {\n _module = componentsRegistry[component];\n if (_module.supplyLayoutDefaults) {\n _module.supplyLayoutDefaults(layoutIn, layoutOut, fullData);\n }\n }\n };\n plots.purge = function(gd) {\n var fullLayout = gd._fullLayout || {};\n if (fullLayout._glcontainer !== void 0) {\n fullLayout._glcontainer.selectAll(\".gl-canvas\").remove();\n fullLayout._glcontainer.remove();\n fullLayout._glcanvas = null;\n }\n if (fullLayout._modeBar) fullLayout._modeBar.destroy();\n if (gd._transitionData) {\n if (gd._transitionData._interruptCallbacks) {\n gd._transitionData._interruptCallbacks.length = 0;\n }\n if (gd._transitionData._animationRaf) {\n window.cancelAnimationFrame(gd._transitionData._animationRaf);\n }\n }\n Lib.clearThrottle();\n Lib.clearResponsive(gd);\n delete gd.data;\n delete gd.layout;\n delete gd._fullData;\n delete gd._fullLayout;\n delete gd.calcdata;\n delete gd.empty;\n delete gd.fid;\n delete gd.undoqueue;\n delete gd.undonum;\n delete gd.autoplay;\n delete gd.changed;\n delete gd._promises;\n delete gd._redrawTimer;\n delete gd._hmlumcount;\n delete gd._hmpixcount;\n delete gd._transitionData;\n delete gd._transitioning;\n delete gd._initialAutoSize;\n delete gd._transitioningWithDuration;\n delete gd._dragging;\n delete gd._dragged;\n delete gd._dragdata;\n delete gd._hoverdata;\n delete gd._snapshotInProgress;\n delete gd._editing;\n delete gd._mouseDownTime;\n delete gd._legendMouseDownTime;\n if (gd.removeAllListeners) gd.removeAllListeners();\n };\n plots.style = function(gd) {\n var _modules = gd._fullLayout._visibleModules;\n var styleModules = [];\n var i;\n for (i = 0; i < _modules.length; i++) {\n var _module = _modules[i];\n if (_module.style) {\n Lib.pushUnique(styleModules, _module.style);\n }\n }\n for (i = 0; i < styleModules.length; i++) {\n styleModules[i](gd);\n }\n };\n plots.sanitizeMargins = function(fullLayout) {\n if (!fullLayout || !fullLayout.margin) return;\n var width = fullLayout.width;\n var height = fullLayout.height;\n var margin = fullLayout.margin;\n var plotWidth = width - (margin.l + margin.r);\n var plotHeight = height - (margin.t + margin.b);\n var correction;\n if (plotWidth < 0) {\n correction = (width - 1) / (margin.l + margin.r);\n margin.l = Math.floor(correction * margin.l);\n margin.r = Math.floor(correction * margin.r);\n }\n if (plotHeight < 0) {\n correction = (height - 1) / (margin.t + margin.b);\n margin.t = Math.floor(correction * margin.t);\n margin.b = Math.floor(correction * margin.b);\n }\n };\n plots.clearAutoMarginIds = function(gd) {\n gd._fullLayout._pushmarginIds = {};\n };\n plots.allowAutoMargin = function(gd, id) {\n gd._fullLayout._pushmarginIds[id] = 1;\n };\n function initMargins(fullLayout) {\n var margin = fullLayout.margin;\n if (!fullLayout._size) {\n var gs = fullLayout._size = {\n l: Math.round(margin.l),\n r: Math.round(margin.r),\n t: Math.round(margin.t),\n b: Math.round(margin.b),\n p: Math.round(margin.pad)\n };\n gs.w = Math.round(fullLayout.width) - gs.l - gs.r;\n gs.h = Math.round(fullLayout.height) - gs.t - gs.b;\n }\n if (!fullLayout._pushmargin) fullLayout._pushmargin = {};\n if (!fullLayout._pushmarginIds) fullLayout._pushmarginIds = {};\n if (!fullLayout._reservedMargin) fullLayout._reservedMargin = {};\n }\n var MIN_SPECIFIED_WIDTH = 2;\n var MIN_SPECIFIED_HEIGHT = 2;\n plots.autoMargin = function(gd, id, o) {\n var fullLayout = gd._fullLayout;\n var width = fullLayout.width;\n var height = fullLayout.height;\n var margin = fullLayout.margin;\n var minreducedwidth = fullLayout.minreducedwidth;\n var minreducedheight = fullLayout.minreducedheight;\n var minFinalWidth = Lib.constrain(\n width - margin.l - margin.r,\n MIN_SPECIFIED_WIDTH,\n minreducedwidth\n );\n var minFinalHeight = Lib.constrain(\n height - margin.t - margin.b,\n MIN_SPECIFIED_HEIGHT,\n minreducedheight\n );\n var maxSpaceW = Math.max(0, width - minFinalWidth);\n var maxSpaceH = Math.max(0, height - minFinalHeight);\n var pushMargin = fullLayout._pushmargin;\n var pushMarginIds = fullLayout._pushmarginIds;\n if (margin.autoexpand !== false) {\n if (!o) {\n delete pushMargin[id];\n delete pushMarginIds[id];\n } else {\n var pad = o.pad;\n if (pad === void 0) {\n pad = Math.min(12, margin.l, margin.r, margin.t, margin.b);\n }\n if (maxSpaceW) {\n var rW = (o.l + o.r) / maxSpaceW;\n if (rW > 1) {\n o.l /= rW;\n o.r /= rW;\n }\n }\n if (maxSpaceH) {\n var rH = (o.t + o.b) / maxSpaceH;\n if (rH > 1) {\n o.t /= rH;\n o.b /= rH;\n }\n }\n var xl = o.xl !== void 0 ? o.xl : o.x;\n var xr = o.xr !== void 0 ? o.xr : o.x;\n var yt = o.yt !== void 0 ? o.yt : o.y;\n var yb = o.yb !== void 0 ? o.yb : o.y;\n pushMargin[id] = {\n l: { val: xl, size: o.l + pad },\n r: { val: xr, size: o.r + pad },\n b: { val: yb, size: o.b + pad },\n t: { val: yt, size: o.t + pad }\n };\n pushMarginIds[id] = 1;\n }\n if (!fullLayout._replotting) {\n return plots.doAutoMargin(gd);\n }\n }\n };\n function needsRedrawForShift(gd) {\n if (\"_redrawFromAutoMarginCount\" in gd._fullLayout) {\n return false;\n }\n var axList = axisIDs.list(gd, \"\", true);\n for (var ax in axList) {\n if (axList[ax].autoshift || axList[ax].shift) return true;\n }\n return false;\n }\n plots.doAutoMargin = function(gd) {\n var fullLayout = gd._fullLayout;\n var width = fullLayout.width;\n var height = fullLayout.height;\n if (!fullLayout._size) fullLayout._size = {};\n initMargins(fullLayout);\n var gs = fullLayout._size;\n var margin = fullLayout.margin;\n var reservedMargins = { t: 0, b: 0, l: 0, r: 0 };\n var oldMargins = Lib.extendFlat({}, gs);\n var ml = margin.l;\n var mr = margin.r;\n var mt = margin.t;\n var mb = margin.b;\n var pushMargin = fullLayout._pushmargin;\n var pushMarginIds = fullLayout._pushmarginIds;\n var minreducedwidth = fullLayout.minreducedwidth;\n var minreducedheight = fullLayout.minreducedheight;\n if (margin.autoexpand !== false) {\n for (var k in pushMargin) {\n if (!pushMarginIds[k]) delete pushMargin[k];\n }\n var margins = gd._fullLayout._reservedMargin;\n for (var key in margins) {\n for (var side in margins[key]) {\n var val = margins[key][side];\n reservedMargins[side] = Math.max(reservedMargins[side], val);\n }\n }\n pushMargin.base = {\n l: { val: 0, size: ml },\n r: { val: 1, size: mr },\n t: { val: 1, size: mt },\n b: { val: 0, size: mb }\n };\n for (var s in reservedMargins) {\n var autoMarginPush = 0;\n for (var m in pushMargin) {\n if (m !== \"base\") {\n if (isNumeric(pushMargin[m][s].size)) {\n autoMarginPush = pushMargin[m][s].size > autoMarginPush ? pushMargin[m][s].size : autoMarginPush;\n }\n }\n }\n var extraMargin = Math.max(0, margin[s] - autoMarginPush);\n reservedMargins[s] = Math.max(0, reservedMargins[s] - extraMargin);\n }\n for (var k1 in pushMargin) {\n var pushleft = pushMargin[k1].l || {};\n var pushbottom = pushMargin[k1].b || {};\n var fl = pushleft.val;\n var pl = pushleft.size;\n var fb = pushbottom.val;\n var pb = pushbottom.size;\n var availableWidth = width - reservedMargins.r - reservedMargins.l;\n var availableHeight = height - reservedMargins.t - reservedMargins.b;\n for (var k2 in pushMargin) {\n if (isNumeric(pl) && pushMargin[k2].r) {\n var fr = pushMargin[k2].r.val;\n var pr = pushMargin[k2].r.size;\n if (fr > fl) {\n var newL = (pl * fr + (pr - availableWidth) * fl) / (fr - fl);\n var newR = (pr * (1 - fl) + (pl - availableWidth) * (1 - fr)) / (fr - fl);\n if (newL + newR > ml + mr) {\n ml = newL;\n mr = newR;\n }\n }\n }\n if (isNumeric(pb) && pushMargin[k2].t) {\n var ft = pushMargin[k2].t.val;\n var pt = pushMargin[k2].t.size;\n if (ft > fb) {\n var newB = (pb * ft + (pt - availableHeight) * fb) / (ft - fb);\n var newT = (pt * (1 - fb) + (pb - availableHeight) * (1 - ft)) / (ft - fb);\n if (newB + newT > mb + mt) {\n mb = newB;\n mt = newT;\n }\n }\n }\n }\n }\n }\n var minFinalWidth = Lib.constrain(\n width - margin.l - margin.r,\n MIN_SPECIFIED_WIDTH,\n minreducedwidth\n );\n var minFinalHeight = Lib.constrain(\n height - margin.t - margin.b,\n MIN_SPECIFIED_HEIGHT,\n minreducedheight\n );\n var maxSpaceW = Math.max(0, width - minFinalWidth);\n var maxSpaceH = Math.max(0, height - minFinalHeight);\n if (maxSpaceW) {\n var rW = (ml + mr) / maxSpaceW;\n if (rW > 1) {\n ml /= rW;\n mr /= rW;\n }\n }\n if (maxSpaceH) {\n var rH = (mb + mt) / maxSpaceH;\n if (rH > 1) {\n mb /= rH;\n mt /= rH;\n }\n }\n gs.l = Math.round(ml) + reservedMargins.l;\n gs.r = Math.round(mr) + reservedMargins.r;\n gs.t = Math.round(mt) + reservedMargins.t;\n gs.b = Math.round(mb) + reservedMargins.b;\n gs.p = Math.round(margin.pad);\n gs.w = Math.round(width) - gs.l - gs.r;\n gs.h = Math.round(height) - gs.t - gs.b;\n if (!fullLayout._replotting && (plots.didMarginChange(oldMargins, gs) || needsRedrawForShift(gd))) {\n if (\"_redrawFromAutoMarginCount\" in fullLayout) {\n fullLayout._redrawFromAutoMarginCount++;\n } else {\n fullLayout._redrawFromAutoMarginCount = 1;\n }\n var maxNumberOfRedraws = 3 * (1 + Object.keys(pushMarginIds).length);\n if (fullLayout._redrawFromAutoMarginCount < maxNumberOfRedraws) {\n return Registry.call(\"_doPlot\", gd);\n } else {\n fullLayout._size = oldMargins;\n Lib.warn(\"Too many auto-margin redraws.\");\n }\n }\n refineTicks(gd);\n };\n function refineTicks(gd) {\n var axList = axisIDs.list(gd, \"\", true);\n [\n \"_adjustTickLabelsOverflow\",\n \"_hideCounterAxisInsideTickLabels\"\n ].forEach(function(k) {\n for (var i = 0; i < axList.length; i++) {\n var hideFn = axList[i][k];\n if (hideFn) hideFn();\n }\n });\n }\n var marginKeys = [\"l\", \"r\", \"t\", \"b\", \"p\", \"w\", \"h\"];\n plots.didMarginChange = function(margin0, margin1) {\n for (var i = 0; i < marginKeys.length; i++) {\n var k = marginKeys[i];\n var m0 = margin0[k];\n var m1 = margin1[k];\n if (!isNumeric(m0) || Math.abs(m1 - m0) > 1) {\n return true;\n }\n }\n return false;\n };\n plots.graphJson = function(gd, dataonly, mode, output, useDefaults, includeConfig) {\n if (useDefaults && dataonly && !gd._fullData || useDefaults && !dataonly && !gd._fullLayout) {\n plots.supplyDefaults(gd);\n }\n var data = useDefaults ? gd._fullData : gd.data;\n var layout = useDefaults ? gd._fullLayout : gd.layout;\n var frames = (gd._transitionData || {})._frames;\n function stripObj(d, keepFunction) {\n if (typeof d === \"function\") {\n return keepFunction ? \"_function_\" : null;\n }\n if (Lib.isPlainObject(d)) {\n var o = {};\n var src;\n Object.keys(d).sort().forEach(function(v) {\n if ([\"_\", \"[\"].indexOf(v.charAt(0)) !== -1) return;\n if (typeof d[v] === \"function\") {\n if (keepFunction) o[v] = \"_function\";\n return;\n }\n if (mode === \"keepdata\") {\n if (v.substr(v.length - 3) === \"src\") {\n return;\n }\n } else if (mode === \"keepstream\") {\n src = d[v + \"src\"];\n if (typeof src === \"string\" && src.indexOf(\":\") > 0) {\n if (!Lib.isPlainObject(d.stream)) {\n return;\n }\n }\n } else if (mode !== \"keepall\") {\n src = d[v + \"src\"];\n if (typeof src === \"string\" && src.indexOf(\":\") > 0) {\n return;\n }\n }\n o[v] = stripObj(d[v], keepFunction);\n });\n return o;\n }\n var dIsArray = Array.isArray(d);\n var dIsTypedArray = Lib.isTypedArray(d);\n if ((dIsArray || dIsTypedArray) && d.dtype && d.shape) {\n var bdata = d.bdata;\n return stripObj({\n dtype: d.dtype,\n shape: d.shape,\n bdata: (\n // case of ArrayBuffer\n Lib.isArrayBuffer(bdata) ? b64encode.encode(bdata) : (\n // case of b64 string\n bdata\n )\n )\n }, keepFunction);\n }\n if (dIsArray) {\n return d.map(function(x) {\n return stripObj(x, keepFunction);\n });\n }\n if (dIsTypedArray) {\n return Lib.simpleMap(d, Lib.identity);\n }\n if (Lib.isJSDate(d)) return Lib.ms2DateTimeLocal(+d);\n return d;\n }\n var obj = {\n data: (data || []).map(function(v) {\n var d = stripObj(v);\n if (dataonly) {\n delete d.fit;\n }\n return d;\n })\n };\n if (!dataonly) {\n obj.layout = stripObj(layout);\n if (useDefaults) {\n var gs = layout._size;\n obj.layout.computed = {\n margin: {\n b: gs.b,\n l: gs.l,\n r: gs.r,\n t: gs.t\n }\n };\n }\n }\n if (frames) obj.frames = stripObj(frames);\n if (includeConfig) obj.config = stripObj(gd._context, true);\n return output === \"object\" ? obj : JSON.stringify(obj);\n };\n plots.modifyFrames = function(gd, operations) {\n var i, op, frame;\n var _frames = gd._transitionData._frames;\n var _frameHash = gd._transitionData._frameHash;\n for (i = 0; i < operations.length; i++) {\n op = operations[i];\n switch (op.type) {\n // No reason this couldn't exist, but is currently unused/untested:\n /* case 'rename':\n frame = _frames[op.index];\n delete _frameHash[frame.name];\n _frameHash[op.name] = frame;\n frame.name = op.name;\n break;*/\n case \"replace\":\n frame = op.value;\n var oldName = (_frames[op.index] || {}).name;\n var newName = frame.name;\n _frames[op.index] = _frameHash[newName] = frame;\n if (newName !== oldName) {\n delete _frameHash[oldName];\n _frameHash[newName] = frame;\n }\n break;\n case \"insert\":\n frame = op.value;\n _frameHash[frame.name] = frame;\n _frames.splice(op.index, 0, frame);\n break;\n case \"delete\":\n frame = _frames[op.index];\n delete _frameHash[frame.name];\n _frames.splice(op.index, 1);\n break;\n }\n }\n return Promise.resolve();\n };\n plots.computeFrame = function(gd, frameName) {\n var frameLookup = gd._transitionData._frameHash;\n var i, traceIndices, traceIndex, destIndex;\n if (!frameName) {\n throw new Error(\"computeFrame must be given a string frame name\");\n }\n var framePtr = frameLookup[frameName.toString()];\n if (!framePtr) {\n return false;\n }\n var frameStack = [framePtr];\n var frameNameStack = [framePtr.name];\n while (framePtr.baseframe && (framePtr = frameLookup[framePtr.baseframe.toString()])) {\n if (frameNameStack.indexOf(framePtr.name) !== -1) break;\n frameStack.push(framePtr);\n frameNameStack.push(framePtr.name);\n }\n var result = {};\n while (framePtr = frameStack.pop()) {\n if (framePtr.layout) {\n result.layout = plots.extendLayout(result.layout, framePtr.layout);\n }\n if (framePtr.data) {\n if (!result.data) {\n result.data = [];\n }\n traceIndices = framePtr.traces;\n if (!traceIndices) {\n traceIndices = [];\n for (i = 0; i < framePtr.data.length; i++) {\n traceIndices[i] = i;\n }\n }\n if (!result.traces) {\n result.traces = [];\n }\n for (i = 0; i < framePtr.data.length; i++) {\n traceIndex = traceIndices[i];\n if (traceIndex === void 0 || traceIndex === null) {\n continue;\n }\n destIndex = result.traces.indexOf(traceIndex);\n if (destIndex === -1) {\n destIndex = result.data.length;\n result.traces[destIndex] = traceIndex;\n }\n result.data[destIndex] = plots.extendTrace(result.data[destIndex], framePtr.data[i]);\n }\n }\n }\n return result;\n };\n plots.recomputeFrameHash = function(gd) {\n var hash = gd._transitionData._frameHash = {};\n var frames = gd._transitionData._frames;\n for (var i = 0; i < frames.length; i++) {\n var frame = frames[i];\n if (frame && frame.name) {\n hash[frame.name] = frame;\n }\n }\n };\n plots.extendObjectWithContainers = function(dest, src, containerPaths) {\n var containerProp, containerVal, i, j, srcProp, destProp, srcContainer, destContainer;\n var copy = Lib.extendDeepNoArrays({}, src || {});\n var expandedObj = Lib.expandObjectPaths(copy);\n var containerObj = {};\n if (containerPaths && containerPaths.length) {\n for (i = 0; i < containerPaths.length; i++) {\n containerProp = Lib.nestedProperty(expandedObj, containerPaths[i]);\n containerVal = containerProp.get();\n if (containerVal === void 0) {\n Lib.nestedProperty(containerObj, containerPaths[i]).set(null);\n } else {\n containerProp.set(null);\n Lib.nestedProperty(containerObj, containerPaths[i]).set(containerVal);\n }\n }\n }\n dest = Lib.extendDeepNoArrays(dest || {}, expandedObj);\n if (containerPaths && containerPaths.length) {\n for (i = 0; i < containerPaths.length; i++) {\n srcProp = Lib.nestedProperty(containerObj, containerPaths[i]);\n srcContainer = srcProp.get();\n if (!srcContainer) continue;\n destProp = Lib.nestedProperty(dest, containerPaths[i]);\n destContainer = destProp.get();\n if (!Array.isArray(destContainer)) {\n destContainer = [];\n destProp.set(destContainer);\n }\n for (j = 0; j < srcContainer.length; j++) {\n var srcObj = srcContainer[j];\n if (srcObj === null) destContainer[j] = null;\n else {\n destContainer[j] = plots.extendObjectWithContainers(destContainer[j], srcObj);\n }\n }\n destProp.set(destContainer);\n }\n }\n return dest;\n };\n plots.dataArrayContainers = [\"transforms\", \"dimensions\"];\n plots.layoutArrayContainers = Registry.layoutArrayContainers;\n plots.extendTrace = function(destTrace, srcTrace) {\n return plots.extendObjectWithContainers(destTrace, srcTrace, plots.dataArrayContainers);\n };\n plots.extendLayout = function(destLayout, srcLayout) {\n return plots.extendObjectWithContainers(destLayout, srcLayout, plots.layoutArrayContainers);\n };\n plots.transition = function(gd, data, layout, traces, frameOpts, transitionOpts) {\n var opts = { redraw: frameOpts.redraw };\n var transitionedTraces = {};\n var axEdits = [];\n opts.prepareFn = function() {\n var dataLength = Array.isArray(data) ? data.length : 0;\n var traceIndices = traces.slice(0, dataLength);\n for (var i = 0; i < traceIndices.length; i++) {\n var traceIdx = traceIndices[i];\n var trace = gd._fullData[traceIdx];\n var _module = trace._module;\n if (!_module) continue;\n if (_module.animatable) {\n var n = _module.basePlotModule.name;\n if (!transitionedTraces[n]) transitionedTraces[n] = [];\n transitionedTraces[n].push(traceIdx);\n }\n gd.data[traceIndices[i]] = plots.extendTrace(gd.data[traceIndices[i]], data[i]);\n }\n var layoutUpdate = Lib.expandObjectPaths(Lib.extendDeepNoArrays({}, layout));\n var axisAttrRe = /^[xy]axis[0-9]*$/;\n for (var attr in layoutUpdate) {\n if (!axisAttrRe.test(attr)) continue;\n delete layoutUpdate[attr].range;\n }\n plots.extendLayout(gd.layout, layoutUpdate);\n delete gd.calcdata;\n plots.supplyDefaults(gd);\n plots.doCalcdata(gd);\n var newLayout = Lib.expandObjectPaths(layout);\n if (newLayout) {\n var subplots = gd._fullLayout._plots;\n for (var k in subplots) {\n var plotinfo = subplots[k];\n var xa = plotinfo.xaxis;\n var ya = plotinfo.yaxis;\n var xr0 = xa.range.slice();\n var yr0 = ya.range.slice();\n var xr1 = null;\n var yr1 = null;\n var editX = null;\n var editY = null;\n if (Array.isArray(newLayout[xa._name + \".range\"])) {\n xr1 = newLayout[xa._name + \".range\"].slice();\n } else if (Array.isArray((newLayout[xa._name] || {}).range)) {\n xr1 = newLayout[xa._name].range.slice();\n }\n if (Array.isArray(newLayout[ya._name + \".range\"])) {\n yr1 = newLayout[ya._name + \".range\"].slice();\n } else if (Array.isArray((newLayout[ya._name] || {}).range)) {\n yr1 = newLayout[ya._name].range.slice();\n }\n if (xr0 && xr1 && (xa.r2l(xr0[0]) !== xa.r2l(xr1[0]) || xa.r2l(xr0[1]) !== xa.r2l(xr1[1]))) {\n editX = { xr0, xr1 };\n }\n if (yr0 && yr1 && (ya.r2l(yr0[0]) !== ya.r2l(yr1[0]) || ya.r2l(yr0[1]) !== ya.r2l(yr1[1]))) {\n editY = { yr0, yr1 };\n }\n if (editX || editY) {\n axEdits.push(Lib.extendFlat({ plotinfo }, editX, editY));\n }\n }\n }\n return Promise.resolve();\n };\n opts.runFn = function(makeCallback) {\n var traceTransitionOpts;\n var basePlotModules = gd._fullLayout._basePlotModules;\n var hasAxisTransition = axEdits.length;\n var i;\n if (layout) {\n for (i = 0; i < basePlotModules.length; i++) {\n if (basePlotModules[i].transitionAxes) {\n basePlotModules[i].transitionAxes(gd, axEdits, transitionOpts, makeCallback);\n }\n }\n }\n if (hasAxisTransition) {\n traceTransitionOpts = Lib.extendFlat({}, transitionOpts);\n traceTransitionOpts.duration = 0;\n delete transitionedTraces.cartesian;\n } else {\n traceTransitionOpts = transitionOpts;\n }\n for (var n in transitionedTraces) {\n var traceIndices = transitionedTraces[n];\n var _module = gd._fullData[traceIndices[0]]._module;\n _module.basePlotModule.plot(gd, traceIndices, traceTransitionOpts, makeCallback);\n }\n };\n return _transition(gd, transitionOpts, opts);\n };\n plots.transitionFromReact = function(gd, restyleFlags, relayoutFlags, oldFullLayout) {\n var fullLayout = gd._fullLayout;\n var transitionOpts = fullLayout.transition;\n var opts = {};\n var axEdits = [];\n opts.prepareFn = function() {\n var subplots = fullLayout._plots;\n opts.redraw = false;\n if (restyleFlags.anim === \"some\") opts.redraw = true;\n if (relayoutFlags.anim === \"some\") opts.redraw = true;\n for (var k in subplots) {\n var plotinfo = subplots[k];\n var xa = plotinfo.xaxis;\n var ya = plotinfo.yaxis;\n var xr0 = oldFullLayout[xa._name].range.slice();\n var yr0 = oldFullLayout[ya._name].range.slice();\n var xr1 = xa.range.slice();\n var yr1 = ya.range.slice();\n xa.setScale();\n ya.setScale();\n var editX = null;\n var editY = null;\n if (xa.r2l(xr0[0]) !== xa.r2l(xr1[0]) || xa.r2l(xr0[1]) !== xa.r2l(xr1[1])) {\n editX = { xr0, xr1 };\n }\n if (ya.r2l(yr0[0]) !== ya.r2l(yr1[0]) || ya.r2l(yr0[1]) !== ya.r2l(yr1[1])) {\n editY = { yr0, yr1 };\n }\n if (editX || editY) {\n axEdits.push(Lib.extendFlat({ plotinfo }, editX, editY));\n }\n }\n return Promise.resolve();\n };\n opts.runFn = function(makeCallback) {\n var fullData = gd._fullData;\n var fullLayout2 = gd._fullLayout;\n var basePlotModules = fullLayout2._basePlotModules;\n var axisTransitionOpts;\n var traceTransitionOpts;\n var transitionedTraces;\n var allTraceIndices = [];\n for (var i = 0; i < fullData.length; i++) {\n allTraceIndices.push(i);\n }\n function transitionAxes() {\n if (!gd._fullLayout) return;\n for (var j = 0; j < basePlotModules.length; j++) {\n if (basePlotModules[j].transitionAxes) {\n basePlotModules[j].transitionAxes(gd, axEdits, axisTransitionOpts, makeCallback);\n }\n }\n }\n function transitionTraces() {\n if (!gd._fullLayout) return;\n for (var j = 0; j < basePlotModules.length; j++) {\n basePlotModules[j].plot(gd, transitionedTraces, traceTransitionOpts, makeCallback);\n }\n }\n if (axEdits.length && restyleFlags.anim) {\n if (transitionOpts.ordering === \"traces first\") {\n axisTransitionOpts = Lib.extendFlat({}, transitionOpts, { duration: 0 });\n transitionedTraces = allTraceIndices;\n traceTransitionOpts = transitionOpts;\n setTimeout(transitionAxes, transitionOpts.duration);\n transitionTraces();\n } else {\n axisTransitionOpts = transitionOpts;\n transitionedTraces = null;\n traceTransitionOpts = Lib.extendFlat({}, transitionOpts, { duration: 0 });\n setTimeout(transitionTraces, axisTransitionOpts.duration);\n transitionAxes();\n }\n } else if (axEdits.length) {\n axisTransitionOpts = transitionOpts;\n transitionAxes();\n } else if (restyleFlags.anim) {\n transitionedTraces = allTraceIndices;\n traceTransitionOpts = transitionOpts;\n transitionTraces();\n }\n };\n return _transition(gd, transitionOpts, opts);\n };\n function _transition(gd, transitionOpts, opts) {\n var aborted = false;\n function executeCallbacks(list) {\n var p = Promise.resolve();\n if (!list) return p;\n while (list.length) {\n p = p.then(list.shift());\n }\n return p;\n }\n function flushCallbacks(list) {\n if (!list) return;\n while (list.length) {\n list.shift();\n }\n }\n function executeTransitions() {\n gd.emit(\"plotly_transitioning\", []);\n return new Promise(function(resolve) {\n gd._transitioning = true;\n if (transitionOpts.duration > 0) {\n gd._transitioningWithDuration = true;\n }\n gd._transitionData._interruptCallbacks.push(function() {\n aborted = true;\n });\n if (opts.redraw) {\n gd._transitionData._interruptCallbacks.push(function() {\n return Registry.call(\"redraw\", gd);\n });\n }\n gd._transitionData._interruptCallbacks.push(function() {\n gd.emit(\"plotly_transitioninterrupted\", []);\n });\n var numCallbacks = 0;\n var numCompleted = 0;\n function makeCallback() {\n numCallbacks++;\n return function() {\n numCompleted++;\n if (!aborted && numCompleted === numCallbacks) {\n completeTransition(resolve);\n }\n };\n }\n opts.runFn(makeCallback);\n setTimeout(makeCallback());\n });\n }\n function completeTransition(callback) {\n if (!gd._transitionData) return;\n flushCallbacks(gd._transitionData._interruptCallbacks);\n return Promise.resolve().then(function() {\n if (opts.redraw) {\n return Registry.call(\"redraw\", gd);\n }\n }).then(function() {\n gd._transitioning = false;\n gd._transitioningWithDuration = false;\n gd.emit(\"plotly_transitioned\", []);\n }).then(callback);\n }\n function interruptPreviousTransitions() {\n if (!gd._transitionData) return;\n gd._transitioning = false;\n return executeCallbacks(gd._transitionData._interruptCallbacks);\n }\n var seq = [\n plots.previousPromises,\n interruptPreviousTransitions,\n opts.prepareFn,\n plots.rehover,\n plots.reselect,\n executeTransitions\n ];\n var transitionStarting = Lib.syncOrAsync(seq, gd);\n if (!transitionStarting || !transitionStarting.then) {\n transitionStarting = Promise.resolve();\n }\n return transitionStarting.then(function() {\n return gd;\n });\n }\n plots.doCalcdata = function(gd, traces) {\n var axList = axisIDs.list(gd);\n var fullData = gd._fullData;\n var fullLayout = gd._fullLayout;\n var trace, _module, i, j;\n var calcdata = new Array(fullData.length);\n var oldCalcdata = (gd.calcdata || []).slice();\n gd.calcdata = calcdata;\n fullLayout._numBoxes = 0;\n fullLayout._numViolins = 0;\n fullLayout._violinScaleGroupStats = {};\n gd._hmpixcount = 0;\n gd._hmlumcount = 0;\n fullLayout._piecolormap = {};\n fullLayout._sunburstcolormap = {};\n fullLayout._treemapcolormap = {};\n fullLayout._iciclecolormap = {};\n fullLayout._funnelareacolormap = {};\n for (i = 0; i < fullData.length; i++) {\n if (Array.isArray(traces) && traces.indexOf(i) === -1) {\n calcdata[i] = oldCalcdata[i];\n continue;\n }\n }\n for (i = 0; i < fullData.length; i++) {\n trace = fullData[i];\n trace._arrayAttrs = PlotSchema.findArrayAttributes(trace);\n trace._extremes = {};\n }\n var polarIds = fullLayout._subplots.polar || [];\n for (i = 0; i < polarIds.length; i++) {\n axList.push(\n fullLayout[polarIds[i]].radialaxis,\n fullLayout[polarIds[i]].angularaxis\n );\n }\n for (var k in fullLayout._colorAxes) {\n var cOpts = fullLayout[k];\n if (cOpts.cauto !== false) {\n delete cOpts.cmin;\n delete cOpts.cmax;\n }\n }\n var hasCalcTransform = false;\n function transformCalci(i2) {\n trace = fullData[i2];\n _module = trace._module;\n if (trace.visible === true && trace.transforms) {\n if (_module && _module.calc) {\n var cdi = _module.calc(gd, trace);\n if (cdi[0] && cdi[0].t && cdi[0].t._scene) {\n delete cdi[0].t._scene.dirty;\n }\n }\n for (j = 0; j < trace.transforms.length; j++) {\n var transform = trace.transforms[j];\n _module = transformsRegistry[transform.type];\n if (_module && _module.calcTransform) {\n trace._hasCalcTransform = true;\n hasCalcTransform = true;\n _module.calcTransform(gd, trace, transform);\n }\n }\n }\n }\n function calci(i2, isContainer) {\n trace = fullData[i2];\n _module = trace._module;\n if (!!_module.isContainer !== isContainer) return;\n var cd = [];\n if (trace.visible === true && trace._length !== 0) {\n delete trace._indexToPoints;\n var transforms = trace.transforms || [];\n for (j = transforms.length - 1; j >= 0; j--) {\n if (transforms[j].enabled) {\n trace._indexToPoints = transforms[j]._indexToPoints;\n break;\n }\n }\n if (_module && _module.calc) {\n cd = _module.calc(gd, trace);\n }\n }\n if (!Array.isArray(cd) || !cd[0]) {\n cd = [{ x: BADNUM, y: BADNUM }];\n }\n if (!cd[0].t) cd[0].t = {};\n cd[0].trace = trace;\n calcdata[i2] = cd;\n }\n setupAxisCategories(axList, fullData, fullLayout);\n for (i = 0; i < fullData.length; i++) calci(i, true);\n for (i = 0; i < fullData.length; i++) transformCalci(i);\n if (hasCalcTransform) setupAxisCategories(axList, fullData, fullLayout);\n for (i = 0; i < fullData.length; i++) calci(i, true);\n for (i = 0; i < fullData.length; i++) calci(i, false);\n doCrossTraceCalc(gd);\n var sorted = sortAxisCategoriesByValue(axList, gd);\n if (sorted.length) {\n fullLayout._numBoxes = 0;\n fullLayout._numViolins = 0;\n for (i = 0; i < sorted.length; i++) calci(sorted[i], true);\n for (i = 0; i < sorted.length; i++) calci(sorted[i], false);\n doCrossTraceCalc(gd);\n }\n Registry.getComponentMethod(\"fx\", \"calc\")(gd);\n Registry.getComponentMethod(\"errorbars\", \"calc\")(gd);\n };\n var sortAxisCategoriesByValueRegex = /(total|sum|min|max|mean|geometric mean|median) (ascending|descending)/;\n function sortAxisCategoriesByValue(axList, gd) {\n var affectedTraces = [];\n var i, j, k, l, o;\n function zMapCategory(type2, ax2, value2) {\n var axLetter2 = ax2._id.charAt(0);\n if (type2 === \"histogram2dcontour\") {\n var counterAxLetter = ax2._counterAxes[0];\n var counterAx = axisIDs.getFromId(gd, counterAxLetter);\n var xCategorical = axLetter2 === \"x\" || counterAxLetter === \"x\" && counterAx.type === \"category\";\n var yCategorical = axLetter2 === \"y\" || counterAxLetter === \"y\" && counterAx.type === \"category\";\n return function(o2, l2) {\n if (o2 === 0 || l2 === 0) return -1;\n if (xCategorical && o2 === value2[l2].length - 1) return -1;\n if (yCategorical && l2 === value2.length - 1) return -1;\n return (axLetter2 === \"y\" ? l2 : o2) - 1;\n };\n } else {\n return function(o2, l2) {\n return axLetter2 === \"y\" ? l2 : o2;\n };\n }\n }\n var aggFn = {\n min: function(values) {\n return Lib.aggNums(Math.min, null, values);\n },\n max: function(values) {\n return Lib.aggNums(Math.max, null, values);\n },\n sum: function(values) {\n return Lib.aggNums(function(a, b) {\n return a + b;\n }, null, values);\n },\n total: function(values) {\n return Lib.aggNums(function(a, b) {\n return a + b;\n }, null, values);\n },\n mean: function(values) {\n return Lib.mean(values);\n },\n \"geometric mean\": function(values) {\n return Lib.geometricMean(values);\n },\n median: function(values) {\n return Lib.median(values);\n }\n };\n function sortAscending(a, b) {\n return a[1] - b[1];\n }\n function sortDescending(a, b) {\n return b[1] - a[1];\n }\n for (i = 0; i < axList.length; i++) {\n var ax = axList[i];\n if (ax.type !== \"category\") continue;\n var match = ax.categoryorder.match(sortAxisCategoriesByValueRegex);\n if (match) {\n var aggregator = match[1];\n var order = match[2];\n var axLetter = ax._id.charAt(0);\n var isX = axLetter === \"x\";\n var categoriesValue = [];\n for (j = 0; j < ax._categories.length; j++) {\n categoriesValue.push([ax._categories[j], []]);\n }\n for (j = 0; j < ax._traceIndices.length; j++) {\n var traceIndex = ax._traceIndices[j];\n var fullTrace = gd._fullData[traceIndex];\n if (fullTrace.visible !== true) continue;\n var type = fullTrace.type;\n if (Registry.traceIs(fullTrace, \"histogram\")) {\n delete fullTrace._xautoBinFinished;\n delete fullTrace._yautoBinFinished;\n }\n var isSplom = type === \"splom\";\n var isScattergl = type === \"scattergl\";\n var cd = gd.calcdata[traceIndex];\n for (k = 0; k < cd.length; k++) {\n var cdi = cd[k];\n var catIndex, value;\n if (isSplom) {\n var currentDimensionIndex = fullTrace._axesDim[ax._id];\n if (!isX) {\n var associatedXAxisID = fullTrace._diag[currentDimensionIndex][0];\n if (associatedXAxisID) ax = gd._fullLayout[axisIDs.id2name(associatedXAxisID)];\n }\n var categories = cdi.trace.dimensions[currentDimensionIndex].values;\n for (l = 0; l < categories.length; l++) {\n catIndex = ax._categoriesMap[categories[l]];\n for (o = 0; o < cdi.trace.dimensions.length; o++) {\n if (o === currentDimensionIndex) continue;\n var dimension = cdi.trace.dimensions[o];\n categoriesValue[catIndex][1].push(dimension.values[l]);\n }\n }\n } else if (isScattergl) {\n for (l = 0; l < cdi.t.x.length; l++) {\n if (isX) {\n catIndex = cdi.t.x[l];\n value = cdi.t.y[l];\n } else {\n catIndex = cdi.t.y[l];\n value = cdi.t.x[l];\n }\n categoriesValue[catIndex][1].push(value);\n }\n if (cdi.t && cdi.t._scene) {\n delete cdi.t._scene.dirty;\n }\n } else if (cdi.hasOwnProperty(\"z\")) {\n value = cdi.z;\n var mapping = zMapCategory(fullTrace.type, ax, value);\n for (l = 0; l < value.length; l++) {\n for (o = 0; o < value[l].length; o++) {\n catIndex = mapping(o, l);\n if (catIndex + 1) categoriesValue[catIndex][1].push(value[l][o]);\n }\n }\n } else {\n catIndex = cdi.p;\n if (catIndex === void 0) catIndex = cdi[axLetter];\n value = cdi.s;\n if (value === void 0) value = cdi.v;\n if (value === void 0) value = isX ? cdi.y : cdi.x;\n if (!Array.isArray(value)) {\n if (value === void 0) value = [];\n else value = [value];\n }\n for (l = 0; l < value.length; l++) {\n categoriesValue[catIndex][1].push(value[l]);\n }\n }\n }\n }\n ax._categoriesValue = categoriesValue;\n var categoriesAggregatedValue = [];\n for (j = 0; j < categoriesValue.length; j++) {\n categoriesAggregatedValue.push([\n categoriesValue[j][0],\n aggFn[aggregator](categoriesValue[j][1])\n ]);\n }\n categoriesAggregatedValue.sort(order === \"descending\" ? sortDescending : sortAscending);\n ax._categoriesAggregatedValue = categoriesAggregatedValue;\n ax._initialCategories = categoriesAggregatedValue.map(function(c) {\n return c[0];\n });\n affectedTraces = affectedTraces.concat(ax.sortByInitialCategories());\n }\n }\n return affectedTraces;\n }\n function setupAxisCategories(axList, fullData, fullLayout) {\n var axLookup = {};\n function setupOne(ax) {\n ax.clearCalc();\n if (ax.type === \"multicategory\") {\n ax.setupMultiCategory(fullData);\n }\n axLookup[ax._id] = 1;\n }\n Lib.simpleMap(axList, setupOne);\n var matchGroups = fullLayout._axisMatchGroups || [];\n for (var i = 0; i < matchGroups.length; i++) {\n for (var axId in matchGroups[i]) {\n if (!axLookup[axId]) {\n setupOne(fullLayout[axisIDs.id2name(axId)]);\n }\n }\n }\n }\n function doCrossTraceCalc(gd) {\n var fullLayout = gd._fullLayout;\n var modules = fullLayout._visibleModules;\n var hash = {};\n var i, j, k;\n for (j = 0; j < modules.length; j++) {\n var _module = modules[j];\n var fn = _module.crossTraceCalc;\n if (fn) {\n var spType = _module.basePlotModule.name;\n if (hash[spType]) {\n Lib.pushUnique(hash[spType], fn);\n } else {\n hash[spType] = [fn];\n }\n }\n }\n for (k in hash) {\n var methods = hash[k];\n var subplots = fullLayout._subplots[k];\n if (Array.isArray(subplots)) {\n for (i = 0; i < subplots.length; i++) {\n var sp = subplots[i];\n var spInfo = k === \"cartesian\" ? fullLayout._plots[sp] : fullLayout[sp];\n for (j = 0; j < methods.length; j++) {\n methods[j](gd, spInfo, sp);\n }\n }\n } else {\n for (j = 0; j < methods.length; j++) {\n methods[j](gd);\n }\n }\n }\n }\n plots.rehover = function(gd) {\n if (gd._fullLayout._rehover) {\n gd._fullLayout._rehover();\n }\n };\n plots.redrag = function(gd) {\n if (gd._fullLayout._redrag) {\n gd._fullLayout._redrag();\n }\n };\n plots.reselect = function(gd) {\n var fullLayout = gd._fullLayout;\n var A = (gd.layout || {}).selections;\n var B = fullLayout._previousSelections;\n fullLayout._previousSelections = A;\n var mayEmitSelected = fullLayout._reselect || JSON.stringify(A) !== JSON.stringify(B);\n Registry.getComponentMethod(\"selections\", \"reselect\")(gd, mayEmitSelected);\n };\n plots.generalUpdatePerTraceModule = function(gd, subplot, subplotCalcData, subplotLayout) {\n var traceHashOld = subplot.traceHash;\n var traceHash = {};\n var i;\n for (i = 0; i < subplotCalcData.length; i++) {\n var calcTraces = subplotCalcData[i];\n var trace = calcTraces[0].trace;\n if (trace.visible) {\n traceHash[trace.type] = traceHash[trace.type] || [];\n traceHash[trace.type].push(calcTraces);\n }\n }\n for (var moduleNameOld in traceHashOld) {\n if (!traceHash[moduleNameOld]) {\n var fakeCalcTrace = traceHashOld[moduleNameOld][0];\n var fakeTrace = fakeCalcTrace[0].trace;\n fakeTrace.visible = false;\n traceHash[moduleNameOld] = [fakeCalcTrace];\n }\n }\n for (var moduleName in traceHash) {\n var moduleCalcData = traceHash[moduleName];\n var _module = moduleCalcData[0][0].trace._module;\n _module.plot(gd, subplot, Lib.filterVisible(moduleCalcData), subplotLayout);\n }\n subplot.traceHash = traceHash;\n };\n plots.plotBasePlot = function(desiredType, gd, traces, transitionOpts, makeOnCompleteCallback) {\n var _module = Registry.getModule(desiredType);\n var cdmodule = getModuleCalcData(gd.calcdata, _module)[0];\n _module.plot(gd, cdmodule, transitionOpts, makeOnCompleteCallback);\n };\n plots.cleanBasePlot = function(desiredType, newFullData, newFullLayout, oldFullData, oldFullLayout) {\n var had = oldFullLayout._has && oldFullLayout._has(desiredType);\n var has = newFullLayout._has && newFullLayout._has(desiredType);\n if (had && !has) {\n oldFullLayout[\"_\" + desiredType + \"layer\"].selectAll(\"g.trace\").remove();\n }\n };\n }\n });\n\n // src/constants/xmlns_namespaces.js\n var require_xmlns_namespaces = __commonJS({\n \"src/constants/xmlns_namespaces.js\"(exports) {\n \"use strict\";\n exports.xmlns = \"http://www.w3.org/2000/xmlns/\";\n exports.svg = \"http://www.w3.org/2000/svg\";\n exports.xlink = \"http://www.w3.org/1999/xlink\";\n exports.svgAttrs = {\n xmlns: exports.svg,\n \"xmlns:xlink\": exports.xlink\n };\n }\n });\n\n // src/constants/alignment.js\n var require_alignment = __commonJS({\n \"src/constants/alignment.js\"(exports, module) {\n \"use strict\";\n module.exports = {\n // from bottom left: this is the origin of our paper-reference\n // positioning system\n FROM_BL: {\n left: 0,\n center: 0.5,\n right: 1,\n bottom: 0,\n middle: 0.5,\n top: 1\n },\n // from top left: this is the screen pixel positioning origin\n FROM_TL: {\n left: 0,\n center: 0.5,\n right: 1,\n bottom: 1,\n middle: 0.5,\n top: 0\n },\n // from bottom right: sometimes you just need the opposite of ^^\n FROM_BR: {\n left: 1,\n center: 0.5,\n right: 0,\n bottom: 0,\n middle: 0.5,\n top: 1\n },\n // multiple of fontSize to get the vertical offset between lines\n LINE_SPACING: 1.3,\n // multiple of fontSize to shift from the baseline\n // to the cap (captical letter) line\n // (to use when we don't calculate this shift from Drawing.bBox)\n // This is an approximation since in reality cap height can differ\n // from font to font. However, according to Wikipedia\n // an \"average\" font might have a cap height of 70% of the em\n // https://en.wikipedia.org/wiki/Em_(typography)#History\n CAP_SHIFT: 0.7,\n // half the cap height (distance between baseline and cap line)\n // of an \"average\" font (for more info see above).\n MID_SHIFT: 0.35,\n OPPOSITE_SIDE: {\n left: \"right\",\n right: \"left\",\n top: \"bottom\",\n bottom: \"top\"\n }\n };\n }\n });\n\n // src/lib/svg_text_utils.js\n var require_svg_text_utils = __commonJS({\n \"src/lib/svg_text_utils.js\"(exports) {\n \"use strict\";\n var d3 = require_d3();\n var Lib = require_lib();\n var strTranslate = Lib.strTranslate;\n var xmlnsNamespaces = require_xmlns_namespaces();\n var LINE_SPACING = require_alignment().LINE_SPACING;\n var FIND_TEX = /([^$]*)([$]+[^$]*[$]+)([^$]*)/;\n exports.convertToTspans = function(_context, gd, _callback) {\n var str = _context.text();\n var tex = !_context.attr(\"data-notex\") && gd && gd._context.typesetMath && typeof MathJax !== \"undefined\" && str.match(FIND_TEX);\n var parent = d3.select(_context.node().parentNode);\n if (parent.empty()) return;\n var svgClass = _context.attr(\"class\") ? _context.attr(\"class\").split(\" \")[0] : \"text\";\n svgClass += \"-math\";\n parent.selectAll(\"svg.\" + svgClass).remove();\n parent.selectAll(\"g.\" + svgClass + \"-group\").remove();\n _context.style(\"display\", null).attr({\n // some callers use data-unformatted *from the element* in 'cancel'\n // so we need it here even if we're going to turn it into math\n // these two (plus style and text-anchor attributes) form the key we're\n // going to use for Drawing.bBox\n \"data-unformatted\": str,\n \"data-math\": \"N\"\n });\n function showText() {\n if (!parent.empty()) {\n svgClass = _context.attr(\"class\") + \"-math\";\n parent.select(\"svg.\" + svgClass).remove();\n }\n _context.text(\"\").style(\"white-space\", \"pre\");\n var hasLink = buildSVGText(_context.node(), str);\n if (hasLink) {\n _context.style(\"pointer-events\", \"all\");\n }\n exports.positionText(_context);\n if (_callback) _callback.call(_context);\n }\n if (tex) {\n (gd && gd._promises || []).push(new Promise(function(resolve) {\n _context.style(\"display\", \"none\");\n var fontSize = parseInt(_context.node().style.fontSize, 10);\n var config = { fontSize };\n texToSVG(tex[2], config, function(_svgEl, _glyphDefs, _svgBBox) {\n parent.selectAll(\"svg.\" + svgClass).remove();\n parent.selectAll(\"g.\" + svgClass + \"-group\").remove();\n var newSvg = _svgEl && _svgEl.select(\"svg\");\n if (!newSvg || !newSvg.node()) {\n showText();\n resolve();\n return;\n }\n var mathjaxGroup = parent.append(\"g\").classed(svgClass + \"-group\", true).attr({\n \"pointer-events\": \"none\",\n \"data-unformatted\": str,\n \"data-math\": \"Y\"\n });\n mathjaxGroup.node().appendChild(newSvg.node());\n if (_glyphDefs && _glyphDefs.node()) {\n newSvg.node().insertBefore(\n _glyphDefs.node().cloneNode(true),\n newSvg.node().firstChild\n );\n }\n var w0 = _svgBBox.width;\n var h0 = _svgBBox.height;\n newSvg.attr({\n class: svgClass,\n height: h0,\n preserveAspectRatio: \"xMinYMin meet\"\n }).style({ overflow: \"visible\", \"pointer-events\": \"none\" });\n var fill = _context.node().style.fill || \"black\";\n var g = newSvg.select(\"g\");\n g.attr({ fill, stroke: fill });\n var bb = g.node().getBoundingClientRect();\n var w = bb.width;\n var h = bb.height;\n if (w > w0 || h > h0) {\n newSvg.style(\"overflow\", \"hidden\");\n bb = newSvg.node().getBoundingClientRect();\n w = bb.width;\n h = bb.height;\n }\n var x = +_context.attr(\"x\");\n var y = +_context.attr(\"y\");\n var textHeight = fontSize || _context.node().getBoundingClientRect().height;\n var dy = -textHeight / 4;\n if (svgClass[0] === \"y\") {\n mathjaxGroup.attr({\n transform: \"rotate(\" + [-90, x, y] + \")\" + strTranslate(-w / 2, dy - h / 2)\n });\n } else if (svgClass[0] === \"l\") {\n y = dy - h / 2;\n } else if (svgClass[0] === \"a\" && svgClass.indexOf(\"atitle\") !== 0) {\n x = 0;\n y = dy;\n } else {\n var anchor = _context.attr(\"text-anchor\");\n x = x - w * (anchor === \"middle\" ? 0.5 : anchor === \"end\" ? 1 : 0);\n y = y + dy - h / 2;\n }\n newSvg.attr({\n x,\n y\n });\n if (_callback) _callback.call(_context, mathjaxGroup);\n resolve(mathjaxGroup);\n });\n }));\n } else showText();\n return _context;\n };\n var LT_MATCH = /(<|<|<)/g;\n var GT_MATCH = /(>|>|>)/g;\n function cleanEscapesForTex(s) {\n return s.replace(LT_MATCH, \"\\\\lt \").replace(GT_MATCH, \"\\\\gt \");\n }\n var inlineMath = [[\"$\", \"$\"], [\"\\\\(\", \"\\\\)\"]];\n function texToSVG(_texString, _config, _callback) {\n var MathJaxVersion = parseInt(\n (MathJax.version || \"\").split(\".\")[0]\n );\n if (MathJaxVersion !== 2 && MathJaxVersion !== 3) {\n Lib.warn(\"No MathJax version:\", MathJax.version);\n return;\n }\n var originalRenderer, originalConfig, originalProcessSectionDelay, tmpDiv;\n var setConfig2 = function() {\n originalConfig = Lib.extendDeepAll({}, MathJax.Hub.config);\n originalProcessSectionDelay = MathJax.Hub.processSectionDelay;\n if (MathJax.Hub.processSectionDelay !== void 0) {\n MathJax.Hub.processSectionDelay = 0;\n }\n return MathJax.Hub.Config({\n messageStyle: \"none\",\n tex2jax: {\n inlineMath\n },\n displayAlign: \"left\"\n });\n };\n var setConfig3 = function() {\n originalConfig = Lib.extendDeepAll({}, MathJax.config);\n if (!MathJax.config.tex) {\n MathJax.config.tex = {};\n }\n MathJax.config.tex.inlineMath = inlineMath;\n };\n var setRenderer2 = function() {\n originalRenderer = MathJax.Hub.config.menuSettings.renderer;\n if (originalRenderer !== \"SVG\") {\n return MathJax.Hub.setRenderer(\"SVG\");\n }\n };\n var setRenderer3 = function() {\n originalRenderer = MathJax.config.startup.output;\n if (originalRenderer !== \"svg\") {\n MathJax.config.startup.output = \"svg\";\n }\n };\n var initiateMathJax = function() {\n var randomID = \"math-output-\" + Lib.randstr({}, 64);\n tmpDiv = d3.select(\"body\").append(\"div\").attr({ id: randomID }).style({\n visibility: \"hidden\",\n position: \"absolute\",\n \"font-size\": _config.fontSize + \"px\"\n }).text(cleanEscapesForTex(_texString));\n var tmpNode = tmpDiv.node();\n return MathJaxVersion === 2 ? MathJax.Hub.Typeset(tmpNode) : MathJax.typeset([tmpNode]);\n };\n var finalizeMathJax = function() {\n var sel = tmpDiv.select(\n MathJaxVersion === 2 ? \".MathJax_SVG\" : \".MathJax\"\n );\n var node = !sel.empty() && tmpDiv.select(\"svg\").node();\n if (!node) {\n Lib.log(\"There was an error in the tex syntax.\", _texString);\n _callback();\n } else {\n var nodeBBox = node.getBoundingClientRect();\n var glyphDefs;\n if (MathJaxVersion === 2) {\n glyphDefs = d3.select(\"body\").select(\"#MathJax_SVG_glyphs\");\n } else {\n glyphDefs = sel.select(\"defs\");\n }\n _callback(sel, glyphDefs, nodeBBox);\n }\n tmpDiv.remove();\n };\n var resetRenderer2 = function() {\n if (originalRenderer !== \"SVG\") {\n return MathJax.Hub.setRenderer(originalRenderer);\n }\n };\n var resetRenderer3 = function() {\n if (originalRenderer !== \"svg\") {\n MathJax.config.startup.output = originalRenderer;\n }\n };\n var resetConfig2 = function() {\n if (originalProcessSectionDelay !== void 0) {\n MathJax.Hub.processSectionDelay = originalProcessSectionDelay;\n }\n return MathJax.Hub.Config(originalConfig);\n };\n var resetConfig3 = function() {\n MathJax.config = originalConfig;\n };\n if (MathJaxVersion === 2) {\n MathJax.Hub.Queue(\n setConfig2,\n setRenderer2,\n initiateMathJax,\n finalizeMathJax,\n resetRenderer2,\n resetConfig2\n );\n } else if (MathJaxVersion === 3) {\n setConfig3();\n setRenderer3();\n MathJax.startup.defaultReady();\n MathJax.startup.promise.then(function() {\n initiateMathJax();\n finalizeMathJax();\n resetRenderer3();\n resetConfig3();\n });\n }\n }\n var TAG_STYLES = {\n // would like to use baseline-shift for sub/sup but FF doesn't support it\n // so we need to use dy along with the uber hacky shift-back-to\n // baseline below\n sup: \"font-size:70%\",\n sub: \"font-size:70%\",\n s: \"text-decoration:line-through\",\n u: \"text-decoration:underline\",\n b: \"font-weight:bold\",\n i: \"font-style:italic\",\n a: \"cursor:pointer\",\n span: \"\",\n em: \"font-style:italic;font-weight:bold\"\n };\n var SHIFT_DY = {\n sub: \"0.3em\",\n sup: \"-0.6em\"\n };\n var RESET_DY = {\n sub: \"-0.21em\",\n sup: \"0.42em\"\n };\n var ZERO_WIDTH_SPACE = \"\\u200B\";\n var PROTOCOLS = [\"http:\", \"https:\", \"mailto:\", \"\", void 0, \":\"];\n var NEWLINES = exports.NEWLINES = /(\\r\\n?|\\n)/g;\n var SPLIT_TAGS = /(<[^<>]*>)/;\n var ONE_TAG = /<(\\/?)([^ >]*)(\\s+(.*))?>/i;\n var BR_TAG = //i;\n exports.BR_TAG_ALL = //gi;\n var STYLEMATCH = /(^|[\\s\"'])style\\s*=\\s*(\"([^\"]*);?\"|'([^']*);?')/i;\n var HREFMATCH = /(^|[\\s\"'])href\\s*=\\s*(\"([^\"]*)\"|'([^']*)')/i;\n var TARGETMATCH = /(^|[\\s\"'])target\\s*=\\s*(\"([^\"\\s]*)\"|'([^'\\s]*)')/i;\n var POPUPMATCH = /(^|[\\s\"'])popup\\s*=\\s*(\"([\\w=,]*)\"|'([\\w=,]*)')/i;\n function getQuotedMatch(_str, re) {\n if (!_str) return null;\n var match = _str.match(re);\n var result = match && (match[3] || match[4]);\n return result && convertEntities(result);\n }\n var COLORMATCH = /(^|;)\\s*color:/;\n exports.plainText = function(_str, opts) {\n opts = opts || {};\n var len = opts.len !== void 0 && opts.len !== -1 ? opts.len : Infinity;\n var allowedTags = opts.allowedTags !== void 0 ? opts.allowedTags : [\"br\"];\n var ellipsis = \"...\";\n var eLen = ellipsis.length;\n var oldParts = _str.split(SPLIT_TAGS);\n var newParts = [];\n var prevTag = \"\";\n var l = 0;\n for (var i = 0; i < oldParts.length; i++) {\n var p = oldParts[i];\n var match = p.match(ONE_TAG);\n var tagType = match && match[2].toLowerCase();\n if (tagType) {\n if (allowedTags.indexOf(tagType) !== -1) {\n newParts.push(p);\n prevTag = tagType;\n }\n } else {\n var pLen = p.length;\n if (l + pLen < len) {\n newParts.push(p);\n l += pLen;\n } else if (l < len) {\n var pLen2 = len - l;\n if (prevTag && (prevTag !== \"br\" || pLen2 <= eLen || pLen <= eLen)) {\n newParts.pop();\n }\n if (len > eLen) {\n newParts.push(p.substr(0, pLen2 - eLen) + ellipsis);\n } else {\n newParts.push(p.substr(0, pLen2));\n }\n break;\n }\n prevTag = \"\";\n }\n }\n return newParts.join(\"\");\n };\n var entityToUnicode = {\n mu: \"\\u03BC\",\n amp: \"&\",\n lt: \"<\",\n gt: \">\",\n nbsp: \"\\xA0\",\n times: \"\\xD7\",\n plusmn: \"\\xB1\",\n deg: \"\\xB0\"\n };\n var ENTITY_MATCH = /&(#\\d+|#x[\\da-fA-F]+|[a-z]+);/g;\n function convertEntities(_str) {\n return _str.replace(ENTITY_MATCH, function(fullMatch, innerMatch) {\n var outChar;\n if (innerMatch.charAt(0) === \"#\") {\n outChar = fromCodePoint(\n innerMatch.charAt(1) === \"x\" ? parseInt(innerMatch.substr(2), 16) : parseInt(innerMatch.substr(1), 10)\n );\n } else outChar = entityToUnicode[innerMatch];\n return outChar || fullMatch;\n });\n }\n exports.convertEntities = convertEntities;\n function fromCodePoint(code) {\n if (code > 1114111) return;\n var stringFromCodePoint = String.fromCodePoint;\n if (stringFromCodePoint) return stringFromCodePoint(code);\n var stringFromCharCode = String.fromCharCode;\n if (code <= 65535) return stringFromCharCode(code);\n return stringFromCharCode(\n (code >> 10) + 55232,\n code % 1024 + 56320\n );\n }\n function buildSVGText(containerNode, str) {\n str = str.replace(NEWLINES, \" \");\n var hasLink = false;\n var nodeStack = [];\n var currentNode;\n var currentLine = -1;\n function newLine() {\n currentLine++;\n var lineNode = document.createElementNS(xmlnsNamespaces.svg, \"tspan\");\n d3.select(lineNode).attr({\n class: \"line\",\n dy: currentLine * LINE_SPACING + \"em\"\n });\n containerNode.appendChild(lineNode);\n currentNode = lineNode;\n var oldNodeStack = nodeStack;\n nodeStack = [{ node: lineNode }];\n if (oldNodeStack.length > 1) {\n for (var i2 = 1; i2 < oldNodeStack.length; i2++) {\n enterNode(oldNodeStack[i2]);\n }\n }\n }\n function enterNode(nodeSpec2) {\n var type = nodeSpec2.type;\n var nodeAttrs = {};\n var nodeType;\n if (type === \"a\") {\n nodeType = \"a\";\n var target = nodeSpec2.target;\n var href2 = nodeSpec2.href;\n var popup = nodeSpec2.popup;\n if (href2) {\n nodeAttrs = {\n \"xlink:xlink:show\": target === \"_blank\" || target.charAt(0) !== \"_\" ? \"new\" : \"replace\",\n target,\n \"xlink:xlink:href\": href2\n };\n if (popup) {\n nodeAttrs.onclick = 'window.open(this.href.baseVal,this.target.baseVal,\"' + popup + '\");return false;';\n }\n }\n } else nodeType = \"tspan\";\n if (nodeSpec2.style) nodeAttrs.style = nodeSpec2.style;\n var newNode = document.createElementNS(xmlnsNamespaces.svg, nodeType);\n if (type === \"sup\" || type === \"sub\") {\n addTextNode(currentNode, ZERO_WIDTH_SPACE);\n currentNode.appendChild(newNode);\n var resetter = document.createElementNS(xmlnsNamespaces.svg, \"tspan\");\n addTextNode(resetter, ZERO_WIDTH_SPACE);\n d3.select(resetter).attr(\"dy\", RESET_DY[type]);\n nodeAttrs.dy = SHIFT_DY[type];\n currentNode.appendChild(newNode);\n currentNode.appendChild(resetter);\n } else {\n currentNode.appendChild(newNode);\n }\n d3.select(newNode).attr(nodeAttrs);\n currentNode = nodeSpec2.node = newNode;\n nodeStack.push(nodeSpec2);\n }\n function addTextNode(node, text) {\n node.appendChild(document.createTextNode(text));\n }\n function exitNode(type) {\n if (nodeStack.length === 1) {\n Lib.log(\"Ignoring unexpected end tag .\", str);\n return;\n }\n var innerNode = nodeStack.pop();\n if (type !== innerNode.type) {\n Lib.log(\"Start tag <\" + innerNode.type + \"> doesnt match end tag <\" + type + \">. Pretending it did match.\", str);\n }\n currentNode = nodeStack[nodeStack.length - 1].node;\n }\n var hasLines = BR_TAG.test(str);\n if (hasLines) newLine();\n else {\n currentNode = containerNode;\n nodeStack = [{ node: containerNode }];\n }\n var parts = str.split(SPLIT_TAGS);\n for (var i = 0; i < parts.length; i++) {\n var parti = parts[i];\n var match = parti.match(ONE_TAG);\n var tagType = match && match[2].toLowerCase();\n var tagStyle = TAG_STYLES[tagType];\n if (tagType === \"br\") {\n newLine();\n } else if (tagStyle === void 0) {\n addTextNode(currentNode, convertEntities(parti));\n } else {\n if (match[1]) {\n exitNode(tagType);\n } else {\n var extra = match[4];\n var nodeSpec = { type: tagType };\n var css = getQuotedMatch(extra, STYLEMATCH);\n if (css) {\n css = css.replace(COLORMATCH, \"$1 fill:\");\n if (tagStyle) css += \";\" + tagStyle;\n } else if (tagStyle) css = tagStyle;\n if (css) nodeSpec.style = css;\n if (tagType === \"a\") {\n hasLink = true;\n var href = getQuotedMatch(extra, HREFMATCH);\n if (href) {\n var safeHref = sanitizeHref(href);\n if (safeHref) {\n nodeSpec.href = safeHref;\n nodeSpec.target = getQuotedMatch(extra, TARGETMATCH) || \"_blank\";\n nodeSpec.popup = getQuotedMatch(extra, POPUPMATCH);\n }\n }\n }\n enterNode(nodeSpec);\n }\n }\n }\n return hasLink;\n }\n function sanitizeHref(href) {\n var decodedHref = encodeURI(decodeURI(href));\n var dummyAnchor1 = document.createElement(\"a\");\n var dummyAnchor2 = document.createElement(\"a\");\n dummyAnchor1.href = href;\n dummyAnchor2.href = decodedHref;\n var p1 = dummyAnchor1.protocol;\n var p2 = dummyAnchor2.protocol;\n if (PROTOCOLS.indexOf(p1) !== -1 && PROTOCOLS.indexOf(p2) !== -1) {\n return decodedHref;\n } else {\n return \"\";\n }\n }\n exports.sanitizeHTML = function sanitizeHTML(str) {\n str = str.replace(NEWLINES, \" \");\n var rootNode = document.createElement(\"p\");\n var currentNode = rootNode;\n var nodeStack = [];\n var parts = str.split(SPLIT_TAGS);\n for (var i = 0; i < parts.length; i++) {\n var parti = parts[i];\n var match = parti.match(ONE_TAG);\n var tagType = match && match[2].toLowerCase();\n if (tagType in TAG_STYLES) {\n if (match[1]) {\n if (nodeStack.length) {\n currentNode = nodeStack.pop();\n }\n } else {\n var extra = match[4];\n var css = getQuotedMatch(extra, STYLEMATCH);\n var nodeAttrs = css ? { style: css } : {};\n if (tagType === \"a\") {\n var href = getQuotedMatch(extra, HREFMATCH);\n if (href) {\n var safeHref = sanitizeHref(href);\n if (safeHref) {\n nodeAttrs.href = safeHref;\n var target = getQuotedMatch(extra, TARGETMATCH);\n if (target) {\n nodeAttrs.target = target;\n }\n }\n }\n }\n var newNode = document.createElement(tagType);\n currentNode.appendChild(newNode);\n d3.select(newNode).attr(nodeAttrs);\n currentNode = newNode;\n nodeStack.push(newNode);\n }\n } else {\n currentNode.appendChild(\n document.createTextNode(convertEntities(parti))\n );\n }\n }\n var key = \"innerHTML\";\n return rootNode[key];\n };\n exports.lineCount = function lineCount(s) {\n return s.selectAll(\"tspan.line\").size() || 1;\n };\n exports.positionText = function positionText(s, x, y) {\n return s.each(function() {\n var text = d3.select(this);\n function setOrGet(attr, val) {\n if (val === void 0) {\n val = text.attr(attr);\n if (val === null) {\n text.attr(attr, 0);\n val = 0;\n }\n } else text.attr(attr, val);\n return val;\n }\n var thisX = setOrGet(\"x\", x);\n var thisY = setOrGet(\"y\", y);\n if (this.nodeName === \"text\") {\n text.selectAll(\"tspan.line\").attr({ x: thisX, y: thisY });\n }\n });\n };\n function alignHTMLWith(_base, container, options) {\n var alignH = options.horizontalAlign;\n var alignV = options.verticalAlign || \"top\";\n var bRect = _base.node().getBoundingClientRect();\n var cRect = container.node().getBoundingClientRect();\n var thisRect;\n var getTop;\n var getLeft;\n if (alignV === \"bottom\") {\n getTop = function() {\n return bRect.bottom - thisRect.height;\n };\n } else if (alignV === \"middle\") {\n getTop = function() {\n return bRect.top + (bRect.height - thisRect.height) / 2;\n };\n } else {\n getTop = function() {\n return bRect.top;\n };\n }\n if (alignH === \"right\") {\n getLeft = function() {\n return bRect.right - thisRect.width;\n };\n } else if (alignH === \"center\") {\n getLeft = function() {\n return bRect.left + (bRect.width - thisRect.width) / 2;\n };\n } else {\n getLeft = function() {\n return bRect.left;\n };\n }\n return function() {\n thisRect = this.node().getBoundingClientRect();\n var x0 = getLeft() - cRect.left;\n var y0 = getTop() - cRect.top;\n var gd = options.gd || {};\n if (options.gd) {\n gd._fullLayout._calcInverseTransform(gd);\n var transformedCoords = Lib.apply3DTransform(gd._fullLayout._invTransform)(x0, y0);\n x0 = transformedCoords[0];\n y0 = transformedCoords[1];\n }\n this.style({\n top: y0 + \"px\",\n left: x0 + \"px\",\n \"z-index\": 1e3\n });\n return this;\n };\n }\n var onePx = \"1px \";\n exports.makeTextShadow = function(color) {\n var x = onePx;\n var y = onePx;\n var b = onePx;\n return x + y + b + color + \", -\" + x + \"-\" + y + b + color + \", \" + x + \"-\" + y + b + color + \", -\" + x + y + b + color;\n };\n exports.makeEditable = function(context, options) {\n var gd = options.gd;\n var _delegate = options.delegate;\n var dispatch = d3.dispatch(\"edit\", \"input\", \"cancel\");\n var handlerElement = _delegate || context;\n context.style({ \"pointer-events\": _delegate ? \"none\" : \"all\" });\n if (context.size() !== 1) throw new Error(\"boo\");\n function handleClick() {\n appendEditable();\n context.style({ opacity: 0 });\n var svgClass = handlerElement.attr(\"class\");\n var mathjaxClass;\n if (svgClass) mathjaxClass = \".\" + svgClass.split(\" \")[0] + \"-math-group\";\n else mathjaxClass = \"[class*=-math-group]\";\n if (mathjaxClass) {\n d3.select(context.node().parentNode).select(mathjaxClass).style({ opacity: 0 });\n }\n }\n function selectElementContents(_el) {\n var el = _el.node();\n var range = document.createRange();\n range.selectNodeContents(el);\n var sel = window.getSelection();\n sel.removeAllRanges();\n sel.addRange(range);\n el.focus();\n }\n function appendEditable() {\n var plotDiv = d3.select(gd);\n var container = plotDiv.select(\".svg-container\");\n var div = container.append(\"div\");\n var cStyle = context.node().style;\n var fontSize = parseFloat(cStyle.fontSize || 12);\n var initialText = options.text;\n if (initialText === void 0) initialText = context.attr(\"data-unformatted\");\n div.classed(\"plugin-editable editable\", true).style({\n position: \"absolute\",\n \"font-family\": cStyle.fontFamily || \"Arial\",\n \"font-size\": fontSize,\n color: options.fill || cStyle.fill || \"black\",\n opacity: 1,\n \"background-color\": options.background || \"transparent\",\n outline: \"#ffffff33 1px solid\",\n margin: [-fontSize / 8 + 1, 0, 0, -1].join(\"px \") + \"px\",\n padding: \"0\",\n \"box-sizing\": \"border-box\"\n }).attr({ contenteditable: true }).text(initialText).call(alignHTMLWith(context, container, options)).on(\"blur\", function() {\n gd._editing = false;\n context.text(this.textContent).style({ opacity: 1 });\n var svgClass = d3.select(this).attr(\"class\");\n var mathjaxClass;\n if (svgClass) mathjaxClass = \".\" + svgClass.split(\" \")[0] + \"-math-group\";\n else mathjaxClass = \"[class*=-math-group]\";\n if (mathjaxClass) {\n d3.select(context.node().parentNode).select(mathjaxClass).style({ opacity: 0 });\n }\n var text = this.textContent;\n d3.select(this).transition().duration(0).remove();\n d3.select(document).on(\"mouseup\", null);\n dispatch.edit.call(context, text);\n }).on(\"focus\", function() {\n var editDiv = this;\n gd._editing = true;\n d3.select(document).on(\"mouseup\", function() {\n if (d3.event.target === editDiv) return false;\n if (document.activeElement === div.node()) div.node().blur();\n });\n }).on(\"keyup\", function() {\n if (d3.event.which === 27) {\n gd._editing = false;\n context.style({ opacity: 1 });\n d3.select(this).style({ opacity: 0 }).on(\"blur\", function() {\n return false;\n }).transition().remove();\n dispatch.cancel.call(context, this.textContent);\n } else {\n dispatch.input.call(context, this.textContent);\n d3.select(this).call(alignHTMLWith(context, container, options));\n }\n }).on(\"keydown\", function() {\n if (d3.event.which === 13) this.blur();\n }).call(selectElementContents);\n }\n if (options.immediate) handleClick();\n else handlerElement.on(\"click\", handleClick);\n return d3.rebind(context, dispatch, \"on\");\n };\n }\n });\n\n // src/components/colorscale/helpers.js\n var require_helpers = __commonJS({\n \"src/components/colorscale/helpers.js\"(exports, module) {\n \"use strict\";\n var d3 = require_d3();\n var tinycolor = require_tinycolor();\n var isNumeric = require_fast_isnumeric();\n var Lib = require_lib();\n var Color = require_color();\n var isValidScale = require_scales().isValid;\n function hasColorscale(trace, containerStr, colorKey) {\n var container = containerStr ? Lib.nestedProperty(trace, containerStr).get() || {} : trace;\n var color = container[colorKey || \"color\"];\n if (color && color._inputArray) color = color._inputArray;\n var isArrayWithOneNumber = false;\n if (Lib.isArrayOrTypedArray(color)) {\n for (var i = 0; i < color.length; i++) {\n if (isNumeric(color[i])) {\n isArrayWithOneNumber = true;\n break;\n }\n }\n }\n return Lib.isPlainObject(container) && (isArrayWithOneNumber || container.showscale === true || isNumeric(container.cmin) && isNumeric(container.cmax) || isValidScale(container.colorscale) || Lib.isPlainObject(container.colorbar));\n }\n var constantAttrs = [\"showscale\", \"autocolorscale\", \"colorscale\", \"reversescale\", \"colorbar\"];\n var letterAttrs = [\"min\", \"max\", \"mid\", \"auto\"];\n function extractOpts(cont) {\n var colorAx = cont._colorAx;\n var cont2 = colorAx ? colorAx : cont;\n var out = {};\n var cLetter;\n var i, k;\n for (i = 0; i < constantAttrs.length; i++) {\n k = constantAttrs[i];\n out[k] = cont2[k];\n }\n if (colorAx) {\n cLetter = \"c\";\n for (i = 0; i < letterAttrs.length; i++) {\n k = letterAttrs[i];\n out[k] = cont2[\"c\" + k];\n }\n } else {\n var k2;\n for (i = 0; i < letterAttrs.length; i++) {\n k = letterAttrs[i];\n k2 = \"c\" + k;\n if (k2 in cont2) {\n out[k] = cont2[k2];\n continue;\n }\n k2 = \"z\" + k;\n if (k2 in cont2) {\n out[k] = cont2[k2];\n }\n }\n cLetter = k2.charAt(0);\n }\n out._sync = function(k3, v) {\n var k22 = letterAttrs.indexOf(k3) !== -1 ? cLetter + k3 : k3;\n cont2[k22] = cont2[\"_\" + k22] = v;\n };\n return out;\n }\n function extractScale(cont) {\n var cOpts = extractOpts(cont);\n var cmin = cOpts.min;\n var cmax = cOpts.max;\n var scl = cOpts.reversescale ? flipScale(cOpts.colorscale) : cOpts.colorscale;\n var N = scl.length;\n var domain = new Array(N);\n var range = new Array(N);\n for (var i = 0; i < N; i++) {\n var si = scl[i];\n domain[i] = cmin + si[0] * (cmax - cmin);\n range[i] = si[1];\n }\n return { domain, range };\n }\n function flipScale(scl) {\n var N = scl.length;\n var sclNew = new Array(N);\n for (var i = N - 1, j = 0; i >= 0; i--, j++) {\n var si = scl[i];\n sclNew[j] = [1 - si[0], si[1]];\n }\n return sclNew;\n }\n function makeColorScaleFunc(specs, opts) {\n opts = opts || {};\n var domain = specs.domain;\n var range = specs.range;\n var N = range.length;\n var _range = new Array(N);\n for (var i = 0; i < N; i++) {\n var rgba = tinycolor(range[i]).toRgb();\n _range[i] = [rgba.r, rgba.g, rgba.b, rgba.a];\n }\n var _sclFunc = d3.scale.linear().domain(domain).range(_range).clamp(true);\n var noNumericCheck = opts.noNumericCheck;\n var returnArray = opts.returnArray;\n var sclFunc;\n if (noNumericCheck && returnArray) {\n sclFunc = _sclFunc;\n } else if (noNumericCheck) {\n sclFunc = function(v) {\n return colorArray2rbga(_sclFunc(v));\n };\n } else if (returnArray) {\n sclFunc = function(v) {\n if (isNumeric(v)) return _sclFunc(v);\n else if (tinycolor(v).isValid()) return v;\n else return Color.defaultLine;\n };\n } else {\n sclFunc = function(v) {\n if (isNumeric(v)) return colorArray2rbga(_sclFunc(v));\n else if (tinycolor(v).isValid()) return v;\n else return Color.defaultLine;\n };\n }\n sclFunc.domain = _sclFunc.domain;\n sclFunc.range = function() {\n return range;\n };\n return sclFunc;\n }\n function makeColorScaleFuncFromTrace(trace, opts) {\n return makeColorScaleFunc(extractScale(trace), opts);\n }\n function colorArray2rbga(colorArray) {\n var colorObj = {\n r: colorArray[0],\n g: colorArray[1],\n b: colorArray[2],\n a: colorArray[3]\n };\n return tinycolor(colorObj).toRgbString();\n }\n module.exports = {\n hasColorscale,\n extractOpts,\n extractScale,\n flipScale,\n makeColorScaleFunc,\n makeColorScaleFuncFromTrace\n };\n }\n });\n\n // src/plots/cartesian/axis_format_attributes.js\n var require_axis_format_attributes = __commonJS({\n \"src/plots/cartesian/axis_format_attributes.js\"(exports, module) {\n \"use strict\";\n var docs = require_docs();\n var FORMAT_LINK = docs.FORMAT_LINK;\n var DATE_FORMAT_LINK = docs.DATE_FORMAT_LINK;\n function axisHoverFormat(x, noDates) {\n return {\n valType: \"string\",\n dflt: \"\",\n editType: \"none\",\n description: (noDates ? descriptionOnlyNumbers : descriptionWithDates)(\"hover text\", x) + [\n \"By default the values are formatted using \" + (noDates ? \"generic number format\" : \"`\" + x + \"axis.hoverformat`\") + \".\"\n ].join(\" \")\n };\n }\n function descriptionOnlyNumbers(label, x) {\n return [\n \"Sets the \" + label + \" formatting rule\" + (x ? \"for `\" + x + \"` \" : \"\"),\n \"using d3 formatting mini-languages\",\n \"which are very similar to those in Python. For numbers, see: \" + FORMAT_LINK + \".\"\n ].join(\" \");\n }\n function descriptionWithDates(label, x) {\n return descriptionOnlyNumbers(label, x) + [\n \" And for dates see: \" + DATE_FORMAT_LINK + \".\",\n \"We add two items to d3's date formatter:\",\n \"*%h* for half of the year as a decimal number as well as\",\n \"*%{n}f* for fractional seconds\",\n \"with n digits. For example, *2016-10-13 09:15:23.456* with tickformat\",\n \"*%H~%M~%S.%2f* would display *09~15~23.46*\"\n ].join(\" \");\n }\n module.exports = {\n axisHoverFormat,\n descriptionOnlyNumbers,\n descriptionWithDates\n };\n }\n });\n\n // src/plots/cartesian/layout_attributes.js\n var require_layout_attributes4 = __commonJS({\n \"src/plots/cartesian/layout_attributes.js\"(exports, module) {\n \"use strict\";\n var fontAttrs = require_font_attributes();\n var colorAttrs = require_attributes3();\n var dash = require_attributes4().dash;\n var extendFlat = require_extend().extendFlat;\n var templatedArray = require_plot_template().templatedArray;\n var descriptionWithDates = require_axis_format_attributes().descriptionWithDates;\n var ONEDAY = require_numerical().ONEDAY;\n var constants = require_constants2();\n var HOUR = constants.HOUR_PATTERN;\n var DAY_OF_WEEK = constants.WEEKDAY_PATTERN;\n var minorTickmode = {\n valType: \"enumerated\",\n values: [\"auto\", \"linear\", \"array\"],\n editType: \"ticks\",\n impliedEdits: { tick0: void 0, dtick: void 0 }\n };\n var tickmode = extendFlat({}, minorTickmode, {\n values: minorTickmode.values.slice().concat([\"sync\"])\n });\n function makeNticks(minor) {\n return {\n valType: \"integer\",\n min: 0,\n dflt: minor ? 5 : 0,\n editType: \"ticks\"\n };\n }\n var tick0 = {\n valType: \"any\",\n editType: \"ticks\",\n impliedEdits: { tickmode: \"linear\" }\n };\n var dtick = {\n valType: \"any\",\n editType: \"ticks\",\n impliedEdits: { tickmode: \"linear\" }\n };\n var tickvals = {\n valType: \"data_array\",\n editType: \"ticks\"\n };\n var ticks = {\n valType: \"enumerated\",\n values: [\"outside\", \"inside\", \"\"],\n editType: \"ticks\"\n };\n function makeTicklen(minor) {\n var obj = {\n valType: \"number\",\n min: 0,\n editType: \"ticks\"\n };\n if (!minor) obj.dflt = 5;\n return obj;\n }\n function makeTickwidth(minor) {\n var obj = {\n valType: \"number\",\n min: 0,\n editType: \"ticks\"\n };\n if (!minor) obj.dflt = 1;\n return obj;\n }\n var tickcolor = {\n valType: \"color\",\n dflt: colorAttrs.defaultLine,\n editType: \"ticks\"\n };\n var gridcolor = {\n valType: \"color\",\n dflt: colorAttrs.lightLine,\n editType: \"ticks\"\n };\n function makeGridwidth(minor) {\n var obj = {\n valType: \"number\",\n min: 0,\n editType: \"ticks\"\n };\n if (!minor) obj.dflt = 1;\n return obj;\n }\n var griddash = extendFlat({}, dash, { editType: \"ticks\" });\n var showgrid = {\n valType: \"boolean\",\n editType: \"ticks\"\n };\n module.exports = {\n visible: {\n valType: \"boolean\",\n editType: \"plot\"\n },\n color: {\n valType: \"color\",\n dflt: colorAttrs.defaultLine,\n editType: \"ticks\"\n },\n title: {\n text: {\n valType: \"string\",\n editType: \"ticks\"\n },\n font: fontAttrs({\n editType: \"ticks\"\n }),\n standoff: {\n valType: \"number\",\n min: 0,\n editType: \"ticks\"\n },\n editType: \"ticks\"\n },\n type: {\n valType: \"enumerated\",\n // '-' means we haven't yet run autotype or couldn't find any data\n // it gets turned into linear in gd._fullLayout but not copied back\n // to gd.data like the others are.\n values: [\"-\", \"linear\", \"log\", \"date\", \"category\", \"multicategory\"],\n dflt: \"-\",\n editType: \"calc\",\n // we forget when an axis has been autotyped, just writing the auto\n // value back to the input - so it doesn't make sense to template this.\n // Note: we do NOT prohibit this in `coerce`, so if someone enters a\n // type in the template explicitly it will be honored as the default.\n _noTemplating: true\n },\n autotypenumbers: {\n valType: \"enumerated\",\n values: [\"convert types\", \"strict\"],\n dflt: \"convert types\",\n editType: \"calc\"\n },\n autorange: {\n valType: \"enumerated\",\n values: [true, false, \"reversed\", \"min reversed\", \"max reversed\", \"min\", \"max\"],\n dflt: true,\n editType: \"axrange\",\n impliedEdits: { \"range[0]\": void 0, \"range[1]\": void 0 }\n },\n autorangeoptions: {\n minallowed: {\n valType: \"any\",\n editType: \"plot\",\n impliedEdits: { \"range[0]\": void 0, \"range[1]\": void 0 }\n },\n maxallowed: {\n valType: \"any\",\n editType: \"plot\",\n impliedEdits: { \"range[0]\": void 0, \"range[1]\": void 0 }\n },\n clipmin: {\n valType: \"any\",\n editType: \"plot\",\n impliedEdits: { \"range[0]\": void 0, \"range[1]\": void 0 }\n },\n clipmax: {\n valType: \"any\",\n editType: \"plot\",\n impliedEdits: { \"range[0]\": void 0, \"range[1]\": void 0 }\n },\n include: {\n valType: \"any\",\n arrayOk: true,\n editType: \"plot\",\n impliedEdits: { \"range[0]\": void 0, \"range[1]\": void 0 }\n },\n editType: \"plot\"\n },\n rangemode: {\n valType: \"enumerated\",\n values: [\"normal\", \"tozero\", \"nonnegative\"],\n dflt: \"normal\",\n editType: \"plot\"\n },\n range: {\n valType: \"info_array\",\n items: [\n { valType: \"any\", editType: \"axrange\", impliedEdits: { \"^autorange\": false }, anim: true },\n { valType: \"any\", editType: \"axrange\", impliedEdits: { \"^autorange\": false }, anim: true }\n ],\n editType: \"axrange\",\n impliedEdits: { autorange: false },\n anim: true\n },\n minallowed: {\n valType: \"any\",\n editType: \"plot\",\n impliedEdits: { \"^autorange\": false }\n },\n maxallowed: {\n valType: \"any\",\n editType: \"plot\",\n impliedEdits: { \"^autorange\": false }\n },\n fixedrange: {\n valType: \"boolean\",\n dflt: false,\n editType: \"calc\"\n },\n insiderange: {\n valType: \"info_array\",\n items: [\n { valType: \"any\", editType: \"plot\" },\n { valType: \"any\", editType: \"plot\" }\n ],\n editType: \"plot\"\n },\n // scaleanchor: not used directly, just put here for reference\n // values are any opposite-letter axis id, or `false`.\n scaleanchor: {\n valType: \"enumerated\",\n values: [\n constants.idRegex.x.toString(),\n constants.idRegex.y.toString(),\n false\n ],\n editType: \"plot\"\n },\n scaleratio: {\n valType: \"number\",\n min: 0,\n dflt: 1,\n editType: \"plot\"\n },\n constrain: {\n valType: \"enumerated\",\n values: [\"range\", \"domain\"],\n editType: \"plot\"\n },\n // constraintoward: not used directly, just put here for reference\n constraintoward: {\n valType: \"enumerated\",\n values: [\"left\", \"center\", \"right\", \"top\", \"middle\", \"bottom\"],\n editType: \"plot\"\n },\n matches: {\n valType: \"enumerated\",\n values: [\n constants.idRegex.x.toString(),\n constants.idRegex.y.toString()\n ],\n editType: \"calc\"\n },\n rangebreaks: templatedArray(\"rangebreak\", {\n enabled: {\n valType: \"boolean\",\n dflt: true,\n editType: \"calc\"\n },\n bounds: {\n valType: \"info_array\",\n items: [\n { valType: \"any\", editType: \"calc\" },\n { valType: \"any\", editType: \"calc\" }\n ],\n editType: \"calc\"\n },\n pattern: {\n valType: \"enumerated\",\n values: [DAY_OF_WEEK, HOUR, \"\"],\n editType: \"calc\"\n },\n values: {\n valType: \"info_array\",\n freeLength: true,\n editType: \"calc\",\n items: {\n valType: \"any\",\n editType: \"calc\"\n }\n },\n dvalue: {\n // TODO could become 'any' to add support for 'months', 'years'\n valType: \"number\",\n editType: \"calc\",\n min: 0,\n dflt: ONEDAY\n },\n /*\n gap: {\n valType: 'number',\n min: 0,\n dflt: 0, // for *date* axes, maybe something else for *linear*\n editType: 'calc',\n },\n gapmode: {\n valType: 'enumerated',\n values: ['pixels', 'fraction'],\n dflt: 'pixels',\n editType: 'calc',\n },\n */\n // To complete https://github.com/plotly/plotly.js/issues/4210\n // we additionally need `gap` and make this work on *linear*, and\n // possibly all other cartesian axis types. We possibly would also need\n // some style attributes controlling the zig-zag on the corresponding\n // axis.\n editType: \"calc\"\n }),\n // ticks\n tickmode,\n nticks: makeNticks(),\n tick0,\n dtick,\n ticklabelstep: {\n valType: \"integer\",\n min: 1,\n dflt: 1,\n editType: \"ticks\"\n },\n tickvals,\n ticktext: {\n valType: \"data_array\",\n editType: \"ticks\"\n },\n ticks,\n tickson: {\n valType: \"enumerated\",\n values: [\"labels\", \"boundaries\"],\n dflt: \"labels\",\n editType: \"ticks\"\n },\n ticklabelmode: {\n valType: \"enumerated\",\n values: [\"instant\", \"period\"],\n dflt: \"instant\",\n editType: \"ticks\"\n },\n // ticklabelposition: not used directly, as values depend on direction (similar to side)\n // left/right options are for x axes, and top/bottom options are for y axes\n ticklabelposition: {\n valType: \"enumerated\",\n values: [\n \"outside\",\n \"inside\",\n \"outside top\",\n \"inside top\",\n \"outside left\",\n \"inside left\",\n \"outside right\",\n \"inside right\",\n \"outside bottom\",\n \"inside bottom\"\n ],\n dflt: \"outside\",\n editType: \"calc\"\n },\n ticklabeloverflow: {\n valType: \"enumerated\",\n values: [\n \"allow\",\n \"hide past div\",\n \"hide past domain\"\n ],\n editType: \"calc\"\n },\n ticklabelshift: {\n valType: \"integer\",\n dflt: 0,\n editType: \"ticks\"\n },\n ticklabelstandoff: {\n valType: \"integer\",\n dflt: 0,\n editType: \"ticks\"\n },\n ticklabelindex: {\n // in the future maybe add `extras: ['all', 'minor']` to allow showing labels for all ticks\n // or for all minor ticks.\n valType: \"integer\",\n arrayOk: true,\n editType: \"calc\"\n },\n mirror: {\n valType: \"enumerated\",\n values: [true, \"ticks\", false, \"all\", \"allticks\"],\n dflt: false,\n editType: \"ticks+layoutstyle\"\n },\n ticklen: makeTicklen(),\n tickwidth: makeTickwidth(),\n tickcolor,\n showticklabels: {\n valType: \"boolean\",\n dflt: true,\n editType: \"ticks\"\n },\n labelalias: {\n valType: \"any\",\n dflt: false,\n editType: \"ticks\"\n },\n automargin: {\n valType: \"flaglist\",\n flags: [\"height\", \"width\", \"left\", \"right\", \"top\", \"bottom\"],\n extras: [true, false],\n dflt: false,\n editType: \"ticks\"\n },\n showspikes: {\n valType: \"boolean\",\n dflt: false,\n editType: \"modebar\"\n },\n spikecolor: {\n valType: \"color\",\n dflt: null,\n editType: \"none\"\n },\n spikethickness: {\n valType: \"number\",\n dflt: 3,\n editType: \"none\"\n },\n spikedash: extendFlat({}, dash, { dflt: \"dash\", editType: \"none\" }),\n spikemode: {\n valType: \"flaglist\",\n flags: [\"toaxis\", \"across\", \"marker\"],\n dflt: \"toaxis\",\n editType: \"none\"\n },\n spikesnap: {\n valType: \"enumerated\",\n values: [\"data\", \"cursor\", \"hovered data\"],\n dflt: \"hovered data\",\n editType: \"none\"\n },\n tickfont: fontAttrs({\n editType: \"ticks\"\n }),\n tickangle: {\n valType: \"angle\",\n dflt: \"auto\",\n editType: \"ticks\"\n },\n autotickangles: {\n valType: \"info_array\",\n freeLength: true,\n items: {\n valType: \"angle\"\n },\n dflt: [0, 30, 90],\n editType: \"ticks\"\n },\n tickprefix: {\n valType: \"string\",\n dflt: \"\",\n editType: \"ticks\"\n },\n showtickprefix: {\n valType: \"enumerated\",\n values: [\"all\", \"first\", \"last\", \"none\"],\n dflt: \"all\",\n editType: \"ticks\"\n },\n ticksuffix: {\n valType: \"string\",\n dflt: \"\",\n editType: \"ticks\"\n },\n showticksuffix: {\n valType: \"enumerated\",\n values: [\"all\", \"first\", \"last\", \"none\"],\n dflt: \"all\",\n editType: \"ticks\"\n },\n showexponent: {\n valType: \"enumerated\",\n values: [\"all\", \"first\", \"last\", \"none\"],\n dflt: \"all\",\n editType: \"ticks\"\n },\n exponentformat: {\n valType: \"enumerated\",\n values: [\"none\", \"e\", \"E\", \"power\", \"SI\", \"B\"],\n dflt: \"B\",\n editType: \"ticks\"\n },\n minexponent: {\n valType: \"number\",\n dflt: 3,\n min: 0,\n editType: \"ticks\"\n },\n separatethousands: {\n valType: \"boolean\",\n dflt: false,\n editType: \"ticks\"\n },\n tickformat: {\n valType: \"string\",\n dflt: \"\",\n editType: \"ticks\",\n description: descriptionWithDates(\"tick label\")\n },\n tickformatstops: templatedArray(\"tickformatstop\", {\n enabled: {\n valType: \"boolean\",\n dflt: true,\n editType: \"ticks\"\n },\n dtickrange: {\n valType: \"info_array\",\n items: [\n { valType: \"any\", editType: \"ticks\" },\n { valType: \"any\", editType: \"ticks\" }\n ],\n editType: \"ticks\"\n },\n value: {\n valType: \"string\",\n dflt: \"\",\n editType: \"ticks\"\n },\n editType: \"ticks\"\n }),\n hoverformat: {\n valType: \"string\",\n dflt: \"\",\n editType: \"none\",\n description: descriptionWithDates(\"hover text\")\n },\n // lines and grids\n showline: {\n valType: \"boolean\",\n dflt: false,\n editType: \"ticks+layoutstyle\"\n },\n linecolor: {\n valType: \"color\",\n dflt: colorAttrs.defaultLine,\n editType: \"layoutstyle\"\n },\n linewidth: {\n valType: \"number\",\n min: 0,\n dflt: 1,\n editType: \"ticks+layoutstyle\"\n },\n showgrid,\n gridcolor,\n gridwidth: makeGridwidth(),\n griddash,\n zeroline: {\n valType: \"boolean\",\n editType: \"ticks\"\n },\n zerolinecolor: {\n valType: \"color\",\n dflt: colorAttrs.defaultLine,\n editType: \"ticks\"\n },\n zerolinewidth: {\n valType: \"number\",\n dflt: 1,\n editType: \"ticks\"\n },\n showdividers: {\n valType: \"boolean\",\n dflt: true,\n editType: \"ticks\"\n },\n dividercolor: {\n valType: \"color\",\n dflt: colorAttrs.defaultLine,\n editType: \"ticks\"\n },\n dividerwidth: {\n valType: \"number\",\n dflt: 1,\n editType: \"ticks\"\n },\n // TODO dividerlen: that would override \"to label base\" length?\n // positioning attributes\n // anchor: not used directly, just put here for reference\n // values are any opposite-letter axis id\n anchor: {\n valType: \"enumerated\",\n values: [\n \"free\",\n constants.idRegex.x.toString(),\n constants.idRegex.y.toString()\n ],\n editType: \"plot\"\n },\n // side: not used directly, as values depend on direction\n // values are top, bottom for x axes, and left, right for y\n side: {\n valType: \"enumerated\",\n values: [\"top\", \"bottom\", \"left\", \"right\"],\n editType: \"plot\"\n },\n // overlaying: not used directly, just put here for reference\n // values are false and any other same-letter axis id that's not\n // itself overlaying anything\n overlaying: {\n valType: \"enumerated\",\n values: [\n \"free\",\n constants.idRegex.x.toString(),\n constants.idRegex.y.toString()\n ],\n editType: \"plot\"\n },\n minor: {\n tickmode: minorTickmode,\n nticks: makeNticks(\"minor\"),\n tick0,\n dtick,\n tickvals,\n ticks,\n ticklen: makeTicklen(\"minor\"),\n tickwidth: makeTickwidth(\"minor\"),\n tickcolor,\n gridcolor,\n gridwidth: makeGridwidth(\"minor\"),\n griddash,\n showgrid,\n editType: \"ticks\"\n },\n layer: {\n valType: \"enumerated\",\n values: [\"above traces\", \"below traces\"],\n dflt: \"above traces\",\n editType: \"plot\"\n },\n domain: {\n valType: \"info_array\",\n items: [\n { valType: \"number\", min: 0, max: 1, editType: \"plot\" },\n { valType: \"number\", min: 0, max: 1, editType: \"plot\" }\n ],\n dflt: [0, 1],\n editType: \"plot\"\n },\n position: {\n valType: \"number\",\n min: 0,\n max: 1,\n dflt: 0,\n editType: \"plot\"\n },\n autoshift: {\n valType: \"boolean\",\n dflt: false,\n editType: \"plot\"\n },\n shift: {\n valType: \"number\",\n editType: \"plot\"\n },\n categoryorder: {\n valType: \"enumerated\",\n values: [\n \"trace\",\n \"category ascending\",\n \"category descending\",\n \"array\",\n \"total ascending\",\n \"total descending\",\n \"min ascending\",\n \"min descending\",\n \"max ascending\",\n \"max descending\",\n \"sum ascending\",\n \"sum descending\",\n \"mean ascending\",\n \"mean descending\",\n \"geometric mean ascending\",\n \"geometric mean descending\",\n \"median ascending\",\n \"median descending\"\n ],\n dflt: \"trace\",\n editType: \"calc\"\n },\n categoryarray: {\n valType: \"data_array\",\n editType: \"calc\"\n },\n uirevision: {\n valType: \"any\",\n editType: \"none\"\n },\n editType: \"calc\"\n };\n }\n });\n\n // src/components/colorbar/attributes.js\n var require_attributes7 = __commonJS({\n \"src/components/colorbar/attributes.js\"(exports, module) {\n \"use strict\";\n var axesAttrs = require_layout_attributes4();\n var fontAttrs = require_font_attributes();\n var extendFlat = require_extend().extendFlat;\n var overrideAll = require_edit_types().overrideAll;\n module.exports = overrideAll({\n orientation: {\n valType: \"enumerated\",\n values: [\"h\", \"v\"],\n dflt: \"v\"\n },\n thicknessmode: {\n valType: \"enumerated\",\n values: [\"fraction\", \"pixels\"],\n dflt: \"pixels\"\n },\n thickness: {\n valType: \"number\",\n min: 0,\n dflt: 30\n },\n lenmode: {\n valType: \"enumerated\",\n values: [\"fraction\", \"pixels\"],\n dflt: \"fraction\"\n },\n len: {\n valType: \"number\",\n min: 0,\n dflt: 1\n },\n x: {\n valType: \"number\"\n },\n xref: {\n valType: \"enumerated\",\n dflt: \"paper\",\n values: [\"container\", \"paper\"],\n editType: \"layoutstyle\"\n },\n xanchor: {\n valType: \"enumerated\",\n values: [\"left\", \"center\", \"right\"]\n },\n xpad: {\n valType: \"number\",\n min: 0,\n dflt: 10\n },\n y: {\n valType: \"number\"\n },\n yref: {\n valType: \"enumerated\",\n dflt: \"paper\",\n values: [\"container\", \"paper\"],\n editType: \"layoutstyle\"\n },\n yanchor: {\n valType: \"enumerated\",\n values: [\"top\", \"middle\", \"bottom\"]\n },\n ypad: {\n valType: \"number\",\n min: 0,\n dflt: 10\n },\n // a possible line around the bar itself\n outlinecolor: axesAttrs.linecolor,\n outlinewidth: axesAttrs.linewidth,\n // Should outlinewidth have {dflt: 0} ?\n // another possible line outside the padding and tick labels\n bordercolor: axesAttrs.linecolor,\n borderwidth: {\n valType: \"number\",\n min: 0,\n dflt: 0\n },\n bgcolor: {\n valType: \"color\",\n dflt: \"rgba(0,0,0,0)\"\n },\n // tick and title properties named and function exactly as in axes\n tickmode: axesAttrs.minor.tickmode,\n nticks: axesAttrs.nticks,\n tick0: axesAttrs.tick0,\n dtick: axesAttrs.dtick,\n tickvals: axesAttrs.tickvals,\n ticktext: axesAttrs.ticktext,\n ticks: extendFlat({}, axesAttrs.ticks, { dflt: \"\" }),\n ticklabeloverflow: extendFlat({}, axesAttrs.ticklabeloverflow, {}),\n // ticklabelposition: not used directly, as values depend on orientation\n // left/right options are for x axes, and top/bottom options are for y axes\n ticklabelposition: {\n valType: \"enumerated\",\n values: [\n \"outside\",\n \"inside\",\n \"outside top\",\n \"inside top\",\n \"outside left\",\n \"inside left\",\n \"outside right\",\n \"inside right\",\n \"outside bottom\",\n \"inside bottom\"\n ],\n dflt: \"outside\"\n },\n ticklen: axesAttrs.ticklen,\n tickwidth: axesAttrs.tickwidth,\n tickcolor: axesAttrs.tickcolor,\n ticklabelstep: axesAttrs.ticklabelstep,\n showticklabels: axesAttrs.showticklabels,\n labelalias: axesAttrs.labelalias,\n tickfont: fontAttrs({}),\n tickangle: axesAttrs.tickangle,\n tickformat: axesAttrs.tickformat,\n tickformatstops: axesAttrs.tickformatstops,\n tickprefix: axesAttrs.tickprefix,\n showtickprefix: axesAttrs.showtickprefix,\n ticksuffix: axesAttrs.ticksuffix,\n showticksuffix: axesAttrs.showticksuffix,\n separatethousands: axesAttrs.separatethousands,\n exponentformat: axesAttrs.exponentformat,\n minexponent: axesAttrs.minexponent,\n showexponent: axesAttrs.showexponent,\n title: {\n text: {\n valType: \"string\"\n },\n font: fontAttrs({}),\n side: {\n valType: \"enumerated\",\n values: [\"right\", \"top\", \"bottom\"]\n }\n }\n }, \"colorbars\", \"from-root\");\n }\n });\n\n // src/components/colorscale/attributes.js\n var require_attributes8 = __commonJS({\n \"src/components/colorscale/attributes.js\"(exports, module) {\n \"use strict\";\n var colorbarAttrs = require_attributes7();\n var counterRegex = require_regex().counter;\n var sortObjectKeys = require_sort_object_keys();\n var palettes = require_scales().scales;\n var paletteStr = sortObjectKeys(palettes);\n function code(s) {\n return \"`\" + s + \"`\";\n }\n module.exports = function colorScaleAttrs(context, opts) {\n context = context || \"\";\n opts = opts || {};\n var cLetter = opts.cLetter || \"c\";\n var onlyIfNumerical = \"onlyIfNumerical\" in opts ? opts.onlyIfNumerical : Boolean(context);\n var noScale = \"noScale\" in opts ? opts.noScale : context === \"marker.line\";\n var showScaleDflt = \"showScaleDflt\" in opts ? opts.showScaleDflt : cLetter === \"z\";\n var colorscaleDflt = typeof opts.colorscaleDflt === \"string\" ? palettes[opts.colorscaleDflt] : null;\n var editTypeOverride = opts.editTypeOverride || \"\";\n var contextHead = context ? context + \".\" : \"\";\n var colorAttr, colorAttrFull;\n if (\"colorAttr\" in opts) {\n colorAttr = opts.colorAttr;\n colorAttrFull = opts.colorAttr;\n } else {\n colorAttr = { z: \"z\", c: \"color\" }[cLetter];\n colorAttrFull = \"in \" + code(contextHead + colorAttr);\n }\n var effectDesc = onlyIfNumerical ? \" Has an effect only if \" + colorAttrFull + \" is set to a numerical array.\" : \"\";\n var auto = cLetter + \"auto\";\n var min = cLetter + \"min\";\n var max = cLetter + \"max\";\n var mid = cLetter + \"mid\";\n var autoFull = code(contextHead + auto);\n var minFull = code(contextHead + min);\n var maxFull = code(contextHead + max);\n var minmaxFull = minFull + \" and \" + maxFull;\n var autoImpliedEdits = {};\n autoImpliedEdits[min] = autoImpliedEdits[max] = void 0;\n var minmaxImpliedEdits = {};\n minmaxImpliedEdits[auto] = false;\n var attrs = {};\n if (colorAttr === \"color\") {\n attrs.color = {\n valType: \"color\",\n arrayOk: true,\n editType: editTypeOverride || \"style\"\n };\n if (opts.anim) {\n attrs.color.anim = true;\n }\n }\n attrs[auto] = {\n valType: \"boolean\",\n dflt: true,\n editType: \"calc\",\n impliedEdits: autoImpliedEdits\n };\n attrs[min] = {\n valType: \"number\",\n dflt: null,\n editType: editTypeOverride || \"plot\",\n impliedEdits: minmaxImpliedEdits\n };\n attrs[max] = {\n valType: \"number\",\n dflt: null,\n editType: editTypeOverride || \"plot\",\n impliedEdits: minmaxImpliedEdits\n };\n attrs[mid] = {\n valType: \"number\",\n dflt: null,\n editType: \"calc\",\n impliedEdits: autoImpliedEdits\n };\n attrs.colorscale = {\n valType: \"colorscale\",\n editType: \"calc\",\n dflt: colorscaleDflt,\n impliedEdits: { autocolorscale: false }\n };\n attrs.autocolorscale = {\n valType: \"boolean\",\n // gets overrode in 'heatmap' & 'surface' for backwards comp.\n dflt: opts.autoColorDflt === false ? false : true,\n editType: \"calc\",\n impliedEdits: { colorscale: void 0 }\n };\n attrs.reversescale = {\n valType: \"boolean\",\n dflt: false,\n editType: \"plot\"\n };\n if (!noScale) {\n attrs.showscale = {\n valType: \"boolean\",\n dflt: showScaleDflt,\n editType: \"calc\"\n };\n attrs.colorbar = colorbarAttrs;\n }\n if (!opts.noColorAxis) {\n attrs.coloraxis = {\n valType: \"subplotid\",\n regex: counterRegex(\"coloraxis\"),\n dflt: null,\n editType: \"calc\"\n };\n }\n return attrs;\n };\n }\n });\n\n // src/components/colorscale/layout_attributes.js\n var require_layout_attributes5 = __commonJS({\n \"src/components/colorscale/layout_attributes.js\"(exports, module) {\n \"use strict\";\n var extendFlat = require_extend().extendFlat;\n var colorScaleAttrs = require_attributes8();\n var scales = require_scales().scales;\n module.exports = {\n editType: \"calc\",\n colorscale: {\n editType: \"calc\",\n sequential: {\n valType: \"colorscale\",\n dflt: scales.Reds,\n editType: \"calc\"\n },\n sequentialminus: {\n valType: \"colorscale\",\n dflt: scales.Blues,\n editType: \"calc\"\n },\n diverging: {\n valType: \"colorscale\",\n dflt: scales.RdBu,\n editType: \"calc\"\n }\n },\n coloraxis: extendFlat({\n // not really a 'subplot' attribute container,\n // but this is the flag we use to denote attributes that\n // support yaxis, yaxis2, yaxis3, ... counters\n _isSubplotObj: true,\n editType: \"calc\"\n }, colorScaleAttrs(\"\", {\n colorAttr: \"corresponding trace color array(s)\",\n noColorAxis: true,\n showScaleDflt: true\n }))\n };\n }\n });\n\n // src/components/colorbar/has_colorbar.js\n var require_has_colorbar = __commonJS({\n \"src/components/colorbar/has_colorbar.js\"(exports, module) {\n \"use strict\";\n var Lib = require_lib();\n module.exports = function hasColorbar(container) {\n return Lib.isPlainObject(container.colorbar);\n };\n }\n });\n\n // src/plots/cartesian/clean_ticks.js\n var require_clean_ticks = __commonJS({\n \"src/plots/cartesian/clean_ticks.js\"(exports) {\n \"use strict\";\n var isNumeric = require_fast_isnumeric();\n var Lib = require_lib();\n var constants = require_numerical();\n var ONEDAY = constants.ONEDAY;\n var ONEWEEK = constants.ONEWEEK;\n exports.dtick = function(dtick, axType) {\n var isLog = axType === \"log\";\n var isDate = axType === \"date\";\n var isCat = axType === \"category\";\n var dtickDflt = isDate ? ONEDAY : 1;\n if (!dtick) return dtickDflt;\n if (isNumeric(dtick)) {\n dtick = Number(dtick);\n if (dtick <= 0) return dtickDflt;\n if (isCat) {\n return Math.max(1, Math.round(dtick));\n }\n if (isDate) {\n return Math.max(0.1, dtick);\n }\n return dtick;\n }\n if (typeof dtick !== \"string\" || !(isDate || isLog)) {\n return dtickDflt;\n }\n var prefix = dtick.charAt(0);\n var dtickNum = dtick.substr(1);\n dtickNum = isNumeric(dtickNum) ? Number(dtickNum) : 0;\n if (dtickNum <= 0 || !// \"M\" gives ticks every (integer) n months\n (isDate && prefix === \"M\" && dtickNum === Math.round(dtickNum) || // \"L\" gives ticks linearly spaced in data (not in position) every (float) f\n isLog && prefix === \"L\" || // \"D1\" gives powers of 10 with all small digits between, \"D2\" gives only 2 and 5\n isLog && prefix === \"D\" && (dtickNum === 1 || dtickNum === 2))) {\n return dtickDflt;\n }\n return dtick;\n };\n exports.tick0 = function(tick0, axType, calendar, dtick) {\n if (axType === \"date\") {\n return Lib.cleanDate(\n tick0,\n Lib.dateTick0(calendar, dtick % ONEWEEK === 0 ? 1 : 0)\n );\n }\n if (dtick === \"D1\" || dtick === \"D2\") {\n return void 0;\n }\n return isNumeric(tick0) ? Number(tick0) : 0;\n };\n }\n });\n\n // src/plots/cartesian/tick_value_defaults.js\n var require_tick_value_defaults = __commonJS({\n \"src/plots/cartesian/tick_value_defaults.js\"(exports, module) {\n \"use strict\";\n var cleanTicks = require_clean_ticks();\n var isArrayOrTypedArray = require_lib().isArrayOrTypedArray;\n var isTypedArraySpec = require_array().isTypedArraySpec;\n var decodeTypedArraySpec = require_array().decodeTypedArraySpec;\n module.exports = function handleTickValueDefaults(containerIn, containerOut, coerce, axType, opts) {\n if (!opts) opts = {};\n var isMinor = opts.isMinor;\n var cIn = isMinor ? containerIn.minor || {} : containerIn;\n var cOut = isMinor ? containerOut.minor : containerOut;\n var prefix = isMinor ? \"minor.\" : \"\";\n function readInput(attr) {\n var v = cIn[attr];\n if (isTypedArraySpec(v)) v = decodeTypedArraySpec(v);\n return v !== void 0 ? v : (cOut._template || {})[attr];\n }\n var _tick0 = readInput(\"tick0\");\n var _dtick = readInput(\"dtick\");\n var _tickvals = readInput(\"tickvals\");\n var tickmodeDefault = isArrayOrTypedArray(_tickvals) ? \"array\" : _dtick ? \"linear\" : \"auto\";\n var tickmode = coerce(prefix + \"tickmode\", tickmodeDefault);\n if (tickmode === \"auto\" || tickmode === \"sync\") {\n coerce(prefix + \"nticks\");\n } else if (tickmode === \"linear\") {\n var dtick = cOut.dtick = cleanTicks.dtick(\n _dtick,\n axType\n );\n cOut.tick0 = cleanTicks.tick0(\n _tick0,\n axType,\n containerOut.calendar,\n dtick\n );\n } else if (axType !== \"multicategory\") {\n var tickvals = coerce(prefix + \"tickvals\");\n if (tickvals === void 0) cOut.tickmode = \"auto\";\n else if (!isMinor) coerce(\"ticktext\");\n }\n };\n }\n });\n\n // src/plots/cartesian/tick_mark_defaults.js\n var require_tick_mark_defaults = __commonJS({\n \"src/plots/cartesian/tick_mark_defaults.js\"(exports, module) {\n \"use strict\";\n var Lib = require_lib();\n var layoutAttributes = require_layout_attributes4();\n module.exports = function handleTickMarkDefaults(containerIn, containerOut, coerce, options) {\n var isMinor = options.isMinor;\n var cIn = isMinor ? containerIn.minor || {} : containerIn;\n var cOut = isMinor ? containerOut.minor : containerOut;\n var lAttr = isMinor ? layoutAttributes.minor : layoutAttributes;\n var prefix = isMinor ? \"minor.\" : \"\";\n var tickLen = Lib.coerce2(cIn, cOut, lAttr, \"ticklen\", isMinor ? (containerOut.ticklen || 5) * 0.6 : void 0);\n var tickWidth = Lib.coerce2(cIn, cOut, lAttr, \"tickwidth\", isMinor ? containerOut.tickwidth || 1 : void 0);\n var tickColor = Lib.coerce2(cIn, cOut, lAttr, \"tickcolor\", (isMinor ? containerOut.tickcolor : void 0) || cOut.color);\n var showTicks = coerce(prefix + \"ticks\", !isMinor && options.outerTicks || tickLen || tickWidth || tickColor ? \"outside\" : \"\");\n if (!showTicks) {\n delete cOut.ticklen;\n delete cOut.tickwidth;\n delete cOut.tickcolor;\n }\n };\n }\n });\n\n // src/plots/cartesian/show_dflt.js\n var require_show_dflt = __commonJS({\n \"src/plots/cartesian/show_dflt.js\"(exports, module) {\n \"use strict\";\n module.exports = function getShowAttrDflt(containerIn) {\n var showAttrsAll = [\"showexponent\", \"showtickprefix\", \"showticksuffix\"];\n var showAttrs = showAttrsAll.filter(function(a) {\n return containerIn[a] !== void 0;\n });\n var sameVal = function(a) {\n return containerIn[a] === containerIn[showAttrs[0]];\n };\n if (showAttrs.every(sameVal) || showAttrs.length === 1) {\n return containerIn[showAttrs[0]];\n }\n };\n }\n });\n\n // src/plots/array_container_defaults.js\n var require_array_container_defaults = __commonJS({\n \"src/plots/array_container_defaults.js\"(exports, module) {\n \"use strict\";\n var Lib = require_lib();\n var Template = require_plot_template();\n module.exports = function handleArrayContainerDefaults(parentObjIn, parentObjOut, opts) {\n var name = opts.name;\n var inclusionAttr = opts.inclusionAttr || \"visible\";\n var previousContOut = parentObjOut[name];\n var contIn = Lib.isArrayOrTypedArray(parentObjIn[name]) ? parentObjIn[name] : [];\n var contOut = parentObjOut[name] = [];\n var templater = Template.arrayTemplater(parentObjOut, name, inclusionAttr);\n var i, itemOut;\n for (i = 0; i < contIn.length; i++) {\n var itemIn = contIn[i];\n if (!Lib.isPlainObject(itemIn)) {\n itemOut = templater.newItem({});\n itemOut[inclusionAttr] = false;\n } else {\n itemOut = templater.newItem(itemIn);\n }\n itemOut._index = i;\n if (itemOut[inclusionAttr] !== false) {\n opts.handleItemDefaults(itemIn, itemOut, parentObjOut, opts);\n }\n contOut.push(itemOut);\n }\n var defaultItems = templater.defaultItems();\n for (i = 0; i < defaultItems.length; i++) {\n itemOut = defaultItems[i];\n itemOut._index = contOut.length;\n opts.handleItemDefaults({}, itemOut, parentObjOut, opts, {});\n contOut.push(itemOut);\n }\n if (Lib.isArrayOrTypedArray(previousContOut)) {\n var len = Math.min(previousContOut.length, contOut.length);\n for (i = 0; i < len; i++) {\n Lib.relinkPrivateKeys(contOut[i], previousContOut[i]);\n }\n }\n return contOut;\n };\n }\n });\n\n // src/plots/cartesian/tick_label_defaults.js\n var require_tick_label_defaults = __commonJS({\n \"src/plots/cartesian/tick_label_defaults.js\"(exports, module) {\n \"use strict\";\n var Lib = require_lib();\n var contrast = require_color().contrast;\n var layoutAttributes = require_layout_attributes4();\n var getShowAttrDflt = require_show_dflt();\n var handleArrayContainerDefaults = require_array_container_defaults();\n module.exports = function handleTickLabelDefaults(containerIn, containerOut, coerce, axType, options) {\n if (!options) options = {};\n var labelalias = coerce(\"labelalias\");\n if (!Lib.isPlainObject(labelalias)) delete containerOut.labelalias;\n var showAttrDflt = getShowAttrDflt(containerIn);\n var showTickLabels = coerce(\"showticklabels\");\n if (showTickLabels) {\n if (!options.noTicklabelshift) {\n coerce(\"ticklabelshift\");\n }\n if (!options.noTicklabelstandoff) {\n coerce(\"ticklabelstandoff\");\n }\n var font = options.font || {};\n var contColor = containerOut.color;\n var position = containerOut.ticklabelposition || \"\";\n var dfltFontColor = position.indexOf(\"inside\") !== -1 ? contrast(options.bgColor) : (\n // as with title.font.color, inherit axis.color only if one was\n // explicitly provided\n contColor && contColor !== layoutAttributes.color.dflt ? contColor : font.color\n );\n Lib.coerceFont(coerce, \"tickfont\", font, { overrideDflt: {\n color: dfltFontColor\n } });\n if (!options.noTicklabelstep && axType !== \"multicategory\" && axType !== \"log\") {\n coerce(\"ticklabelstep\");\n }\n if (!options.noAng) {\n var tickAngle = coerce(\"tickangle\");\n if (!options.noAutotickangles && tickAngle === \"auto\") {\n coerce(\"autotickangles\");\n }\n }\n if (axType !== \"category\") {\n var tickFormat = coerce(\"tickformat\");\n handleArrayContainerDefaults(containerIn, containerOut, {\n name: \"tickformatstops\",\n inclusionAttr: \"enabled\",\n handleItemDefaults: tickformatstopDefaults\n });\n if (!containerOut.tickformatstops.length) {\n delete containerOut.tickformatstops;\n }\n if (!options.noExp && !tickFormat && axType !== \"date\") {\n coerce(\"showexponent\", showAttrDflt);\n coerce(\"exponentformat\");\n coerce(\"minexponent\");\n coerce(\"separatethousands\");\n }\n }\n }\n };\n function tickformatstopDefaults(valueIn, valueOut) {\n function coerce(attr, dflt) {\n return Lib.coerce(valueIn, valueOut, layoutAttributes.tickformatstops, attr, dflt);\n }\n var enabled = coerce(\"enabled\");\n if (enabled) {\n coerce(\"dtickrange\");\n coerce(\"value\");\n }\n }\n }\n });\n\n // src/plots/cartesian/prefix_suffix_defaults.js\n var require_prefix_suffix_defaults = __commonJS({\n \"src/plots/cartesian/prefix_suffix_defaults.js\"(exports, module) {\n \"use strict\";\n var getShowAttrDflt = require_show_dflt();\n module.exports = function handlePrefixSuffixDefaults(containerIn, containerOut, coerce, axType, options) {\n if (!options) options = {};\n var tickSuffixDflt = options.tickSuffixDflt;\n var showAttrDflt = getShowAttrDflt(containerIn);\n var tickPrefix = coerce(\"tickprefix\");\n if (tickPrefix) coerce(\"showtickprefix\", showAttrDflt);\n var tickSuffix = coerce(\"ticksuffix\", tickSuffixDflt);\n if (tickSuffix) coerce(\"showticksuffix\", showAttrDflt);\n };\n }\n });\n\n // src/components/colorbar/defaults.js\n var require_defaults = __commonJS({\n \"src/components/colorbar/defaults.js\"(exports, module) {\n \"use strict\";\n var Lib = require_lib();\n var Template = require_plot_template();\n var handleTickValueDefaults = require_tick_value_defaults();\n var handleTickMarkDefaults = require_tick_mark_defaults();\n var handleTickLabelDefaults = require_tick_label_defaults();\n var handlePrefixSuffixDefaults = require_prefix_suffix_defaults();\n var attributes = require_attributes7();\n module.exports = function colorbarDefaults(containerIn, containerOut, layout) {\n var colorbarOut = Template.newContainer(containerOut, \"colorbar\");\n var colorbarIn = containerIn.colorbar || {};\n function coerce(attr, dflt) {\n return Lib.coerce(colorbarIn, colorbarOut, attributes, attr, dflt);\n }\n var margin = layout.margin || { t: 0, b: 0, l: 0, r: 0 };\n var w = layout.width - margin.l - margin.r;\n var h = layout.height - margin.t - margin.b;\n var orientation = coerce(\"orientation\");\n var isVertical = orientation === \"v\";\n var thicknessmode = coerce(\"thicknessmode\");\n coerce(\n \"thickness\",\n thicknessmode === \"fraction\" ? 30 / (isVertical ? w : h) : 30\n );\n var lenmode = coerce(\"lenmode\");\n coerce(\n \"len\",\n lenmode === \"fraction\" ? 1 : isVertical ? h : w\n );\n var yref = coerce(\"yref\");\n var xref = coerce(\"xref\");\n var isPaperY = yref === \"paper\";\n var isPaperX = xref === \"paper\";\n var defaultX, defaultY, defaultYAnchor;\n var defaultXAnchor = \"left\";\n if (isVertical) {\n defaultYAnchor = \"middle\";\n defaultXAnchor = isPaperX ? \"left\" : \"right\";\n defaultX = isPaperX ? 1.02 : 1;\n defaultY = 0.5;\n } else {\n defaultYAnchor = isPaperY ? \"bottom\" : \"top\";\n defaultXAnchor = \"center\";\n defaultX = 0.5;\n defaultY = isPaperY ? 1.02 : 1;\n }\n Lib.coerce(colorbarIn, colorbarOut, {\n x: {\n valType: \"number\",\n min: isPaperX ? -2 : 0,\n max: isPaperX ? 3 : 1,\n dflt: defaultX\n }\n }, \"x\");\n Lib.coerce(colorbarIn, colorbarOut, {\n y: {\n valType: \"number\",\n min: isPaperY ? -2 : 0,\n max: isPaperY ? 3 : 1,\n dflt: defaultY\n }\n }, \"y\");\n coerce(\"xanchor\", defaultXAnchor);\n coerce(\"xpad\");\n coerce(\"yanchor\", defaultYAnchor);\n coerce(\"ypad\");\n Lib.noneOrAll(colorbarIn, colorbarOut, [\"x\", \"y\"]);\n coerce(\"outlinecolor\");\n coerce(\"outlinewidth\");\n coerce(\"bordercolor\");\n coerce(\"borderwidth\");\n coerce(\"bgcolor\");\n var ticklabelposition = Lib.coerce(colorbarIn, colorbarOut, {\n ticklabelposition: {\n valType: \"enumerated\",\n dflt: \"outside\",\n values: isVertical ? [\n \"outside\",\n \"inside\",\n \"outside top\",\n \"inside top\",\n \"outside bottom\",\n \"inside bottom\"\n ] : [\n \"outside\",\n \"inside\",\n \"outside left\",\n \"inside left\",\n \"outside right\",\n \"inside right\"\n ]\n }\n }, \"ticklabelposition\");\n coerce(\"ticklabeloverflow\", ticklabelposition.indexOf(\"inside\") !== -1 ? \"hide past domain\" : \"hide past div\");\n handleTickValueDefaults(colorbarIn, colorbarOut, coerce, \"linear\");\n var font = layout.font;\n var opts = {\n noAutotickangles: true,\n noTicklabelshift: true,\n noTicklabelstandoff: true,\n outerTicks: false,\n font\n };\n if (ticklabelposition.indexOf(\"inside\") !== -1) {\n opts.bgColor = \"black\";\n }\n handlePrefixSuffixDefaults(colorbarIn, colorbarOut, coerce, \"linear\", opts);\n handleTickLabelDefaults(colorbarIn, colorbarOut, coerce, \"linear\", opts);\n handleTickMarkDefaults(colorbarIn, colorbarOut, coerce, \"linear\", opts);\n coerce(\"title.text\", layout._dfltTitle.colorbar);\n var tickFont = colorbarOut.showticklabels ? colorbarOut.tickfont : font;\n var dfltTitleFont = Lib.extendFlat({}, font, {\n family: tickFont.family,\n size: Lib.bigFont(tickFont.size)\n });\n Lib.coerceFont(coerce, \"title.font\", dfltTitleFont);\n coerce(\"title.side\", isVertical ? \"top\" : \"right\");\n };\n }\n });\n\n // src/components/colorscale/defaults.js\n var require_defaults2 = __commonJS({\n \"src/components/colorscale/defaults.js\"(exports, module) {\n \"use strict\";\n var isNumeric = require_fast_isnumeric();\n var Lib = require_lib();\n var hasColorbar = require_has_colorbar();\n var colorbarDefaults = require_defaults();\n var isValidScale = require_scales().isValid;\n var traceIs = require_registry().traceIs;\n function npMaybe(parentCont, prefix) {\n var containerStr = prefix.slice(0, prefix.length - 1);\n return prefix ? Lib.nestedProperty(parentCont, containerStr).get() || {} : parentCont;\n }\n module.exports = function colorScaleDefaults(parentContIn, parentContOut, layout, coerce, opts) {\n var prefix = opts.prefix;\n var cLetter = opts.cLetter;\n var inTrace = \"_module\" in parentContOut;\n var containerIn = npMaybe(parentContIn, prefix);\n var containerOut = npMaybe(parentContOut, prefix);\n var template = npMaybe(parentContOut._template || {}, prefix) || {};\n var thisFn = function() {\n delete parentContIn.coloraxis;\n delete parentContOut.coloraxis;\n return colorScaleDefaults(parentContIn, parentContOut, layout, coerce, opts);\n };\n if (inTrace) {\n var colorAxes = layout._colorAxes || {};\n var colorAx = coerce(prefix + \"coloraxis\");\n if (colorAx) {\n var colorbarVisuals = traceIs(parentContOut, \"contour\") && Lib.nestedProperty(parentContOut, \"contours.coloring\").get() || \"heatmap\";\n var stash = colorAxes[colorAx];\n if (stash) {\n stash[2].push(thisFn);\n if (stash[0] !== colorbarVisuals) {\n stash[0] = false;\n Lib.warn([\n \"Ignoring coloraxis:\",\n colorAx,\n \"setting\",\n \"as it is linked to incompatible colorscales.\"\n ].join(\" \"));\n }\n } else {\n colorAxes[colorAx] = [colorbarVisuals, parentContOut, [thisFn]];\n }\n return;\n }\n }\n var minIn = containerIn[cLetter + \"min\"];\n var maxIn = containerIn[cLetter + \"max\"];\n var validMinMax = isNumeric(minIn) && isNumeric(maxIn) && minIn < maxIn;\n var auto = coerce(prefix + cLetter + \"auto\", !validMinMax);\n if (auto) {\n coerce(prefix + cLetter + \"mid\");\n } else {\n coerce(prefix + cLetter + \"min\");\n coerce(prefix + cLetter + \"max\");\n }\n var sclIn = containerIn.colorscale;\n var sclTemplate = template.colorscale;\n var autoColorscaleDflt;\n if (sclIn !== void 0) autoColorscaleDflt = !isValidScale(sclIn);\n if (sclTemplate !== void 0) autoColorscaleDflt = !isValidScale(sclTemplate);\n coerce(prefix + \"autocolorscale\", autoColorscaleDflt);\n coerce(prefix + \"colorscale\");\n coerce(prefix + \"reversescale\");\n if (prefix !== \"marker.line.\") {\n var showScaleDflt;\n if (prefix && inTrace) showScaleDflt = hasColorbar(containerIn);\n var showScale = coerce(prefix + \"showscale\", showScaleDflt);\n if (showScale) {\n if (prefix && template) containerOut._template = template;\n colorbarDefaults(containerIn, containerOut, layout);\n }\n }\n };\n }\n });\n\n // src/components/colorscale/layout_defaults.js\n var require_layout_defaults = __commonJS({\n \"src/components/colorscale/layout_defaults.js\"(exports, module) {\n \"use strict\";\n var Lib = require_lib();\n var Template = require_plot_template();\n var colorScaleAttrs = require_layout_attributes5();\n var colorScaleDefaults = require_defaults2();\n module.exports = function supplyLayoutDefaults(layoutIn, layoutOut) {\n function coerce(attr, dflt) {\n return Lib.coerce(layoutIn, layoutOut, colorScaleAttrs, attr, dflt);\n }\n coerce(\"colorscale.sequential\");\n coerce(\"colorscale.sequentialminus\");\n coerce(\"colorscale.diverging\");\n var colorAxes = layoutOut._colorAxes;\n var colorAxIn, colorAxOut;\n function coerceAx(attr, dflt) {\n return Lib.coerce(colorAxIn, colorAxOut, colorScaleAttrs.coloraxis, attr, dflt);\n }\n for (var k in colorAxes) {\n var stash = colorAxes[k];\n if (stash[0]) {\n colorAxIn = layoutIn[k] || {};\n colorAxOut = Template.newContainer(layoutOut, k, \"coloraxis\");\n colorAxOut._name = k;\n colorScaleDefaults(colorAxIn, colorAxOut, layoutOut, coerceAx, { prefix: \"\", cLetter: \"c\" });\n } else {\n for (var i = 0; i < stash[2].length; i++) {\n stash[2][i]();\n }\n delete layoutOut._colorAxes[k];\n }\n }\n };\n }\n });\n\n // src/components/colorscale/cross_trace_defaults.js\n var require_cross_trace_defaults = __commonJS({\n \"src/components/colorscale/cross_trace_defaults.js\"(exports, module) {\n \"use strict\";\n var Lib = require_lib();\n var hasColorscale = require_helpers().hasColorscale;\n var extractOpts = require_helpers().extractOpts;\n module.exports = function crossTraceDefaults(fullData, fullLayout) {\n function replace(cont, k2) {\n var val = cont[\"_\" + k2];\n if (val !== void 0) {\n cont[k2] = val;\n }\n }\n function relinkColorAttrs(outerCont, cbOpt) {\n var cont = cbOpt.container ? Lib.nestedProperty(outerCont, cbOpt.container).get() : outerCont;\n if (cont) {\n if (cont.coloraxis) {\n cont._colorAx = fullLayout[cont.coloraxis];\n } else {\n var cOpts = extractOpts(cont);\n var isAuto = cOpts.auto;\n if (isAuto || cOpts.min === void 0) {\n replace(cont, cbOpt.min);\n }\n if (isAuto || cOpts.max === void 0) {\n replace(cont, cbOpt.max);\n }\n if (cOpts.autocolorscale) {\n replace(cont, \"colorscale\");\n }\n }\n }\n }\n for (var i = 0; i < fullData.length; i++) {\n var trace = fullData[i];\n var cbOpts = trace._module.colorbar;\n if (cbOpts) {\n if (Array.isArray(cbOpts)) {\n for (var j = 0; j < cbOpts.length; j++) {\n relinkColorAttrs(trace, cbOpts[j]);\n }\n } else {\n relinkColorAttrs(trace, cbOpts);\n }\n }\n if (hasColorscale(trace, \"marker.line\")) {\n relinkColorAttrs(trace, {\n container: \"marker.line\",\n min: \"cmin\",\n max: \"cmax\"\n });\n }\n }\n for (var k in fullLayout._colorAxes) {\n relinkColorAttrs(fullLayout[k], { min: \"cmin\", max: \"cmax\" });\n }\n };\n }\n });\n\n // src/components/colorscale/calc.js\n var require_calc = __commonJS({\n \"src/components/colorscale/calc.js\"(exports, module) {\n \"use strict\";\n var isNumeric = require_fast_isnumeric();\n var Lib = require_lib();\n var extractOpts = require_helpers().extractOpts;\n module.exports = function calc(gd, trace, opts) {\n var fullLayout = gd._fullLayout;\n var vals = opts.vals;\n var containerStr = opts.containerStr;\n var container = containerStr ? Lib.nestedProperty(trace, containerStr).get() : trace;\n var cOpts = extractOpts(container);\n var auto = cOpts.auto !== false;\n var min = cOpts.min;\n var max = cOpts.max;\n var mid = cOpts.mid;\n var minVal = function() {\n return Lib.aggNums(Math.min, null, vals);\n };\n var maxVal = function() {\n return Lib.aggNums(Math.max, null, vals);\n };\n if (min === void 0) {\n min = minVal();\n } else if (auto) {\n if (container._colorAx && isNumeric(min)) {\n min = Math.min(min, minVal());\n } else {\n min = minVal();\n }\n }\n if (max === void 0) {\n max = maxVal();\n } else if (auto) {\n if (container._colorAx && isNumeric(max)) {\n max = Math.max(max, maxVal());\n } else {\n max = maxVal();\n }\n }\n if (auto && mid !== void 0) {\n if (max - mid > mid - min) {\n min = mid - (max - mid);\n } else if (max - mid < mid - min) {\n max = mid + (mid - min);\n }\n }\n if (min === max) {\n min -= 0.5;\n max += 0.5;\n }\n cOpts._sync(\"min\", min);\n cOpts._sync(\"max\", max);\n if (cOpts.autocolorscale) {\n var scl;\n if (min * max < 0) scl = fullLayout.colorscale.diverging;\n else if (min >= 0) scl = fullLayout.colorscale.sequential;\n else scl = fullLayout.colorscale.sequentialminus;\n cOpts._sync(\"colorscale\", scl);\n }\n };\n }\n });\n\n // src/components/colorscale/index.js\n var require_colorscale = __commonJS({\n \"src/components/colorscale/index.js\"(exports, module) {\n \"use strict\";\n var scales = require_scales();\n var helpers = require_helpers();\n module.exports = {\n moduleType: \"component\",\n name: \"colorscale\",\n attributes: require_attributes8(),\n layoutAttributes: require_layout_attributes5(),\n supplyLayoutDefaults: require_layout_defaults(),\n handleDefaults: require_defaults2(),\n crossTraceDefaults: require_cross_trace_defaults(),\n calc: require_calc(),\n // ./scales.js is required in lib/coerce.js ;\n // it needs to be a separate module to avoid a circular dependency\n scales: scales.scales,\n defaultScale: scales.defaultScale,\n getScale: scales.get,\n isValidScale: scales.isValid,\n hasColorscale: helpers.hasColorscale,\n extractOpts: helpers.extractOpts,\n extractScale: helpers.extractScale,\n flipScale: helpers.flipScale,\n makeColorScaleFunc: helpers.makeColorScaleFunc,\n makeColorScaleFuncFromTrace: helpers.makeColorScaleFuncFromTrace\n };\n }\n });\n\n // src/traces/scatter/subtypes.js\n var require_subtypes = __commonJS({\n \"src/traces/scatter/subtypes.js\"(exports, module) {\n \"use strict\";\n var Lib = require_lib();\n var isTypedArraySpec = require_array().isTypedArraySpec;\n module.exports = {\n hasLines: function(trace) {\n return trace.visible && trace.mode && trace.mode.indexOf(\"lines\") !== -1;\n },\n hasMarkers: function(trace) {\n return trace.visible && (trace.mode && trace.mode.indexOf(\"markers\") !== -1 || // until splom implements 'mode'\n trace.type === \"splom\");\n },\n hasText: function(trace) {\n return trace.visible && trace.mode && trace.mode.indexOf(\"text\") !== -1;\n },\n isBubble: function(trace) {\n var marker = trace.marker;\n return Lib.isPlainObject(marker) && (Lib.isArrayOrTypedArray(marker.size) || isTypedArraySpec(marker.size));\n }\n };\n }\n });\n\n // src/traces/scatter/make_bubble_size_func.js\n var require_make_bubble_size_func = __commonJS({\n \"src/traces/scatter/make_bubble_size_func.js\"(exports, module) {\n \"use strict\";\n var isNumeric = require_fast_isnumeric();\n module.exports = function makeBubbleSizeFn(trace, factor) {\n if (!factor) {\n factor = 2;\n }\n var marker = trace.marker;\n var sizeRef = marker.sizeref || 1;\n var sizeMin = marker.sizemin || 0;\n var baseFn = marker.sizemode === \"area\" ? function(v) {\n return Math.sqrt(v / sizeRef);\n } : function(v) {\n return v / sizeRef;\n };\n return function(v) {\n var baseSize = baseFn(v / factor);\n return isNumeric(baseSize) && baseSize > 0 ? Math.max(baseSize, sizeMin) : 0;\n };\n };\n }\n });\n\n // src/components/fx/helpers.js\n var require_helpers2 = __commonJS({\n \"src/components/fx/helpers.js\"(exports) {\n \"use strict\";\n var Lib = require_lib();\n exports.getSubplot = function(trace) {\n return trace.subplot || trace.xaxis + trace.yaxis || trace.geo;\n };\n exports.isTraceInSubplots = function(trace, subplots) {\n if (trace.type === \"splom\") {\n var xaxes = trace.xaxes || [];\n var yaxes = trace.yaxes || [];\n for (var i = 0; i < xaxes.length; i++) {\n for (var j = 0; j < yaxes.length; j++) {\n if (subplots.indexOf(xaxes[i] + yaxes[j]) !== -1) {\n return true;\n }\n }\n }\n return false;\n }\n return subplots.indexOf(exports.getSubplot(trace)) !== -1;\n };\n exports.flat = function(subplots, v) {\n var out = new Array(subplots.length);\n for (var i = 0; i < subplots.length; i++) {\n out[i] = v;\n }\n return out;\n };\n exports.p2c = function(axArray, v) {\n var out = new Array(axArray.length);\n for (var i = 0; i < axArray.length; i++) {\n out[i] = axArray[i].p2c(v);\n }\n return out;\n };\n exports.getDistanceFunction = function(mode, dx, dy, dxy) {\n if (mode === \"closest\") return dxy || exports.quadrature(dx, dy);\n return mode.charAt(0) === \"x\" ? dx : dy;\n };\n exports.getClosest = function(cd, distfn, pointData) {\n if (pointData.index !== false) {\n if (pointData.index >= 0 && pointData.index < cd.length) {\n pointData.distance = 0;\n } else pointData.index = false;\n } else {\n var newDistance = Infinity;\n var len = cd.length;\n for (var i = 0; i < len; i++) {\n newDistance = distfn(cd[i]);\n if (newDistance <= pointData.distance) {\n pointData.index = i;\n pointData.distance = newDistance;\n }\n }\n }\n return pointData;\n };\n exports.inbox = function(v0, v1, passVal) {\n return v0 * v1 < 0 || v0 === 0 ? passVal : Infinity;\n };\n exports.quadrature = function(dx, dy) {\n return function(di) {\n var x = dx(di);\n var y = dy(di);\n return Math.sqrt(x * x + y * y);\n };\n };\n exports.makeEventData = function(pt, trace, cd) {\n var pointNumber = \"index\" in pt ? pt.index : pt.pointNumber;\n var out = {\n data: trace._input,\n fullData: trace,\n curveNumber: trace.index,\n pointNumber\n };\n if (trace._indexToPoints) {\n var pointIndices = trace._indexToPoints[pointNumber];\n if (pointIndices.length === 1) {\n out.pointIndex = pointIndices[0];\n } else {\n out.pointIndices = pointIndices;\n }\n } else {\n out.pointIndex = pointNumber;\n }\n if (trace._module.eventData) {\n out = trace._module.eventData(out, pt, trace, cd, pointNumber);\n } else {\n if (\"xVal\" in pt) out.x = pt.xVal;\n else if (\"x\" in pt) out.x = pt.x;\n if (\"yVal\" in pt) out.y = pt.yVal;\n else if (\"y\" in pt) out.y = pt.y;\n if (pt.xa) out.xaxis = pt.xa;\n if (pt.ya) out.yaxis = pt.ya;\n if (pt.zLabelVal !== void 0) out.z = pt.zLabelVal;\n }\n exports.appendArrayPointValue(out, trace, pointNumber);\n return out;\n };\n exports.appendArrayPointValue = function(pointData, trace, pointNumber) {\n var arrayAttrs = trace._arrayAttrs;\n if (!arrayAttrs) {\n return;\n }\n for (var i = 0; i < arrayAttrs.length; i++) {\n var astr = arrayAttrs[i];\n var key = getPointKey(astr);\n if (pointData[key] === void 0) {\n var val = Lib.nestedProperty(trace, astr).get();\n var pointVal = getPointData(val, pointNumber);\n if (pointVal !== void 0) pointData[key] = pointVal;\n }\n }\n };\n exports.appendArrayMultiPointValues = function(pointData, trace, pointNumbers) {\n var arrayAttrs = trace._arrayAttrs;\n if (!arrayAttrs) {\n return;\n }\n for (var i = 0; i < arrayAttrs.length; i++) {\n var astr = arrayAttrs[i];\n var key = getPointKey(astr);\n if (pointData[key] === void 0) {\n var val = Lib.nestedProperty(trace, astr).get();\n var keyVal = new Array(pointNumbers.length);\n for (var j = 0; j < pointNumbers.length; j++) {\n keyVal[j] = getPointData(val, pointNumbers[j]);\n }\n pointData[key] = keyVal;\n }\n }\n };\n var pointKeyMap = {\n ids: \"id\",\n locations: \"location\",\n labels: \"label\",\n values: \"value\",\n \"marker.colors\": \"color\",\n parents: \"parent\"\n };\n function getPointKey(astr) {\n return pointKeyMap[astr] || astr;\n }\n function getPointData(val, pointNumber) {\n if (Array.isArray(pointNumber)) {\n if (Array.isArray(val) && Array.isArray(val[pointNumber[0]])) {\n return val[pointNumber[0]][pointNumber[1]];\n }\n } else {\n return val[pointNumber];\n }\n }\n var xyHoverMode = {\n x: true,\n y: true\n };\n var unifiedHoverMode = {\n \"x unified\": true,\n \"y unified\": true\n };\n exports.isUnifiedHover = function(hovermode) {\n if (typeof hovermode !== \"string\") return false;\n return !!unifiedHoverMode[hovermode];\n };\n exports.isXYhover = function(hovermode) {\n if (typeof hovermode !== \"string\") return false;\n return !!xyHoverMode[hovermode];\n };\n }\n });\n\n // node_modules/parse-svg-path/index.js\n var require_parse_svg_path = __commonJS({\n \"node_modules/parse-svg-path/index.js\"(exports, module) {\n module.exports = parse;\n var length = { a: 7, c: 6, h: 1, l: 2, m: 2, q: 4, s: 4, t: 2, v: 1, z: 0 };\n var segment = /([astvzqmhlc])([^astvzqmhlc]*)/ig;\n function parse(path) {\n var data = [];\n path.replace(segment, function(_, command, args) {\n var type = command.toLowerCase();\n args = parseValues(args);\n if (type == \"m\" && args.length > 2) {\n data.push([command].concat(args.splice(0, 2)));\n type = \"l\";\n command = command == \"m\" ? \"l\" : \"L\";\n }\n while (true) {\n if (args.length == length[type]) {\n args.unshift(command);\n return data.push(args);\n }\n if (args.length < length[type]) throw new Error(\"malformed path data\");\n data.push([command].concat(args.splice(0, length[type])));\n }\n });\n return data;\n }\n var number = /-?[0-9]*\\.?[0-9]+(?:e[-+]?\\d+)?/ig;\n function parseValues(args) {\n var numbers = args.match(number);\n return numbers ? numbers.map(Number) : [];\n }\n }\n });\n\n // src/components/drawing/symbol_defs.js\n var require_symbol_defs = __commonJS({\n \"src/components/drawing/symbol_defs.js\"(exports, module) {\n \"use strict\";\n var parseSvgPath = require_parse_svg_path();\n var round = (\n // require('@plotly/d3').round;\n function(x, n) {\n return n ? Math.round(x * (n = Math.pow(10, n))) / n : Math.round(x);\n }\n );\n var emptyPath = \"M0,0Z\";\n var sqrt2 = Math.sqrt(2);\n var sqrt3 = Math.sqrt(3);\n var PI = Math.PI;\n var cos = Math.cos;\n var sin = Math.sin;\n module.exports = {\n circle: {\n n: 0,\n f: function(r, angle, standoff) {\n if (skipAngle(angle)) return emptyPath;\n var rs = round(r, 2);\n var circle = \"M\" + rs + \",0A\" + rs + \",\" + rs + \" 0 1,1 0,-\" + rs + \"A\" + rs + \",\" + rs + \" 0 0,1 \" + rs + \",0Z\";\n return standoff ? align(angle, standoff, circle) : circle;\n }\n },\n square: {\n n: 1,\n f: function(r, angle, standoff) {\n if (skipAngle(angle)) return emptyPath;\n var rs = round(r, 2);\n return align(angle, standoff, \"M\" + rs + \",\" + rs + \"H-\" + rs + \"V-\" + rs + \"H\" + rs + \"Z\");\n }\n },\n diamond: {\n n: 2,\n f: function(r, angle, standoff) {\n if (skipAngle(angle)) return emptyPath;\n var rd = round(r * 1.3, 2);\n return align(angle, standoff, \"M\" + rd + \",0L0,\" + rd + \"L-\" + rd + \",0L0,-\" + rd + \"Z\");\n }\n },\n cross: {\n n: 3,\n f: function(r, angle, standoff) {\n if (skipAngle(angle)) return emptyPath;\n var rc = round(r * 0.4, 2);\n var rc2 = round(r * 1.2, 2);\n return align(angle, standoff, \"M\" + rc2 + \",\" + rc + \"H\" + rc + \"V\" + rc2 + \"H-\" + rc + \"V\" + rc + \"H-\" + rc2 + \"V-\" + rc + \"H-\" + rc + \"V-\" + rc2 + \"H\" + rc + \"V-\" + rc + \"H\" + rc2 + \"Z\");\n }\n },\n x: {\n n: 4,\n f: function(r, angle, standoff) {\n if (skipAngle(angle)) return emptyPath;\n var rx = round(r * 0.8 / sqrt2, 2);\n var ne = \"l\" + rx + \",\" + rx;\n var se = \"l\" + rx + \",-\" + rx;\n var sw = \"l-\" + rx + \",-\" + rx;\n var nw = \"l-\" + rx + \",\" + rx;\n return align(angle, standoff, \"M0,\" + rx + ne + se + sw + se + sw + nw + sw + nw + ne + nw + ne + \"Z\");\n }\n },\n \"triangle-up\": {\n n: 5,\n f: function(r, angle, standoff) {\n if (skipAngle(angle)) return emptyPath;\n var rt = round(r * 2 / sqrt3, 2);\n var r2 = round(r / 2, 2);\n var rs = round(r, 2);\n return align(angle, standoff, \"M-\" + rt + \",\" + r2 + \"H\" + rt + \"L0,-\" + rs + \"Z\");\n }\n },\n \"triangle-down\": {\n n: 6,\n f: function(r, angle, standoff) {\n if (skipAngle(angle)) return emptyPath;\n var rt = round(r * 2 / sqrt3, 2);\n var r2 = round(r / 2, 2);\n var rs = round(r, 2);\n return align(angle, standoff, \"M-\" + rt + \",-\" + r2 + \"H\" + rt + \"L0,\" + rs + \"Z\");\n }\n },\n \"triangle-left\": {\n n: 7,\n f: function(r, angle, standoff) {\n if (skipAngle(angle)) return emptyPath;\n var rt = round(r * 2 / sqrt3, 2);\n var r2 = round(r / 2, 2);\n var rs = round(r, 2);\n return align(angle, standoff, \"M\" + r2 + \",-\" + rt + \"V\" + rt + \"L-\" + rs + \",0Z\");\n }\n },\n \"triangle-right\": {\n n: 8,\n f: function(r, angle, standoff) {\n if (skipAngle(angle)) return emptyPath;\n var rt = round(r * 2 / sqrt3, 2);\n var r2 = round(r / 2, 2);\n var rs = round(r, 2);\n return align(angle, standoff, \"M-\" + r2 + \",-\" + rt + \"V\" + rt + \"L\" + rs + \",0Z\");\n }\n },\n \"triangle-ne\": {\n n: 9,\n f: function(r, angle, standoff) {\n if (skipAngle(angle)) return emptyPath;\n var r1 = round(r * 0.6, 2);\n var r2 = round(r * 1.2, 2);\n return align(angle, standoff, \"M-\" + r2 + \",-\" + r1 + \"H\" + r1 + \"V\" + r2 + \"Z\");\n }\n },\n \"triangle-se\": {\n n: 10,\n f: function(r, angle, standoff) {\n if (skipAngle(angle)) return emptyPath;\n var r1 = round(r * 0.6, 2);\n var r2 = round(r * 1.2, 2);\n return align(angle, standoff, \"M\" + r1 + \",-\" + r2 + \"V\" + r1 + \"H-\" + r2 + \"Z\");\n }\n },\n \"triangle-sw\": {\n n: 11,\n f: function(r, angle, standoff) {\n if (skipAngle(angle)) return emptyPath;\n var r1 = round(r * 0.6, 2);\n var r2 = round(r * 1.2, 2);\n return align(angle, standoff, \"M\" + r2 + \",\" + r1 + \"H-\" + r1 + \"V-\" + r2 + \"Z\");\n }\n },\n \"triangle-nw\": {\n n: 12,\n f: function(r, angle, standoff) {\n if (skipAngle(angle)) return emptyPath;\n var r1 = round(r * 0.6, 2);\n var r2 = round(r * 1.2, 2);\n return align(angle, standoff, \"M-\" + r1 + \",\" + r2 + \"V-\" + r1 + \"H\" + r2 + \"Z\");\n }\n },\n pentagon: {\n n: 13,\n f: function(r, angle, standoff) {\n if (skipAngle(angle)) return emptyPath;\n var x1 = round(r * 0.951, 2);\n var x2 = round(r * 0.588, 2);\n var y0 = round(-r, 2);\n var y1 = round(r * -0.309, 2);\n var y2 = round(r * 0.809, 2);\n return align(angle, standoff, \"M\" + x1 + \",\" + y1 + \"L\" + x2 + \",\" + y2 + \"H-\" + x2 + \"L-\" + x1 + \",\" + y1 + \"L0,\" + y0 + \"Z\");\n }\n },\n hexagon: {\n n: 14,\n f: function(r, angle, standoff) {\n if (skipAngle(angle)) return emptyPath;\n var y0 = round(r, 2);\n var y1 = round(r / 2, 2);\n var x = round(r * sqrt3 / 2, 2);\n return align(angle, standoff, \"M\" + x + \",-\" + y1 + \"V\" + y1 + \"L0,\" + y0 + \"L-\" + x + \",\" + y1 + \"V-\" + y1 + \"L0,-\" + y0 + \"Z\");\n }\n },\n hexagon2: {\n n: 15,\n f: function(r, angle, standoff) {\n if (skipAngle(angle)) return emptyPath;\n var x0 = round(r, 2);\n var x1 = round(r / 2, 2);\n var y = round(r * sqrt3 / 2, 2);\n return align(angle, standoff, \"M-\" + x1 + \",\" + y + \"H\" + x1 + \"L\" + x0 + \",0L\" + x1 + \",-\" + y + \"H-\" + x1 + \"L-\" + x0 + \",0Z\");\n }\n },\n octagon: {\n n: 16,\n f: function(r, angle, standoff) {\n if (skipAngle(angle)) return emptyPath;\n var a = round(r * 0.924, 2);\n var b = round(r * 0.383, 2);\n return align(angle, standoff, \"M-\" + b + \",-\" + a + \"H\" + b + \"L\" + a + \",-\" + b + \"V\" + b + \"L\" + b + \",\" + a + \"H-\" + b + \"L-\" + a + \",\" + b + \"V-\" + b + \"Z\");\n }\n },\n star: {\n n: 17,\n f: function(r, angle, standoff) {\n if (skipAngle(angle)) return emptyPath;\n var rs = r * 1.4;\n var x1 = round(rs * 0.225, 2);\n var x2 = round(rs * 0.951, 2);\n var x3 = round(rs * 0.363, 2);\n var x4 = round(rs * 0.588, 2);\n var y0 = round(-rs, 2);\n var y1 = round(rs * -0.309, 2);\n var y3 = round(rs * 0.118, 2);\n var y4 = round(rs * 0.809, 2);\n var y5 = round(rs * 0.382, 2);\n return align(angle, standoff, \"M\" + x1 + \",\" + y1 + \"H\" + x2 + \"L\" + x3 + \",\" + y3 + \"L\" + x4 + \",\" + y4 + \"L0,\" + y5 + \"L-\" + x4 + \",\" + y4 + \"L-\" + x3 + \",\" + y3 + \"L-\" + x2 + \",\" + y1 + \"H-\" + x1 + \"L0,\" + y0 + \"Z\");\n }\n },\n hexagram: {\n n: 18,\n f: function(r, angle, standoff) {\n if (skipAngle(angle)) return emptyPath;\n var y = round(r * 0.66, 2);\n var x1 = round(r * 0.38, 2);\n var x2 = round(r * 0.76, 2);\n return align(angle, standoff, \"M-\" + x2 + \",0l-\" + x1 + \",-\" + y + \"h\" + x2 + \"l\" + x1 + \",-\" + y + \"l\" + x1 + \",\" + y + \"h\" + x2 + \"l-\" + x1 + \",\" + y + \"l\" + x1 + \",\" + y + \"h-\" + x2 + \"l-\" + x1 + \",\" + y + \"l-\" + x1 + \",-\" + y + \"h-\" + x2 + \"Z\");\n }\n },\n \"star-triangle-up\": {\n n: 19,\n f: function(r, angle, standoff) {\n if (skipAngle(angle)) return emptyPath;\n var x = round(r * sqrt3 * 0.8, 2);\n var y1 = round(r * 0.8, 2);\n var y2 = round(r * 1.6, 2);\n var rc = round(r * 4, 2);\n var aPart = \"A \" + rc + \",\" + rc + \" 0 0 1 \";\n return align(angle, standoff, \"M-\" + x + \",\" + y1 + aPart + x + \",\" + y1 + aPart + \"0,-\" + y2 + aPart + \"-\" + x + \",\" + y1 + \"Z\");\n }\n },\n \"star-triangle-down\": {\n n: 20,\n f: function(r, angle, standoff) {\n if (skipAngle(angle)) return emptyPath;\n var x = round(r * sqrt3 * 0.8, 2);\n var y1 = round(r * 0.8, 2);\n var y2 = round(r * 1.6, 2);\n var rc = round(r * 4, 2);\n var aPart = \"A \" + rc + \",\" + rc + \" 0 0 1 \";\n return align(angle, standoff, \"M\" + x + \",-\" + y1 + aPart + \"-\" + x + \",-\" + y1 + aPart + \"0,\" + y2 + aPart + x + \",-\" + y1 + \"Z\");\n }\n },\n \"star-square\": {\n n: 21,\n f: function(r, angle, standoff) {\n if (skipAngle(angle)) return emptyPath;\n var rp = round(r * 1.1, 2);\n var rc = round(r * 2, 2);\n var aPart = \"A \" + rc + \",\" + rc + \" 0 0 1 \";\n return align(angle, standoff, \"M-\" + rp + \",-\" + rp + aPart + \"-\" + rp + \",\" + rp + aPart + rp + \",\" + rp + aPart + rp + \",-\" + rp + aPart + \"-\" + rp + \",-\" + rp + \"Z\");\n }\n },\n \"star-diamond\": {\n n: 22,\n f: function(r, angle, standoff) {\n if (skipAngle(angle)) return emptyPath;\n var rp = round(r * 1.4, 2);\n var rc = round(r * 1.9, 2);\n var aPart = \"A \" + rc + \",\" + rc + \" 0 0 1 \";\n return align(angle, standoff, \"M-\" + rp + \",0\" + aPart + \"0,\" + rp + aPart + rp + \",0\" + aPart + \"0,-\" + rp + aPart + \"-\" + rp + \",0Z\");\n }\n },\n \"diamond-tall\": {\n n: 23,\n f: function(r, angle, standoff) {\n if (skipAngle(angle)) return emptyPath;\n var x = round(r * 0.7, 2);\n var y = round(r * 1.4, 2);\n return align(angle, standoff, \"M0,\" + y + \"L\" + x + \",0L0,-\" + y + \"L-\" + x + \",0Z\");\n }\n },\n \"diamond-wide\": {\n n: 24,\n f: function(r, angle, standoff) {\n if (skipAngle(angle)) return emptyPath;\n var x = round(r * 1.4, 2);\n var y = round(r * 0.7, 2);\n return align(angle, standoff, \"M0,\" + y + \"L\" + x + \",0L0,-\" + y + \"L-\" + x + \",0Z\");\n }\n },\n hourglass: {\n n: 25,\n f: function(r, angle, standoff) {\n if (skipAngle(angle)) return emptyPath;\n var rs = round(r, 2);\n return align(angle, standoff, \"M\" + rs + \",\" + rs + \"H-\" + rs + \"L\" + rs + \",-\" + rs + \"H-\" + rs + \"Z\");\n },\n noDot: true\n },\n bowtie: {\n n: 26,\n f: function(r, angle, standoff) {\n if (skipAngle(angle)) return emptyPath;\n var rs = round(r, 2);\n return align(angle, standoff, \"M\" + rs + \",\" + rs + \"V-\" + rs + \"L-\" + rs + \",\" + rs + \"V-\" + rs + \"Z\");\n },\n noDot: true\n },\n \"circle-cross\": {\n n: 27,\n f: function(r, angle, standoff) {\n if (skipAngle(angle)) return emptyPath;\n var rs = round(r, 2);\n return align(angle, standoff, \"M0,\" + rs + \"V-\" + rs + \"M\" + rs + \",0H-\" + rs + \"M\" + rs + \",0A\" + rs + \",\" + rs + \" 0 1,1 0,-\" + rs + \"A\" + rs + \",\" + rs + \" 0 0,1 \" + rs + \",0Z\");\n },\n needLine: true,\n noDot: true\n },\n \"circle-x\": {\n n: 28,\n f: function(r, angle, standoff) {\n if (skipAngle(angle)) return emptyPath;\n var rs = round(r, 2);\n var rc = round(r / sqrt2, 2);\n return align(angle, standoff, \"M\" + rc + \",\" + rc + \"L-\" + rc + \",-\" + rc + \"M\" + rc + \",-\" + rc + \"L-\" + rc + \",\" + rc + \"M\" + rs + \",0A\" + rs + \",\" + rs + \" 0 1,1 0,-\" + rs + \"A\" + rs + \",\" + rs + \" 0 0,1 \" + rs + \",0Z\");\n },\n needLine: true,\n noDot: true\n },\n \"square-cross\": {\n n: 29,\n f: function(r, angle, standoff) {\n if (skipAngle(angle)) return emptyPath;\n var rs = round(r, 2);\n return align(angle, standoff, \"M0,\" + rs + \"V-\" + rs + \"M\" + rs + \",0H-\" + rs + \"M\" + rs + \",\" + rs + \"H-\" + rs + \"V-\" + rs + \"H\" + rs + \"Z\");\n },\n needLine: true,\n noDot: true\n },\n \"square-x\": {\n n: 30,\n f: function(r, angle, standoff) {\n if (skipAngle(angle)) return emptyPath;\n var rs = round(r, 2);\n return align(angle, standoff, \"M\" + rs + \",\" + rs + \"L-\" + rs + \",-\" + rs + \"M\" + rs + \",-\" + rs + \"L-\" + rs + \",\" + rs + \"M\" + rs + \",\" + rs + \"H-\" + rs + \"V-\" + rs + \"H\" + rs + \"Z\");\n },\n needLine: true,\n noDot: true\n },\n \"diamond-cross\": {\n n: 31,\n f: function(r, angle, standoff) {\n if (skipAngle(angle)) return emptyPath;\n var rd = round(r * 1.3, 2);\n return align(angle, standoff, \"M\" + rd + \",0L0,\" + rd + \"L-\" + rd + \",0L0,-\" + rd + \"ZM0,-\" + rd + \"V\" + rd + \"M-\" + rd + \",0H\" + rd);\n },\n needLine: true,\n noDot: true\n },\n \"diamond-x\": {\n n: 32,\n f: function(r, angle, standoff) {\n if (skipAngle(angle)) return emptyPath;\n var rd = round(r * 1.3, 2);\n var r2 = round(r * 0.65, 2);\n return align(angle, standoff, \"M\" + rd + \",0L0,\" + rd + \"L-\" + rd + \",0L0,-\" + rd + \"ZM-\" + r2 + \",-\" + r2 + \"L\" + r2 + \",\" + r2 + \"M-\" + r2 + \",\" + r2 + \"L\" + r2 + \",-\" + r2);\n },\n needLine: true,\n noDot: true\n },\n \"cross-thin\": {\n n: 33,\n f: function(r, angle, standoff) {\n if (skipAngle(angle)) return emptyPath;\n var rc = round(r * 1.4, 2);\n return align(angle, standoff, \"M0,\" + rc + \"V-\" + rc + \"M\" + rc + \",0H-\" + rc);\n },\n needLine: true,\n noDot: true,\n noFill: true\n },\n \"x-thin\": {\n n: 34,\n f: function(r, angle, standoff) {\n if (skipAngle(angle)) return emptyPath;\n var rx = round(r, 2);\n return align(angle, standoff, \"M\" + rx + \",\" + rx + \"L-\" + rx + \",-\" + rx + \"M\" + rx + \",-\" + rx + \"L-\" + rx + \",\" + rx);\n },\n needLine: true,\n noDot: true,\n noFill: true\n },\n asterisk: {\n n: 35,\n f: function(r, angle, standoff) {\n if (skipAngle(angle)) return emptyPath;\n var rc = round(r * 1.2, 2);\n var rs = round(r * 0.85, 2);\n return align(angle, standoff, \"M0,\" + rc + \"V-\" + rc + \"M\" + rc + \",0H-\" + rc + \"M\" + rs + \",\" + rs + \"L-\" + rs + \",-\" + rs + \"M\" + rs + \",-\" + rs + \"L-\" + rs + \",\" + rs);\n },\n needLine: true,\n noDot: true,\n noFill: true\n },\n hash: {\n n: 36,\n f: function(r, angle, standoff) {\n if (skipAngle(angle)) return emptyPath;\n var r1 = round(r / 2, 2);\n var r2 = round(r, 2);\n return align(angle, standoff, \"M\" + r1 + \",\" + r2 + \"V-\" + r2 + \"M\" + (r1 - r2) + \",-\" + r2 + \"V\" + r2 + \"M\" + r2 + \",\" + r1 + \"H-\" + r2 + \"M-\" + r2 + \",\" + (r1 - r2) + \"H\" + r2);\n },\n needLine: true,\n noFill: true\n },\n \"y-up\": {\n n: 37,\n f: function(r, angle, standoff) {\n if (skipAngle(angle)) return emptyPath;\n var x = round(r * 1.2, 2);\n var y0 = round(r * 1.6, 2);\n var y1 = round(r * 0.8, 2);\n return align(angle, standoff, \"M-\" + x + \",\" + y1 + \"L0,0M\" + x + \",\" + y1 + \"L0,0M0,-\" + y0 + \"L0,0\");\n },\n needLine: true,\n noDot: true,\n noFill: true\n },\n \"y-down\": {\n n: 38,\n f: function(r, angle, standoff) {\n if (skipAngle(angle)) return emptyPath;\n var x = round(r * 1.2, 2);\n var y0 = round(r * 1.6, 2);\n var y1 = round(r * 0.8, 2);\n return align(angle, standoff, \"M-\" + x + \",-\" + y1 + \"L0,0M\" + x + \",-\" + y1 + \"L0,0M0,\" + y0 + \"L0,0\");\n },\n needLine: true,\n noDot: true,\n noFill: true\n },\n \"y-left\": {\n n: 39,\n f: function(r, angle, standoff) {\n if (skipAngle(angle)) return emptyPath;\n var y = round(r * 1.2, 2);\n var x0 = round(r * 1.6, 2);\n var x1 = round(r * 0.8, 2);\n return align(angle, standoff, \"M\" + x1 + \",\" + y + \"L0,0M\" + x1 + \",-\" + y + \"L0,0M-\" + x0 + \",0L0,0\");\n },\n needLine: true,\n noDot: true,\n noFill: true\n },\n \"y-right\": {\n n: 40,\n f: function(r, angle, standoff) {\n if (skipAngle(angle)) return emptyPath;\n var y = round(r * 1.2, 2);\n var x0 = round(r * 1.6, 2);\n var x1 = round(r * 0.8, 2);\n return align(angle, standoff, \"M-\" + x1 + \",\" + y + \"L0,0M-\" + x1 + \",-\" + y + \"L0,0M\" + x0 + \",0L0,0\");\n },\n needLine: true,\n noDot: true,\n noFill: true\n },\n \"line-ew\": {\n n: 41,\n f: function(r, angle, standoff) {\n if (skipAngle(angle)) return emptyPath;\n var rc = round(r * 1.4, 2);\n return align(angle, standoff, \"M\" + rc + \",0H-\" + rc);\n },\n needLine: true,\n noDot: true,\n noFill: true\n },\n \"line-ns\": {\n n: 42,\n f: function(r, angle, standoff) {\n if (skipAngle(angle)) return emptyPath;\n var rc = round(r * 1.4, 2);\n return align(angle, standoff, \"M0,\" + rc + \"V-\" + rc);\n },\n needLine: true,\n noDot: true,\n noFill: true\n },\n \"line-ne\": {\n n: 43,\n f: function(r, angle, standoff) {\n if (skipAngle(angle)) return emptyPath;\n var rx = round(r, 2);\n return align(angle, standoff, \"M\" + rx + \",-\" + rx + \"L-\" + rx + \",\" + rx);\n },\n needLine: true,\n noDot: true,\n noFill: true\n },\n \"line-nw\": {\n n: 44,\n f: function(r, angle, standoff) {\n if (skipAngle(angle)) return emptyPath;\n var rx = round(r, 2);\n return align(angle, standoff, \"M\" + rx + \",\" + rx + \"L-\" + rx + \",-\" + rx);\n },\n needLine: true,\n noDot: true,\n noFill: true\n },\n \"arrow-up\": {\n n: 45,\n f: function(r, angle, standoff) {\n if (skipAngle(angle)) return emptyPath;\n var rx = round(r, 2);\n var ry = round(r * 2, 2);\n return align(angle, standoff, \"M0,0L-\" + rx + \",\" + ry + \"H\" + rx + \"Z\");\n },\n backoff: 1,\n noDot: true\n },\n \"arrow-down\": {\n n: 46,\n f: function(r, angle, standoff) {\n if (skipAngle(angle)) return emptyPath;\n var rx = round(r, 2);\n var ry = round(r * 2, 2);\n return align(angle, standoff, \"M0,0L-\" + rx + \",-\" + ry + \"H\" + rx + \"Z\");\n },\n noDot: true\n },\n \"arrow-left\": {\n n: 47,\n f: function(r, angle, standoff) {\n if (skipAngle(angle)) return emptyPath;\n var rx = round(r * 2, 2);\n var ry = round(r, 2);\n return align(angle, standoff, \"M0,0L\" + rx + \",-\" + ry + \"V\" + ry + \"Z\");\n },\n noDot: true\n },\n \"arrow-right\": {\n n: 48,\n f: function(r, angle, standoff) {\n if (skipAngle(angle)) return emptyPath;\n var rx = round(r * 2, 2);\n var ry = round(r, 2);\n return align(angle, standoff, \"M0,0L-\" + rx + \",-\" + ry + \"V\" + ry + \"Z\");\n },\n noDot: true\n },\n \"arrow-bar-up\": {\n n: 49,\n f: function(r, angle, standoff) {\n if (skipAngle(angle)) return emptyPath;\n var rx = round(r, 2);\n var ry = round(r * 2, 2);\n return align(angle, standoff, \"M-\" + rx + \",0H\" + rx + \"M0,0L-\" + rx + \",\" + ry + \"H\" + rx + \"Z\");\n },\n backoff: 1,\n needLine: true,\n noDot: true\n },\n \"arrow-bar-down\": {\n n: 50,\n f: function(r, angle, standoff) {\n if (skipAngle(angle)) return emptyPath;\n var rx = round(r, 2);\n var ry = round(r * 2, 2);\n return align(angle, standoff, \"M-\" + rx + \",0H\" + rx + \"M0,0L-\" + rx + \",-\" + ry + \"H\" + rx + \"Z\");\n },\n needLine: true,\n noDot: true\n },\n \"arrow-bar-left\": {\n n: 51,\n f: function(r, angle, standoff) {\n if (skipAngle(angle)) return emptyPath;\n var rx = round(r * 2, 2);\n var ry = round(r, 2);\n return align(angle, standoff, \"M0,-\" + ry + \"V\" + ry + \"M0,0L\" + rx + \",-\" + ry + \"V\" + ry + \"Z\");\n },\n needLine: true,\n noDot: true\n },\n \"arrow-bar-right\": {\n n: 52,\n f: function(r, angle, standoff) {\n if (skipAngle(angle)) return emptyPath;\n var rx = round(r * 2, 2);\n var ry = round(r, 2);\n return align(angle, standoff, \"M0,-\" + ry + \"V\" + ry + \"M0,0L-\" + rx + \",-\" + ry + \"V\" + ry + \"Z\");\n },\n needLine: true,\n noDot: true\n },\n arrow: {\n n: 53,\n f: function(r, angle, standoff) {\n if (skipAngle(angle)) return emptyPath;\n var headAngle = PI / 2.5;\n var x = 2 * r * cos(headAngle);\n var y = 2 * r * sin(headAngle);\n return align(\n angle,\n standoff,\n \"M0,0L\" + -x + \",\" + y + \"L\" + x + \",\" + y + \"Z\"\n );\n },\n backoff: 0.9,\n noDot: true\n },\n \"arrow-wide\": {\n n: 54,\n f: function(r, angle, standoff) {\n if (skipAngle(angle)) return emptyPath;\n var headAngle = PI / 4;\n var x = 2 * r * cos(headAngle);\n var y = 2 * r * sin(headAngle);\n return align(\n angle,\n standoff,\n \"M0,0L\" + -x + \",\" + y + \"A \" + 2 * r + \",\" + 2 * r + \" 0 0 1 \" + x + \",\" + y + \"Z\"\n );\n },\n backoff: 0.4,\n noDot: true\n }\n };\n function skipAngle(angle) {\n return angle === null;\n }\n var lastPathIn;\n var lastPathOut;\n var lastAngle;\n var lastStandoff;\n function align(angle, standoff, path) {\n if ((!angle || angle % 360 === 0) && !standoff) return path;\n if (lastAngle === angle && lastStandoff === standoff && lastPathIn === path) return lastPathOut;\n lastAngle = angle;\n lastStandoff = standoff;\n lastPathIn = path;\n function rotate(t2, xy) {\n var cosT = cos(t2);\n var sinT = sin(t2);\n var x2 = xy[0];\n var y2 = xy[1] + (standoff || 0);\n return [\n x2 * cosT - y2 * sinT,\n x2 * sinT + y2 * cosT\n ];\n }\n var t = angle / 180 * PI;\n var x = 0;\n var y = 0;\n var cmd = parseSvgPath(path);\n var str = \"\";\n for (var i = 0; i < cmd.length; i++) {\n var cmdI = cmd[i];\n var op = cmdI[0];\n var x0 = x;\n var y0 = y;\n if (op === \"M\" || op === \"L\") {\n x = +cmdI[1];\n y = +cmdI[2];\n } else if (op === \"m\" || op === \"l\") {\n x += +cmdI[1];\n y += +cmdI[2];\n } else if (op === \"H\") {\n x = +cmdI[1];\n } else if (op === \"h\") {\n x += +cmdI[1];\n } else if (op === \"V\") {\n y = +cmdI[1];\n } else if (op === \"v\") {\n y += +cmdI[1];\n } else if (op === \"A\") {\n x = +cmdI[1];\n y = +cmdI[2];\n var E = rotate(t, [+cmdI[6], +cmdI[7]]);\n cmdI[6] = E[0];\n cmdI[7] = E[1];\n cmdI[3] = +cmdI[3] + angle;\n }\n if (op === \"H\" || op === \"V\") op = \"L\";\n if (op === \"h\" || op === \"v\") op = \"l\";\n if (op === \"m\" || op === \"l\") {\n x -= x0;\n y -= y0;\n }\n var B = rotate(t, [x, y]);\n if (op === \"H\" || op === \"V\") op = \"L\";\n if (op === \"M\" || op === \"L\" || op === \"m\" || op === \"l\") {\n cmdI[1] = B[0];\n cmdI[2] = B[1];\n }\n cmdI[0] = op;\n str += cmdI[0] + cmdI.slice(1).join(\",\");\n }\n lastPathOut = str;\n return str;\n }\n }\n });\n\n // src/components/drawing/index.js\n var require_drawing = __commonJS({\n \"src/components/drawing/index.js\"(exports, module) {\n \"use strict\";\n var d3 = require_d3();\n var Lib = require_lib();\n var numberFormat = Lib.numberFormat;\n var isNumeric = require_fast_isnumeric();\n var tinycolor = require_tinycolor();\n var Registry = require_registry();\n var Color = require_color();\n var Colorscale = require_colorscale();\n var strTranslate = Lib.strTranslate;\n var svgTextUtils = require_svg_text_utils();\n var xmlnsNamespaces = require_xmlns_namespaces();\n var alignment = require_alignment();\n var LINE_SPACING = alignment.LINE_SPACING;\n var DESELECTDIM = require_interactions().DESELECTDIM;\n var subTypes = require_subtypes();\n var makeBubbleSizeFn = require_make_bubble_size_func();\n var appendArrayPointValue = require_helpers2().appendArrayPointValue;\n var drawing = module.exports = {};\n drawing.font = function(s, font) {\n var variant = font.variant;\n var style = font.style;\n var weight = font.weight;\n var color = font.color;\n var size = font.size;\n var family = font.family;\n var shadow = font.shadow;\n var lineposition = font.lineposition;\n var textcase = font.textcase;\n if (family) s.style(\"font-family\", family);\n if (size + 1) s.style(\"font-size\", size + \"px\");\n if (color) s.call(Color.fill, color);\n if (weight) s.style(\"font-weight\", weight);\n if (style) s.style(\"font-style\", style);\n if (variant) s.style(\"font-variant\", variant);\n if (textcase) s.style(\"text-transform\", dropNone(textcase2transform(textcase)));\n if (shadow) s.style(\"text-shadow\", shadow === \"auto\" ? svgTextUtils.makeTextShadow(Color.contrast(color)) : dropNone(shadow));\n if (lineposition) s.style(\"text-decoration-line\", dropNone(lineposition2decorationLine(lineposition)));\n };\n function dropNone(a) {\n return a === \"none\" ? void 0 : a;\n }\n var textcase2transformOptions = {\n normal: \"none\",\n lower: \"lowercase\",\n upper: \"uppercase\",\n \"word caps\": \"capitalize\"\n };\n function textcase2transform(textcase) {\n return textcase2transformOptions[textcase];\n }\n function lineposition2decorationLine(lineposition) {\n return lineposition.replace(\"under\", \"underline\").replace(\"over\", \"overline\").replace(\"through\", \"line-through\").split(\"+\").join(\" \");\n }\n drawing.setPosition = function(s, x, y) {\n s.attr(\"x\", x).attr(\"y\", y);\n };\n drawing.setSize = function(s, w, h) {\n s.attr(\"width\", w).attr(\"height\", h);\n };\n drawing.setRect = function(s, x, y, w, h) {\n s.call(drawing.setPosition, x, y).call(drawing.setSize, w, h);\n };\n drawing.translatePoint = function(d, sel, xa, ya) {\n var x = xa.c2p(d.x);\n var y = ya.c2p(d.y);\n if (isNumeric(x) && isNumeric(y) && sel.node()) {\n if (sel.node().nodeName === \"text\") {\n sel.attr(\"x\", x).attr(\"y\", y);\n } else {\n sel.attr(\"transform\", strTranslate(x, y));\n }\n } else {\n return false;\n }\n return true;\n };\n drawing.translatePoints = function(s, xa, ya) {\n s.each(function(d) {\n var sel = d3.select(this);\n drawing.translatePoint(d, sel, xa, ya);\n });\n };\n drawing.hideOutsideRangePoint = function(d, sel, xa, ya, xcalendar, ycalendar) {\n sel.attr(\n \"display\",\n xa.isPtWithinRange(d, xcalendar) && ya.isPtWithinRange(d, ycalendar) ? null : \"none\"\n );\n };\n drawing.hideOutsideRangePoints = function(traceGroups, subplot) {\n if (!subplot._hasClipOnAxisFalse) return;\n var xa = subplot.xaxis;\n var ya = subplot.yaxis;\n traceGroups.each(function(d) {\n var trace = d[0].trace;\n var xcalendar = trace.xcalendar;\n var ycalendar = trace.ycalendar;\n var selector = Registry.traceIs(trace, \"bar-like\") ? \".bartext\" : \".point,.textpoint\";\n traceGroups.selectAll(selector).each(function(d2) {\n drawing.hideOutsideRangePoint(d2, d3.select(this), xa, ya, xcalendar, ycalendar);\n });\n });\n };\n drawing.crispRound = function(gd, lineWidth, dflt) {\n if (!lineWidth || !isNumeric(lineWidth)) return dflt || 0;\n if (gd._context.staticPlot) return lineWidth;\n if (lineWidth < 1) return 1;\n return Math.round(lineWidth);\n };\n drawing.singleLineStyle = function(d, s, lw, lc, ld) {\n s.style(\"fill\", \"none\");\n var line = (((d || [])[0] || {}).trace || {}).line || {};\n var lw1 = lw || line.width || 0;\n var dash = ld || line.dash || \"\";\n Color.stroke(s, lc || line.color);\n drawing.dashLine(s, dash, lw1);\n };\n drawing.lineGroupStyle = function(s, lw, lc, ld) {\n s.style(\"fill\", \"none\").each(function(d) {\n var line = (((d || [])[0] || {}).trace || {}).line || {};\n var lw1 = lw || line.width || 0;\n var dash = ld || line.dash || \"\";\n d3.select(this).call(Color.stroke, lc || line.color).call(drawing.dashLine, dash, lw1);\n });\n };\n drawing.dashLine = function(s, dash, lineWidth) {\n lineWidth = +lineWidth || 0;\n dash = drawing.dashStyle(dash, lineWidth);\n s.style({\n \"stroke-dasharray\": dash,\n \"stroke-width\": lineWidth + \"px\"\n });\n };\n drawing.dashStyle = function(dash, lineWidth) {\n lineWidth = +lineWidth || 1;\n var dlw = Math.max(lineWidth, 3);\n if (dash === \"solid\") dash = \"\";\n else if (dash === \"dot\") dash = dlw + \"px,\" + dlw + \"px\";\n else if (dash === \"dash\") dash = 3 * dlw + \"px,\" + 3 * dlw + \"px\";\n else if (dash === \"longdash\") dash = 5 * dlw + \"px,\" + 5 * dlw + \"px\";\n else if (dash === \"dashdot\") {\n dash = 3 * dlw + \"px,\" + dlw + \"px,\" + dlw + \"px,\" + dlw + \"px\";\n } else if (dash === \"longdashdot\") {\n dash = 5 * dlw + \"px,\" + 2 * dlw + \"px,\" + dlw + \"px,\" + 2 * dlw + \"px\";\n }\n return dash;\n };\n function setFillStyle(sel, trace, gd, forLegend) {\n var markerPattern = trace.fillpattern;\n var fillgradient = trace.fillgradient;\n var patternShape = markerPattern && drawing.getPatternAttr(markerPattern.shape, 0, \"\");\n if (patternShape) {\n var patternBGColor = drawing.getPatternAttr(markerPattern.bgcolor, 0, null);\n var patternFGColor = drawing.getPatternAttr(markerPattern.fgcolor, 0, null);\n var patternFGOpacity = markerPattern.fgopacity;\n var patternSize = drawing.getPatternAttr(markerPattern.size, 0, 8);\n var patternSolidity = drawing.getPatternAttr(markerPattern.solidity, 0, 0.3);\n var patternID = trace.uid;\n drawing.pattern(\n sel,\n \"point\",\n gd,\n patternID,\n patternShape,\n patternSize,\n patternSolidity,\n void 0,\n markerPattern.fillmode,\n patternBGColor,\n patternFGColor,\n patternFGOpacity\n );\n } else if (fillgradient && fillgradient.type !== \"none\") {\n var direction = fillgradient.type;\n var gradientID = \"scatterfill-\" + trace.uid;\n if (forLegend) {\n gradientID = \"legendfill-\" + trace.uid;\n }\n if (!forLegend && (fillgradient.start !== void 0 || fillgradient.stop !== void 0)) {\n var start, stop;\n if (direction === \"horizontal\") {\n start = {\n x: fillgradient.start,\n y: 0\n };\n stop = {\n x: fillgradient.stop,\n y: 0\n };\n } else if (direction === \"vertical\") {\n start = {\n x: 0,\n y: fillgradient.start\n };\n stop = {\n x: 0,\n y: fillgradient.stop\n };\n }\n start.x = trace._xA.c2p(\n start.x === void 0 ? trace._extremes.x.min[0].val : start.x,\n true\n );\n start.y = trace._yA.c2p(\n start.y === void 0 ? trace._extremes.y.min[0].val : start.y,\n true\n );\n stop.x = trace._xA.c2p(\n stop.x === void 0 ? trace._extremes.x.max[0].val : stop.x,\n true\n );\n stop.y = trace._yA.c2p(\n stop.y === void 0 ? trace._extremes.y.max[0].val : stop.y,\n true\n );\n sel.call(gradientWithBounds, gd, gradientID, \"linear\", fillgradient.colorscale, \"fill\", start, stop, true, false);\n } else {\n if (direction === \"horizontal\") {\n direction = direction + \"reversed\";\n }\n sel.call(drawing.gradient, gd, gradientID, direction, fillgradient.colorscale, \"fill\");\n }\n } else if (trace.fillcolor) {\n sel.call(Color.fill, trace.fillcolor);\n }\n }\n drawing.singleFillStyle = function(sel, gd) {\n var node = d3.select(sel.node());\n var data = node.data();\n var trace = ((data[0] || [])[0] || {}).trace || {};\n setFillStyle(sel, trace, gd, false);\n };\n drawing.fillGroupStyle = function(s, gd, forLegend) {\n s.style(\"stroke-width\", 0).each(function(d) {\n var shape = d3.select(this);\n if (d[0].trace) {\n setFillStyle(shape, d[0].trace, gd, forLegend);\n }\n });\n };\n var SYMBOLDEFS = require_symbol_defs();\n drawing.symbolNames = [];\n drawing.symbolFuncs = [];\n drawing.symbolBackOffs = [];\n drawing.symbolNeedLines = {};\n drawing.symbolNoDot = {};\n drawing.symbolNoFill = {};\n drawing.symbolList = [];\n Object.keys(SYMBOLDEFS).forEach(function(k) {\n var symDef = SYMBOLDEFS[k];\n var n = symDef.n;\n drawing.symbolList.push(\n n,\n String(n),\n k,\n n + 100,\n String(n + 100),\n k + \"-open\"\n );\n drawing.symbolNames[n] = k;\n drawing.symbolFuncs[n] = symDef.f;\n drawing.symbolBackOffs[n] = symDef.backoff || 0;\n if (symDef.needLine) {\n drawing.symbolNeedLines[n] = true;\n }\n if (symDef.noDot) {\n drawing.symbolNoDot[n] = true;\n } else {\n drawing.symbolList.push(\n n + 200,\n String(n + 200),\n k + \"-dot\",\n n + 300,\n String(n + 300),\n k + \"-open-dot\"\n );\n }\n if (symDef.noFill) {\n drawing.symbolNoFill[n] = true;\n }\n });\n var MAXSYMBOL = drawing.symbolNames.length;\n var DOTPATH = \"M0,0.5L0.5,0L0,-0.5L-0.5,0Z\";\n drawing.symbolNumber = function(v) {\n if (isNumeric(v)) {\n v = +v;\n } else if (typeof v === \"string\") {\n var vbase = 0;\n if (v.indexOf(\"-open\") > 0) {\n vbase = 100;\n v = v.replace(\"-open\", \"\");\n }\n if (v.indexOf(\"-dot\") > 0) {\n vbase += 200;\n v = v.replace(\"-dot\", \"\");\n }\n v = drawing.symbolNames.indexOf(v);\n if (v >= 0) {\n v += vbase;\n }\n }\n return v % 100 >= MAXSYMBOL || v >= 400 ? 0 : Math.floor(Math.max(v, 0));\n };\n function makePointPath(symbolNumber, r, t, s) {\n var base = symbolNumber % 100;\n return drawing.symbolFuncs[base](r, t, s) + (symbolNumber >= 200 ? DOTPATH : \"\");\n }\n var stopFormatter = numberFormat(\"~f\");\n var gradientInfo = {\n radial: { type: \"radial\" },\n radialreversed: { type: \"radial\", reversed: true },\n horizontal: { type: \"linear\", start: { x: 1, y: 0 }, stop: { x: 0, y: 0 } },\n horizontalreversed: { type: \"linear\", start: { x: 1, y: 0 }, stop: { x: 0, y: 0 }, reversed: true },\n vertical: { type: \"linear\", start: { x: 0, y: 1 }, stop: { x: 0, y: 0 } },\n verticalreversed: { type: \"linear\", start: { x: 0, y: 1 }, stop: { x: 0, y: 0 }, reversed: true }\n };\n drawing.gradient = function(sel, gd, gradientID, type, colorscale, prop) {\n var info = gradientInfo[type];\n return gradientWithBounds(\n sel,\n gd,\n gradientID,\n info.type,\n colorscale,\n prop,\n info.start,\n info.stop,\n false,\n info.reversed\n );\n };\n function gradientWithBounds(sel, gd, gradientID, type, colorscale, prop, start, stop, inUserSpace, reversed) {\n var len = colorscale.length;\n var info;\n if (type === \"linear\") {\n info = {\n node: \"linearGradient\",\n attrs: {\n x1: start.x,\n y1: start.y,\n x2: stop.x,\n y2: stop.y,\n gradientUnits: inUserSpace ? \"userSpaceOnUse\" : \"objectBoundingBox\"\n },\n reversed\n };\n } else if (type === \"radial\") {\n info = {\n node: \"radialGradient\",\n reversed\n };\n }\n var colorStops = new Array(len);\n for (var i = 0; i < len; i++) {\n if (info.reversed) {\n colorStops[len - 1 - i] = [stopFormatter((1 - colorscale[i][0]) * 100), colorscale[i][1]];\n } else {\n colorStops[i] = [stopFormatter(colorscale[i][0] * 100), colorscale[i][1]];\n }\n }\n var fullLayout = gd._fullLayout;\n var fullID = \"g\" + fullLayout._uid + \"-\" + gradientID;\n var gradient = fullLayout._defs.select(\".gradients\").selectAll(\"#\" + fullID).data([type + colorStops.join(\";\")], Lib.identity);\n gradient.exit().remove();\n gradient.enter().append(info.node).each(function() {\n var el = d3.select(this);\n if (info.attrs) el.attr(info.attrs);\n el.attr(\"id\", fullID);\n var stops = el.selectAll(\"stop\").data(colorStops);\n stops.exit().remove();\n stops.enter().append(\"stop\");\n stops.each(function(d) {\n var tc = tinycolor(d[1]);\n d3.select(this).attr({\n offset: d[0] + \"%\",\n \"stop-color\": Color.tinyRGB(tc),\n \"stop-opacity\": tc.getAlpha()\n });\n });\n });\n sel.style(prop, getFullUrl(fullID, gd)).style(prop + \"-opacity\", null);\n sel.classed(\"gradient_filled\", true);\n }\n drawing.pattern = function(sel, calledBy, gd, patternID, shape, size, solidity, mcc, fillmode, bgcolor, fgcolor, fgopacity) {\n var isLegend = calledBy === \"legend\";\n if (mcc) {\n if (fillmode === \"overlay\") {\n bgcolor = mcc;\n fgcolor = Color.contrast(bgcolor);\n } else {\n bgcolor = void 0;\n fgcolor = mcc;\n }\n }\n var fullLayout = gd._fullLayout;\n var fullID = \"p\" + fullLayout._uid + \"-\" + patternID;\n var width, height;\n var linearFn = function(x, x0, x1, y0, y1) {\n return y0 + (y1 - y0) * (x - x0) / (x1 - x0);\n };\n var path, linewidth, radius;\n var patternTag;\n var patternAttrs = {};\n var fgC = tinycolor(fgcolor);\n var fgRGB = Color.tinyRGB(fgC);\n var fgAlpha = fgC.getAlpha();\n var opacity = fgopacity * fgAlpha;\n switch (shape) {\n case \"/\":\n width = size * Math.sqrt(2);\n height = size * Math.sqrt(2);\n path = \"M-\" + width / 4 + \",\" + height / 4 + \"l\" + width / 2 + \",-\" + height / 2 + \"M0,\" + height + \"L\" + width + \",0M\" + width / 4 * 3 + \",\" + height / 4 * 5 + \"l\" + width / 2 + \",-\" + height / 2;\n linewidth = solidity * size;\n patternTag = \"path\";\n patternAttrs = {\n d: path,\n opacity,\n stroke: fgRGB,\n \"stroke-width\": linewidth + \"px\"\n };\n break;\n case \"\\\\\":\n width = size * Math.sqrt(2);\n height = size * Math.sqrt(2);\n path = \"M\" + width / 4 * 3 + \",-\" + height / 4 + \"l\" + width / 2 + \",\" + height / 2 + \"M0,0L\" + width + \",\" + height + \"M-\" + width / 4 + \",\" + height / 4 * 3 + \"l\" + width / 2 + \",\" + height / 2;\n linewidth = solidity * size;\n patternTag = \"path\";\n patternAttrs = {\n d: path,\n opacity,\n stroke: fgRGB,\n \"stroke-width\": linewidth + \"px\"\n };\n break;\n case \"x\":\n width = size * Math.sqrt(2);\n height = size * Math.sqrt(2);\n path = \"M-\" + width / 4 + \",\" + height / 4 + \"l\" + width / 2 + \",-\" + height / 2 + \"M0,\" + height + \"L\" + width + \",0M\" + width / 4 * 3 + \",\" + height / 4 * 5 + \"l\" + width / 2 + \",-\" + height / 2 + \"M\" + width / 4 * 3 + \",-\" + height / 4 + \"l\" + width / 2 + \",\" + height / 2 + \"M0,0L\" + width + \",\" + height + \"M-\" + width / 4 + \",\" + height / 4 * 3 + \"l\" + width / 2 + \",\" + height / 2;\n linewidth = size - size * Math.sqrt(1 - solidity);\n patternTag = \"path\";\n patternAttrs = {\n d: path,\n opacity,\n stroke: fgRGB,\n \"stroke-width\": linewidth + \"px\"\n };\n break;\n case \"|\":\n width = size;\n height = size;\n patternTag = \"path\";\n path = \"M\" + width / 2 + \",0L\" + width / 2 + \",\" + height;\n linewidth = solidity * size;\n patternTag = \"path\";\n patternAttrs = {\n d: path,\n opacity,\n stroke: fgRGB,\n \"stroke-width\": linewidth + \"px\"\n };\n break;\n case \"-\":\n width = size;\n height = size;\n patternTag = \"path\";\n path = \"M0,\" + height / 2 + \"L\" + width + \",\" + height / 2;\n linewidth = solidity * size;\n patternTag = \"path\";\n patternAttrs = {\n d: path,\n opacity,\n stroke: fgRGB,\n \"stroke-width\": linewidth + \"px\"\n };\n break;\n case \"+\":\n width = size;\n height = size;\n patternTag = \"path\";\n path = \"M\" + width / 2 + \",0L\" + width / 2 + \",\" + height + \"M0,\" + height / 2 + \"L\" + width + \",\" + height / 2;\n linewidth = size - size * Math.sqrt(1 - solidity);\n patternTag = \"path\";\n patternAttrs = {\n d: path,\n opacity,\n stroke: fgRGB,\n \"stroke-width\": linewidth + \"px\"\n };\n break;\n case \".\":\n width = size;\n height = size;\n if (solidity < Math.PI / 4) {\n radius = Math.sqrt(solidity * size * size / Math.PI);\n } else {\n radius = linearFn(solidity, Math.PI / 4, 1, size / 2, size / Math.sqrt(2));\n }\n patternTag = \"circle\";\n patternAttrs = {\n cx: width / 2,\n cy: height / 2,\n r: radius,\n opacity,\n fill: fgRGB\n };\n break;\n }\n var str = [\n shape || \"noSh\",\n bgcolor || \"noBg\",\n fgcolor || \"noFg\",\n size,\n solidity\n ].join(\";\");\n var pattern = fullLayout._defs.select(\".patterns\").selectAll(\"#\" + fullID).data([str], Lib.identity);\n pattern.exit().remove();\n pattern.enter().append(\"pattern\").each(function() {\n var el = d3.select(this);\n el.attr({\n id: fullID,\n width: width + \"px\",\n height: height + \"px\",\n patternUnits: \"userSpaceOnUse\",\n // for legends scale down patterns just a bit so that default size (i.e 8) nicely fit in small icons\n patternTransform: isLegend ? \"scale(0.8)\" : \"\"\n });\n if (bgcolor) {\n var bgC = tinycolor(bgcolor);\n var bgRGB = Color.tinyRGB(bgC);\n var bgAlpha = bgC.getAlpha();\n var rects = el.selectAll(\"rect\").data([0]);\n rects.exit().remove();\n rects.enter().append(\"rect\").attr({\n width: width + \"px\",\n height: height + \"px\",\n fill: bgRGB,\n \"fill-opacity\": bgAlpha\n });\n }\n var patterns = el.selectAll(patternTag).data([0]);\n patterns.exit().remove();\n patterns.enter().append(patternTag).attr(patternAttrs);\n });\n sel.style(\"fill\", getFullUrl(fullID, gd)).style(\"fill-opacity\", null);\n sel.classed(\"pattern_filled\", true);\n };\n drawing.initGradients = function(gd) {\n var fullLayout = gd._fullLayout;\n var gradientsGroup = Lib.ensureSingle(fullLayout._defs, \"g\", \"gradients\");\n gradientsGroup.selectAll(\"linearGradient,radialGradient\").remove();\n d3.select(gd).selectAll(\".gradient_filled\").classed(\"gradient_filled\", false);\n };\n drawing.initPatterns = function(gd) {\n var fullLayout = gd._fullLayout;\n var patternsGroup = Lib.ensureSingle(fullLayout._defs, \"g\", \"patterns\");\n patternsGroup.selectAll(\"pattern\").remove();\n d3.select(gd).selectAll(\".pattern_filled\").classed(\"pattern_filled\", false);\n };\n drawing.getPatternAttr = function(mp, i, dflt) {\n if (mp && Lib.isArrayOrTypedArray(mp)) {\n return i < mp.length ? mp[i] : dflt;\n }\n return mp;\n };\n drawing.pointStyle = function(s, trace, gd, pt) {\n if (!s.size()) return;\n var fns = drawing.makePointStyleFns(trace);\n s.each(function(d) {\n drawing.singlePointStyle(d, d3.select(this), trace, fns, gd, pt);\n });\n };\n drawing.singlePointStyle = function(d, sel, trace, fns, gd, pt) {\n var marker = trace.marker;\n var markerLine = marker.line;\n if (pt && pt.i >= 0 && d.i === void 0) d.i = pt.i;\n sel.style(\n \"opacity\",\n fns.selectedOpacityFn ? fns.selectedOpacityFn(d) : d.mo === void 0 ? marker.opacity : d.mo\n );\n if (fns.ms2mrc) {\n var r;\n if (d.ms === \"various\" || marker.size === \"various\") {\n r = 3;\n } else {\n r = fns.ms2mrc(d.ms);\n }\n d.mrc = r;\n if (fns.selectedSizeFn) {\n r = d.mrc = fns.selectedSizeFn(d);\n }\n var x = drawing.symbolNumber(d.mx || marker.symbol) || 0;\n d.om = x % 200 >= 100;\n var angle = getMarkerAngle(d, trace);\n var standoff = getMarkerStandoff(d, trace);\n sel.attr(\"d\", makePointPath(x, r, angle, standoff));\n }\n var perPointGradient = false;\n var fillColor, lineColor, lineWidth;\n if (d.so) {\n lineWidth = markerLine.outlierwidth;\n lineColor = markerLine.outliercolor;\n fillColor = marker.outliercolor;\n } else {\n var markerLineWidth = (markerLine || {}).width;\n lineWidth = (d.mlw + 1 || markerLineWidth + 1 || // TODO: we need the latter for legends... can we get rid of it?\n (d.trace ? (d.trace.marker.line || {}).width : 0) + 1) - 1 || 0;\n if (\"mlc\" in d) lineColor = d.mlcc = fns.lineScale(d.mlc);\n else if (Lib.isArrayOrTypedArray(markerLine.color)) lineColor = Color.defaultLine;\n else lineColor = markerLine.color;\n if (Lib.isArrayOrTypedArray(marker.color)) {\n fillColor = Color.defaultLine;\n perPointGradient = true;\n }\n if (\"mc\" in d) {\n fillColor = d.mcc = fns.markerScale(d.mc);\n } else {\n fillColor = marker.color || marker.colors || \"rgba(0,0,0,0)\";\n }\n if (fns.selectedColorFn) {\n fillColor = fns.selectedColorFn(d);\n }\n }\n if (d.om) {\n sel.call(Color.stroke, fillColor).style({\n \"stroke-width\": (lineWidth || 1) + \"px\",\n fill: \"none\"\n });\n } else {\n sel.style(\"stroke-width\", (d.isBlank ? 0 : lineWidth) + \"px\");\n var markerGradient = marker.gradient;\n var gradientType = d.mgt;\n if (gradientType) perPointGradient = true;\n else gradientType = markerGradient && markerGradient.type;\n if (Lib.isArrayOrTypedArray(gradientType)) {\n gradientType = gradientType[0];\n if (!gradientInfo[gradientType]) gradientType = 0;\n }\n var markerPattern = marker.pattern;\n var patternShape = markerPattern && drawing.getPatternAttr(markerPattern.shape, d.i, \"\");\n if (gradientType && gradientType !== \"none\") {\n var gradientColor = d.mgc;\n if (gradientColor) perPointGradient = true;\n else gradientColor = markerGradient.color;\n var gradientID = trace.uid;\n if (perPointGradient) gradientID += \"-\" + d.i;\n drawing.gradient(\n sel,\n gd,\n gradientID,\n gradientType,\n [[0, gradientColor], [1, fillColor]],\n \"fill\"\n );\n } else if (patternShape) {\n var perPointPattern = false;\n var fgcolor = markerPattern.fgcolor;\n if (!fgcolor && pt && pt.color) {\n fgcolor = pt.color;\n perPointPattern = true;\n }\n var patternFGColor = drawing.getPatternAttr(fgcolor, d.i, pt && pt.color || null);\n var patternBGColor = drawing.getPatternAttr(markerPattern.bgcolor, d.i, null);\n var patternFGOpacity = markerPattern.fgopacity;\n var patternSize = drawing.getPatternAttr(markerPattern.size, d.i, 8);\n var patternSolidity = drawing.getPatternAttr(markerPattern.solidity, d.i, 0.3);\n perPointPattern = perPointPattern || d.mcc || Lib.isArrayOrTypedArray(markerPattern.shape) || Lib.isArrayOrTypedArray(markerPattern.bgcolor) || Lib.isArrayOrTypedArray(markerPattern.fgcolor) || Lib.isArrayOrTypedArray(markerPattern.size) || Lib.isArrayOrTypedArray(markerPattern.solidity);\n var patternID = trace.uid;\n if (perPointPattern) patternID += \"-\" + d.i;\n drawing.pattern(\n sel,\n \"point\",\n gd,\n patternID,\n patternShape,\n patternSize,\n patternSolidity,\n d.mcc,\n markerPattern.fillmode,\n patternBGColor,\n patternFGColor,\n patternFGOpacity\n );\n } else {\n Lib.isArrayOrTypedArray(fillColor) ? Color.fill(sel, fillColor[d.i]) : Color.fill(sel, fillColor);\n }\n if (lineWidth) {\n Color.stroke(sel, lineColor);\n }\n }\n };\n drawing.makePointStyleFns = function(trace) {\n var out = {};\n var marker = trace.marker;\n out.markerScale = drawing.tryColorscale(marker, \"\");\n out.lineScale = drawing.tryColorscale(marker, \"line\");\n if (Registry.traceIs(trace, \"symbols\")) {\n out.ms2mrc = subTypes.isBubble(trace) ? makeBubbleSizeFn(trace) : function() {\n return (marker.size || 6) / 2;\n };\n }\n if (trace.selectedpoints) {\n Lib.extendFlat(out, drawing.makeSelectedPointStyleFns(trace));\n }\n return out;\n };\n drawing.makeSelectedPointStyleFns = function(trace) {\n var out = {};\n var selectedAttrs = trace.selected || {};\n var unselectedAttrs = trace.unselected || {};\n var marker = trace.marker || {};\n var selectedMarker = selectedAttrs.marker || {};\n var unselectedMarker = unselectedAttrs.marker || {};\n var mo = marker.opacity;\n var smo = selectedMarker.opacity;\n var usmo = unselectedMarker.opacity;\n var smoIsDefined = smo !== void 0;\n var usmoIsDefined = usmo !== void 0;\n if (Lib.isArrayOrTypedArray(mo) || smoIsDefined || usmoIsDefined) {\n out.selectedOpacityFn = function(d) {\n var base = d.mo === void 0 ? marker.opacity : d.mo;\n if (d.selected) {\n return smoIsDefined ? smo : base;\n } else {\n return usmoIsDefined ? usmo : DESELECTDIM * base;\n }\n };\n }\n var mc = marker.color;\n var smc = selectedMarker.color;\n var usmc = unselectedMarker.color;\n if (smc || usmc) {\n out.selectedColorFn = function(d) {\n var base = d.mcc || mc;\n if (d.selected) {\n return smc || base;\n } else {\n return usmc || base;\n }\n };\n }\n var ms = marker.size;\n var sms = selectedMarker.size;\n var usms = unselectedMarker.size;\n var smsIsDefined = sms !== void 0;\n var usmsIsDefined = usms !== void 0;\n if (Registry.traceIs(trace, \"symbols\") && (smsIsDefined || usmsIsDefined)) {\n out.selectedSizeFn = function(d) {\n var base = d.mrc || ms / 2;\n if (d.selected) {\n return smsIsDefined ? sms / 2 : base;\n } else {\n return usmsIsDefined ? usms / 2 : base;\n }\n };\n }\n return out;\n };\n drawing.makeSelectedTextStyleFns = function(trace) {\n var out = {};\n var selectedAttrs = trace.selected || {};\n var unselectedAttrs = trace.unselected || {};\n var textFont = trace.textfont || {};\n var selectedTextFont = selectedAttrs.textfont || {};\n var unselectedTextFont = unselectedAttrs.textfont || {};\n var tc = textFont.color;\n var stc = selectedTextFont.color;\n var utc = unselectedTextFont.color;\n out.selectedTextColorFn = function(d) {\n var base = d.tc || tc;\n if (d.selected) {\n return stc || base;\n } else {\n if (utc) return utc;\n else return stc ? base : Color.addOpacity(base, DESELECTDIM);\n }\n };\n return out;\n };\n drawing.selectedPointStyle = function(s, trace) {\n if (!s.size() || !trace.selectedpoints) return;\n var fns = drawing.makeSelectedPointStyleFns(trace);\n var marker = trace.marker || {};\n var seq = [];\n if (fns.selectedOpacityFn) {\n seq.push(function(pt, d) {\n pt.style(\"opacity\", fns.selectedOpacityFn(d));\n });\n }\n if (fns.selectedColorFn) {\n seq.push(function(pt, d) {\n Color.fill(pt, fns.selectedColorFn(d));\n });\n }\n if (fns.selectedSizeFn) {\n seq.push(function(pt, d) {\n var mx = d.mx || marker.symbol || 0;\n var mrc2 = fns.selectedSizeFn(d);\n pt.attr(\"d\", makePointPath(drawing.symbolNumber(mx), mrc2, getMarkerAngle(d, trace), getMarkerStandoff(d, trace)));\n d.mrc2 = mrc2;\n });\n }\n if (seq.length) {\n s.each(function(d) {\n var pt = d3.select(this);\n for (var i = 0; i < seq.length; i++) {\n seq[i](pt, d);\n }\n });\n }\n };\n drawing.tryColorscale = function(marker, prefix) {\n var cont = prefix ? Lib.nestedProperty(marker, prefix).get() : marker;\n if (cont) {\n var colorArray = cont.color;\n if ((cont.colorscale || cont._colorAx) && Lib.isArrayOrTypedArray(colorArray)) {\n return Colorscale.makeColorScaleFuncFromTrace(cont);\n }\n }\n return Lib.identity;\n };\n var TEXTOFFSETSIGN = {\n start: 1,\n end: -1,\n middle: 0,\n bottom: 1,\n top: -1\n };\n function textPointPosition(s, textPosition, fontSize, markerRadius, dontTouchParent) {\n var group = d3.select(s.node().parentNode);\n var v = textPosition.indexOf(\"top\") !== -1 ? \"top\" : textPosition.indexOf(\"bottom\") !== -1 ? \"bottom\" : \"middle\";\n var h = textPosition.indexOf(\"left\") !== -1 ? \"end\" : textPosition.indexOf(\"right\") !== -1 ? \"start\" : \"middle\";\n var r = markerRadius ? markerRadius / 0.8 + 1 : 0;\n var numLines = (svgTextUtils.lineCount(s) - 1) * LINE_SPACING + 1;\n var dx = TEXTOFFSETSIGN[h] * r;\n var dy = fontSize * 0.75 + TEXTOFFSETSIGN[v] * r + (TEXTOFFSETSIGN[v] - 1) * numLines * fontSize / 2;\n s.attr(\"text-anchor\", h);\n if (!dontTouchParent) {\n group.attr(\"transform\", strTranslate(dx, dy));\n }\n }\n function extracTextFontSize(d, trace) {\n var fontSize = d.ts || trace.textfont.size;\n return isNumeric(fontSize) && fontSize > 0 ? fontSize : 0;\n }\n drawing.textPointStyle = function(s, trace, gd) {\n if (!s.size()) return;\n var selectedTextColorFn;\n if (trace.selectedpoints) {\n var fns = drawing.makeSelectedTextStyleFns(trace);\n selectedTextColorFn = fns.selectedTextColorFn;\n }\n var texttemplate = trace.texttemplate;\n var fullLayout = gd._fullLayout;\n s.each(function(d) {\n var p = d3.select(this);\n var text = texttemplate ? Lib.extractOption(d, trace, \"txt\", \"texttemplate\") : Lib.extractOption(d, trace, \"tx\", \"text\");\n if (!text && text !== 0) {\n p.remove();\n return;\n }\n if (texttemplate) {\n var fn = trace._module.formatLabels;\n var labels = fn ? fn(d, trace, fullLayout) : {};\n var pointValues = {};\n appendArrayPointValue(pointValues, trace, d.i);\n var meta = trace._meta || {};\n text = Lib.texttemplateString(text, labels, fullLayout._d3locale, pointValues, d, meta);\n }\n var pos = d.tp || trace.textposition;\n var fontSize = extracTextFontSize(d, trace);\n var fontColor = selectedTextColorFn ? selectedTextColorFn(d) : d.tc || trace.textfont.color;\n p.call(drawing.font, {\n family: d.tf || trace.textfont.family,\n weight: d.tw || trace.textfont.weight,\n style: d.ty || trace.textfont.style,\n variant: d.tv || trace.textfont.variant,\n textcase: d.tC || trace.textfont.textcase,\n lineposition: d.tE || trace.textfont.lineposition,\n shadow: d.tS || trace.textfont.shadow,\n size: fontSize,\n color: fontColor\n }).text(text).call(svgTextUtils.convertToTspans, gd).call(textPointPosition, pos, fontSize, d.mrc);\n });\n };\n drawing.selectedTextStyle = function(s, trace) {\n if (!s.size() || !trace.selectedpoints) return;\n var fns = drawing.makeSelectedTextStyleFns(trace);\n s.each(function(d) {\n var tx = d3.select(this);\n var tc = fns.selectedTextColorFn(d);\n var tp = d.tp || trace.textposition;\n var fontSize = extracTextFontSize(d, trace);\n Color.fill(tx, tc);\n var dontTouchParent = Registry.traceIs(trace, \"bar-like\");\n textPointPosition(tx, tp, fontSize, d.mrc2 || d.mrc, dontTouchParent);\n });\n };\n var CatmullRomExp = 0.5;\n drawing.smoothopen = function(pts, smoothness) {\n if (pts.length < 3) {\n return \"M\" + pts.join(\"L\");\n }\n var path = \"M\" + pts[0];\n var tangents = [];\n var i;\n for (i = 1; i < pts.length - 1; i++) {\n tangents.push(makeTangent(pts[i - 1], pts[i], pts[i + 1], smoothness));\n }\n path += \"Q\" + tangents[0][0] + \" \" + pts[1];\n for (i = 2; i < pts.length - 1; i++) {\n path += \"C\" + tangents[i - 2][1] + \" \" + tangents[i - 1][0] + \" \" + pts[i];\n }\n path += \"Q\" + tangents[pts.length - 3][1] + \" \" + pts[pts.length - 1];\n return path;\n };\n drawing.smoothclosed = function(pts, smoothness) {\n if (pts.length < 3) {\n return \"M\" + pts.join(\"L\") + \"Z\";\n }\n var path = \"M\" + pts[0];\n var pLast = pts.length - 1;\n var tangents = [makeTangent(pts[pLast], pts[0], pts[1], smoothness)];\n var i;\n for (i = 1; i < pLast; i++) {\n tangents.push(makeTangent(pts[i - 1], pts[i], pts[i + 1], smoothness));\n }\n tangents.push(\n makeTangent(pts[pLast - 1], pts[pLast], pts[0], smoothness)\n );\n for (i = 1; i <= pLast; i++) {\n path += \"C\" + tangents[i - 1][1] + \" \" + tangents[i][0] + \" \" + pts[i];\n }\n path += \"C\" + tangents[pLast][1] + \" \" + tangents[0][0] + \" \" + pts[0] + \"Z\";\n return path;\n };\n var lastDrawnX;\n var lastDrawnY;\n function roundEnd(pt, isY, isLastPoint) {\n if (isLastPoint) pt = applyBackoff(pt);\n return isY ? roundY(pt[1]) : roundX(pt[0]);\n }\n function roundX(p) {\n var v = d3.round(p, 2);\n lastDrawnX = v;\n return v;\n }\n function roundY(p) {\n var v = d3.round(p, 2);\n lastDrawnY = v;\n return v;\n }\n function makeTangent(prevpt, thispt, nextpt, smoothness) {\n var d1x = prevpt[0] - thispt[0];\n var d1y = prevpt[1] - thispt[1];\n var d2x = nextpt[0] - thispt[0];\n var d2y = nextpt[1] - thispt[1];\n var d1a = Math.pow(d1x * d1x + d1y * d1y, CatmullRomExp / 2);\n var d2a = Math.pow(d2x * d2x + d2y * d2y, CatmullRomExp / 2);\n var numx = (d2a * d2a * d1x - d1a * d1a * d2x) * smoothness;\n var numy = (d2a * d2a * d1y - d1a * d1a * d2y) * smoothness;\n var denom1 = 3 * d2a * (d1a + d2a);\n var denom2 = 3 * d1a * (d1a + d2a);\n return [\n [\n roundX(thispt[0] + (denom1 && numx / denom1)),\n roundY(thispt[1] + (denom1 && numy / denom1))\n ],\n [\n roundX(thispt[0] - (denom2 && numx / denom2)),\n roundY(thispt[1] - (denom2 && numy / denom2))\n ]\n ];\n }\n var STEPPATH = {\n hv: function(p0, p1, isLastPoint) {\n return \"H\" + roundX(p1[0]) + \"V\" + roundEnd(p1, 1, isLastPoint);\n },\n vh: function(p0, p1, isLastPoint) {\n return \"V\" + roundY(p1[1]) + \"H\" + roundEnd(p1, 0, isLastPoint);\n },\n hvh: function(p0, p1, isLastPoint) {\n return \"H\" + roundX((p0[0] + p1[0]) / 2) + \"V\" + roundY(p1[1]) + \"H\" + roundEnd(p1, 0, isLastPoint);\n },\n vhv: function(p0, p1, isLastPoint) {\n return \"V\" + roundY((p0[1] + p1[1]) / 2) + \"H\" + roundX(p1[0]) + \"V\" + roundEnd(p1, 1, isLastPoint);\n }\n };\n var STEPLINEAR = function(p0, p1, isLastPoint) {\n return \"L\" + roundEnd(p1, 0, isLastPoint) + \",\" + roundEnd(p1, 1, isLastPoint);\n };\n drawing.steps = function(shape) {\n var onestep = STEPPATH[shape] || STEPLINEAR;\n return function(pts) {\n var path = \"M\" + roundX(pts[0][0]) + \",\" + roundY(pts[0][1]);\n var len = pts.length;\n for (var i = 1; i < len; i++) {\n path += onestep(pts[i - 1], pts[i], i === len - 1);\n }\n return path;\n };\n };\n function applyBackoff(pt, start) {\n var backoff = pt.backoff;\n var trace = pt.trace;\n var d = pt.d;\n var i = pt.i;\n if (backoff && trace && trace.marker && trace.marker.angle % 360 === 0 && trace.line && trace.line.shape !== \"spline\") {\n var arrayBackoff = Lib.isArrayOrTypedArray(backoff);\n var end = pt;\n var x1 = start ? start[0] : lastDrawnX || 0;\n var y1 = start ? start[1] : lastDrawnY || 0;\n var x2 = end[0];\n var y2 = end[1];\n var dx = x2 - x1;\n var dy = y2 - y1;\n var t = Math.atan2(dy, dx);\n var b = arrayBackoff ? backoff[i] : backoff;\n if (b === \"auto\") {\n var endI = end.i;\n if (trace.type === \"scatter\") endI--;\n var endMarker = end.marker;\n var endMarkerSymbol = endMarker.symbol;\n if (Lib.isArrayOrTypedArray(endMarkerSymbol)) endMarkerSymbol = endMarkerSymbol[endI];\n var endMarkerSize = endMarker.size;\n if (Lib.isArrayOrTypedArray(endMarkerSize)) endMarkerSize = endMarkerSize[endI];\n b = endMarker ? drawing.symbolBackOffs[drawing.symbolNumber(endMarkerSymbol)] * endMarkerSize : 0;\n b += drawing.getMarkerStandoff(d[endI], trace) || 0;\n }\n var x = x2 - b * Math.cos(t);\n var y = y2 - b * Math.sin(t);\n if ((x <= x2 && x >= x1 || x >= x2 && x <= x1) && (y <= y2 && y >= y1 || y >= y2 && y <= y1)) {\n pt = [x, y];\n }\n }\n return pt;\n }\n drawing.applyBackoff = applyBackoff;\n drawing.makeTester = function() {\n var tester = Lib.ensureSingleById(d3.select(\"body\"), \"svg\", \"js-plotly-tester\", function(s) {\n s.attr(xmlnsNamespaces.svgAttrs).style({\n position: \"absolute\",\n left: \"-10000px\",\n top: \"-10000px\",\n width: \"9000px\",\n height: \"9000px\",\n \"z-index\": \"1\"\n });\n });\n var testref = Lib.ensureSingle(tester, \"path\", \"js-reference-point\", function(s) {\n s.attr(\"d\", \"M0,0H1V1H0Z\").style({\n \"stroke-width\": 0,\n fill: \"black\"\n });\n });\n drawing.tester = tester;\n drawing.testref = testref;\n };\n drawing.savedBBoxes = {};\n var savedBBoxesCount = 0;\n var maxSavedBBoxes = 1e4;\n drawing.bBox = function(node, inTester, hash) {\n if (!hash) hash = nodeHash(node);\n var out;\n if (hash) {\n out = drawing.savedBBoxes[hash];\n if (out) return Lib.extendFlat({}, out);\n } else if (node.childNodes.length === 1) {\n var innerNode = node.childNodes[0];\n hash = nodeHash(innerNode);\n if (hash) {\n var x = +innerNode.getAttribute(\"x\") || 0;\n var y = +innerNode.getAttribute(\"y\") || 0;\n var transform = innerNode.getAttribute(\"transform\");\n if (!transform) {\n var innerBB = drawing.bBox(innerNode, false, hash);\n if (x) {\n innerBB.left += x;\n innerBB.right += x;\n }\n if (y) {\n innerBB.top += y;\n innerBB.bottom += y;\n }\n return innerBB;\n }\n hash += \"~\" + x + \"~\" + y + \"~\" + transform;\n out = drawing.savedBBoxes[hash];\n if (out) return Lib.extendFlat({}, out);\n }\n }\n var testNode, tester;\n if (inTester) {\n testNode = node;\n } else {\n tester = drawing.tester.node();\n testNode = node.cloneNode(true);\n tester.appendChild(testNode);\n }\n d3.select(testNode).attr(\"transform\", null).call(svgTextUtils.positionText, 0, 0);\n var testRect = testNode.getBoundingClientRect();\n var refRect = drawing.testref.node().getBoundingClientRect();\n if (!inTester) tester.removeChild(testNode);\n var bb = {\n height: testRect.height,\n width: testRect.width,\n left: testRect.left - refRect.left,\n top: testRect.top - refRect.top,\n right: testRect.right - refRect.left,\n bottom: testRect.bottom - refRect.top\n };\n if (savedBBoxesCount >= maxSavedBBoxes) {\n drawing.savedBBoxes = {};\n savedBBoxesCount = 0;\n }\n if (hash) drawing.savedBBoxes[hash] = bb;\n savedBBoxesCount++;\n return Lib.extendFlat({}, bb);\n };\n function nodeHash(node) {\n var inputText = node.getAttribute(\"data-unformatted\");\n if (inputText === null) return;\n return inputText + node.getAttribute(\"data-math\") + node.getAttribute(\"text-anchor\") + node.getAttribute(\"style\");\n }\n drawing.setClipUrl = function(s, localId, gd) {\n s.attr(\"clip-path\", getFullUrl(localId, gd));\n };\n function getFullUrl(localId, gd) {\n if (!localId) return null;\n var context = gd._context;\n var baseUrl = context._exportedPlot ? \"\" : context._baseUrl || \"\";\n return baseUrl ? \"url('\" + baseUrl + \"#\" + localId + \"')\" : \"url(#\" + localId + \")\";\n }\n drawing.getTranslate = function(element) {\n var re = /.*\\btranslate\\((-?\\d*\\.?\\d*)[^-\\d]*(-?\\d*\\.?\\d*)[^\\d].*/;\n var getter = element.attr ? \"attr\" : \"getAttribute\";\n var transform = element[getter](\"transform\") || \"\";\n var translate = transform.replace(re, function(match, p1, p2) {\n return [p1, p2].join(\" \");\n }).split(\" \");\n return {\n x: +translate[0] || 0,\n y: +translate[1] || 0\n };\n };\n drawing.setTranslate = function(element, x, y) {\n var re = /(\\btranslate\\(.*?\\);?)/;\n var getter = element.attr ? \"attr\" : \"getAttribute\";\n var setter = element.attr ? \"attr\" : \"setAttribute\";\n var transform = element[getter](\"transform\") || \"\";\n x = x || 0;\n y = y || 0;\n transform = transform.replace(re, \"\").trim();\n transform += strTranslate(x, y);\n transform = transform.trim();\n element[setter](\"transform\", transform);\n return transform;\n };\n drawing.getScale = function(element) {\n var re = /.*\\bscale\\((\\d*\\.?\\d*)[^\\d]*(\\d*\\.?\\d*)[^\\d].*/;\n var getter = element.attr ? \"attr\" : \"getAttribute\";\n var transform = element[getter](\"transform\") || \"\";\n var translate = transform.replace(re, function(match, p1, p2) {\n return [p1, p2].join(\" \");\n }).split(\" \");\n return {\n x: +translate[0] || 1,\n y: +translate[1] || 1\n };\n };\n drawing.setScale = function(element, x, y) {\n var re = /(\\bscale\\(.*?\\);?)/;\n var getter = element.attr ? \"attr\" : \"getAttribute\";\n var setter = element.attr ? \"attr\" : \"setAttribute\";\n var transform = element[getter](\"transform\") || \"\";\n x = x || 1;\n y = y || 1;\n transform = transform.replace(re, \"\").trim();\n transform += \"scale(\" + x + \",\" + y + \")\";\n transform = transform.trim();\n element[setter](\"transform\", transform);\n return transform;\n };\n var SCALE_RE = /\\s*sc.*/;\n drawing.setPointGroupScale = function(selection, xScale, yScale) {\n xScale = xScale || 1;\n yScale = yScale || 1;\n if (!selection) return;\n var scale = xScale === 1 && yScale === 1 ? \"\" : \"scale(\" + xScale + \",\" + yScale + \")\";\n selection.each(function() {\n var t = (this.getAttribute(\"transform\") || \"\").replace(SCALE_RE, \"\");\n t += scale;\n t = t.trim();\n this.setAttribute(\"transform\", t);\n });\n };\n var TEXT_POINT_LAST_TRANSLATION_RE = /translate\\([^)]*\\)\\s*$/;\n drawing.setTextPointsScale = function(selection, xScale, yScale) {\n if (!selection) return;\n selection.each(function() {\n var transforms;\n var el = d3.select(this);\n var text = el.select(\"text\");\n if (!text.node()) return;\n var x = parseFloat(text.attr(\"x\") || 0);\n var y = parseFloat(text.attr(\"y\") || 0);\n var existingTransform = (el.attr(\"transform\") || \"\").match(TEXT_POINT_LAST_TRANSLATION_RE);\n if (xScale === 1 && yScale === 1) {\n transforms = [];\n } else {\n transforms = [\n strTranslate(x, y),\n \"scale(\" + xScale + \",\" + yScale + \")\",\n strTranslate(-x, -y)\n ];\n }\n if (existingTransform) {\n transforms.push(existingTransform);\n }\n el.attr(\"transform\", transforms.join(\"\"));\n });\n };\n function getMarkerStandoff(d, trace) {\n var standoff;\n if (d) standoff = d.mf;\n if (standoff === void 0) {\n standoff = trace.marker ? trace.marker.standoff || 0 : 0;\n }\n if (!trace._geo && !trace._xA) {\n return -standoff;\n }\n return standoff;\n }\n drawing.getMarkerStandoff = getMarkerStandoff;\n var atan2 = Math.atan2;\n var cos = Math.cos;\n var sin = Math.sin;\n function rotate(t, xy) {\n var x = xy[0];\n var y = xy[1];\n return [\n x * cos(t) - y * sin(t),\n x * sin(t) + y * cos(t)\n ];\n }\n var previousLon;\n var previousLat;\n var previousX;\n var previousY;\n var previousI;\n var previousTraceUid;\n function getMarkerAngle(d, trace) {\n var angle = d.ma;\n if (angle === void 0) {\n angle = trace.marker.angle;\n if (!angle || Lib.isArrayOrTypedArray(angle)) {\n angle = 0;\n }\n }\n var x, y;\n var ref = trace.marker.angleref;\n if (ref === \"previous\" || ref === \"north\") {\n if (trace._geo) {\n var p = trace._geo.project(d.lonlat);\n x = p[0];\n y = p[1];\n } else {\n var xa = trace._xA;\n var ya = trace._yA;\n if (xa && ya) {\n x = xa.c2p(d.x);\n y = ya.c2p(d.y);\n } else {\n return 90;\n }\n }\n if (trace._geo) {\n var lon = d.lonlat[0];\n var lat = d.lonlat[1];\n var north = trace._geo.project([\n lon,\n lat + 1e-5\n // epsilon\n ]);\n var east = trace._geo.project([\n lon + 1e-5,\n // epsilon\n lat\n ]);\n var u = atan2(\n east[1] - y,\n east[0] - x\n );\n var v = atan2(\n north[1] - y,\n north[0] - x\n );\n var t;\n if (ref === \"north\") {\n t = angle / 180 * Math.PI;\n } else if (ref === \"previous\") {\n var lon1 = lon / 180 * Math.PI;\n var lat1 = lat / 180 * Math.PI;\n var lon2 = previousLon / 180 * Math.PI;\n var lat2 = previousLat / 180 * Math.PI;\n var dLon = lon2 - lon1;\n var deltaY = cos(lat2) * sin(dLon);\n var deltaX = sin(lat2) * cos(lat1) - cos(lat2) * sin(lat1) * cos(dLon);\n t = -atan2(\n deltaY,\n deltaX\n ) - Math.PI;\n previousLon = lon;\n previousLat = lat;\n }\n var A = rotate(u, [cos(t), 0]);\n var B = rotate(v, [sin(t), 0]);\n angle = atan2(\n A[1] + B[1],\n A[0] + B[0]\n ) / Math.PI * 180;\n if (ref === \"previous\" && !(previousTraceUid === trace.uid && d.i === previousI + 1)) {\n angle = null;\n }\n }\n if (ref === \"previous\" && !trace._geo) {\n if (previousTraceUid === trace.uid && d.i === previousI + 1 && isNumeric(x) && isNumeric(y)) {\n var dX = x - previousX;\n var dY = y - previousY;\n var shape = trace.line ? trace.line.shape || \"\" : \"\";\n var lastShapeChar = shape.slice(shape.length - 1);\n if (lastShapeChar === \"h\") dY = 0;\n if (lastShapeChar === \"v\") dX = 0;\n angle += atan2(dY, dX) / Math.PI * 180 + 90;\n } else {\n angle = null;\n }\n }\n }\n previousX = x;\n previousY = y;\n previousI = d.i;\n previousTraceUid = trace.uid;\n return angle;\n }\n drawing.getMarkerAngle = getMarkerAngle;\n }\n });\n\n // src/components/titles/index.js\n var require_titles = __commonJS({\n \"src/components/titles/index.js\"(exports, module) {\n \"use strict\";\n var d3 = require_d3();\n var isNumeric = require_fast_isnumeric();\n var Plots = require_plots();\n var Registry = require_registry();\n var Lib = require_lib();\n var strTranslate = Lib.strTranslate;\n var Drawing = require_drawing();\n var Color = require_color();\n var svgTextUtils = require_svg_text_utils();\n var interactConstants = require_interactions();\n var OPPOSITE_SIDE = require_alignment().OPPOSITE_SIDE;\n var numStripRE = / [XY][0-9]* /;\n var SUBTITLE_PADDING_MATHJAX_EM = 1.6;\n var SUBTITLE_PADDING_EM = 1.6;\n function draw(gd, titleClass, options) {\n var fullLayout = gd._fullLayout;\n var cont = options.propContainer;\n var prop = options.propName;\n var placeholder = options.placeholder;\n var traceIndex = options.traceIndex;\n var avoid = options.avoid || {};\n var attributes = options.attributes;\n var transform = options.transform;\n var group = options.containerGroup;\n var opacity = 1;\n var title = cont.title;\n var txt = (title && title.text ? title.text : \"\").trim();\n var titleIsPlaceholder = false;\n var font = title && title.font ? title.font : {};\n var fontFamily = font.family;\n var fontSize = font.size;\n var fontColor = font.color;\n var fontWeight = font.weight;\n var fontStyle = font.style;\n var fontVariant = font.variant;\n var fontTextcase = font.textcase;\n var fontLineposition = font.lineposition;\n var fontShadow = font.shadow;\n var subtitleProp = options.subtitlePropName;\n var subtitleEnabled = !!subtitleProp;\n var subtitlePlaceholder = options.subtitlePlaceholder;\n var subtitle = (cont.title || {}).subtitle || { text: \"\", font: {} };\n var subtitleTxt = subtitle.text.trim();\n var subtitleIsPlaceholder = false;\n var subtitleOpacity = 1;\n var subtitleFont = subtitle.font;\n var subFontFamily = subtitleFont.family;\n var subFontSize = subtitleFont.size;\n var subFontColor = subtitleFont.color;\n var subFontWeight = subtitleFont.weight;\n var subFontStyle = subtitleFont.style;\n var subFontVariant = subtitleFont.variant;\n var subFontTextcase = subtitleFont.textcase;\n var subFontLineposition = subtitleFont.lineposition;\n var subFontShadow = subtitleFont.shadow;\n var editAttr;\n if (prop === \"title.text\") editAttr = \"titleText\";\n else if (prop.indexOf(\"axis\") !== -1) editAttr = \"axisTitleText\";\n else if (prop.indexOf(\"colorbar\" !== -1)) editAttr = \"colorbarTitleText\";\n var editable = gd._context.edits[editAttr];\n function matchesPlaceholder(text, placeholder2) {\n if (text === void 0 || placeholder2 === void 0) return false;\n return text.replace(numStripRE, \" % \") === placeholder2.replace(numStripRE, \" % \");\n }\n if (txt === \"\") opacity = 0;\n else if (matchesPlaceholder(txt, placeholder)) {\n if (!editable) txt = \"\";\n opacity = 0.2;\n titleIsPlaceholder = true;\n }\n if (subtitleEnabled) {\n if (subtitleTxt === \"\") subtitleOpacity = 0;\n else if (matchesPlaceholder(subtitleTxt, subtitlePlaceholder)) {\n if (!editable) subtitleTxt = \"\";\n subtitleOpacity = 0.2;\n subtitleIsPlaceholder = true;\n }\n }\n if (options._meta) {\n txt = Lib.templateString(txt, options._meta);\n } else if (fullLayout._meta) {\n txt = Lib.templateString(txt, fullLayout._meta);\n }\n var elShouldExist = txt || subtitleTxt || editable;\n var hColorbarMoveTitle;\n if (!group) {\n group = Lib.ensureSingle(fullLayout._infolayer, \"g\", \"g-\" + titleClass);\n hColorbarMoveTitle = fullLayout._hColorbarMoveTitle;\n }\n var el = group.selectAll(\"text.\" + titleClass).data(elShouldExist ? [0] : []);\n el.enter().append(\"text\");\n el.text(txt).attr(\"class\", titleClass);\n el.exit().remove();\n var subtitleEl = null;\n var subtitleClass = titleClass + \"-subtitle\";\n var subtitleElShouldExist = subtitleTxt || editable;\n if (subtitleEnabled && subtitleElShouldExist) {\n subtitleEl = group.selectAll(\"text.\" + subtitleClass).data(subtitleElShouldExist ? [0] : []);\n subtitleEl.enter().append(\"text\");\n subtitleEl.text(subtitleTxt).attr(\"class\", subtitleClass);\n subtitleEl.exit().remove();\n }\n if (!elShouldExist) return group;\n function titleLayout(titleEl, subtitleEl2) {\n Lib.syncOrAsync([drawTitle, scootTitle], { title: titleEl, subtitle: subtitleEl2 });\n }\n function drawTitle(titleAndSubtitleEls) {\n var titleEl = titleAndSubtitleEls.title;\n var subtitleEl2 = titleAndSubtitleEls.subtitle;\n var transformVal;\n if (!transform && hColorbarMoveTitle) {\n transform = {};\n }\n if (transform) {\n transformVal = \"\";\n if (transform.rotate) {\n transformVal += \"rotate(\" + [transform.rotate, attributes.x, attributes.y] + \")\";\n }\n if (transform.offset || hColorbarMoveTitle) {\n transformVal += strTranslate(0, (transform.offset || 0) - (hColorbarMoveTitle || 0));\n }\n } else {\n transformVal = null;\n }\n titleEl.attr(\"transform\", transformVal);\n function adjustSubtitlePosition(titleElMathGroup2) {\n if (!titleElMathGroup2) return;\n var subtitleElement = d3.select(titleElMathGroup2.node().parentNode).select(\".\" + subtitleClass);\n if (!subtitleElement.empty()) {\n var titleElMathBbox2 = titleElMathGroup2.node().getBBox();\n if (titleElMathBbox2.height) {\n var subtitleY3 = titleElMathBbox2.y + titleElMathBbox2.height + SUBTITLE_PADDING_MATHJAX_EM * subFontSize;\n subtitleElement.attr(\"y\", subtitleY3);\n }\n }\n }\n titleEl.style(\"opacity\", opacity * Color.opacity(fontColor)).call(Drawing.font, {\n color: Color.rgb(fontColor),\n size: d3.round(fontSize, 2),\n family: fontFamily,\n weight: fontWeight,\n style: fontStyle,\n variant: fontVariant,\n textcase: fontTextcase,\n shadow: fontShadow,\n lineposition: fontLineposition\n }).attr(attributes).call(svgTextUtils.convertToTspans, gd, adjustSubtitlePosition);\n if (subtitleEl2) {\n var titleElMathGroup = group.select(\".\" + titleClass + \"-math-group\");\n var titleElBbox2 = titleEl.node().getBBox();\n var titleElMathBbox = titleElMathGroup.node() ? titleElMathGroup.node().getBBox() : void 0;\n var subtitleY2 = titleElMathBbox ? titleElMathBbox.y + titleElMathBbox.height + SUBTITLE_PADDING_MATHJAX_EM * subFontSize : titleElBbox2.y + titleElBbox2.height + SUBTITLE_PADDING_EM * subFontSize;\n var subtitleAttributes = Lib.extendFlat({}, attributes, {\n y: subtitleY2\n });\n subtitleEl2.attr(\"transform\", transformVal);\n subtitleEl2.style(\"opacity\", subtitleOpacity * Color.opacity(subFontColor)).call(Drawing.font, {\n color: Color.rgb(subFontColor),\n size: d3.round(subFontSize, 2),\n family: subFontFamily,\n weight: subFontWeight,\n style: subFontStyle,\n variant: subFontVariant,\n textcase: subFontTextcase,\n shadow: subFontShadow,\n lineposition: subFontLineposition\n }).attr(subtitleAttributes).call(svgTextUtils.convertToTspans, gd);\n }\n return Plots.previousPromises(gd);\n }\n function scootTitle(titleAndSubtitleEls) {\n var titleElIn = titleAndSubtitleEls.title;\n var titleGroup = d3.select(titleElIn.node().parentNode);\n if (avoid && avoid.selection && avoid.side && txt) {\n titleGroup.attr(\"transform\", null);\n var backside = OPPOSITE_SIDE[avoid.side];\n var shiftSign = avoid.side === \"left\" || avoid.side === \"top\" ? -1 : 1;\n var pad = isNumeric(avoid.pad) ? avoid.pad : 2;\n var titlebb = Drawing.bBox(titleGroup.node());\n var reservedMargins = { t: 0, b: 0, l: 0, r: 0 };\n var margins = gd._fullLayout._reservedMargin;\n for (var key in margins) {\n for (var side in margins[key]) {\n var val = margins[key][side];\n reservedMargins[side] = Math.max(reservedMargins[side], val);\n }\n }\n var paperbb = {\n left: reservedMargins.l,\n top: reservedMargins.t,\n right: fullLayout.width - reservedMargins.r,\n bottom: fullLayout.height - reservedMargins.b\n };\n var maxshift = avoid.maxShift || shiftSign * (paperbb[avoid.side] - titlebb[avoid.side]);\n var shift = 0;\n if (maxshift < 0) {\n shift = maxshift;\n } else {\n var offsetLeft = avoid.offsetLeft || 0;\n var offsetTop = avoid.offsetTop || 0;\n titlebb.left -= offsetLeft;\n titlebb.right -= offsetLeft;\n titlebb.top -= offsetTop;\n titlebb.bottom -= offsetTop;\n avoid.selection.each(function() {\n var avoidbb = Drawing.bBox(this);\n if (Lib.bBoxIntersect(titlebb, avoidbb, pad)) {\n shift = Math.max(shift, shiftSign * (avoidbb[avoid.side] - titlebb[backside]) + pad);\n }\n });\n shift = Math.min(maxshift, shift);\n cont._titleScoot = Math.abs(shift);\n }\n if (shift > 0 || maxshift < 0) {\n var shiftTemplate = {\n left: [-shift, 0],\n right: [shift, 0],\n top: [0, -shift],\n bottom: [0, shift]\n }[avoid.side];\n titleGroup.attr(\"transform\", strTranslate(shiftTemplate[0], shiftTemplate[1]));\n }\n }\n }\n el.call(titleLayout, subtitleEl);\n function setPlaceholder(element, placeholderText) {\n element.text(placeholderText).on(\"mouseover.opacity\", function() {\n d3.select(this).transition().duration(interactConstants.SHOW_PLACEHOLDER).style(\"opacity\", 1);\n }).on(\"mouseout.opacity\", function() {\n d3.select(this).transition().duration(interactConstants.HIDE_PLACEHOLDER).style(\"opacity\", 0);\n });\n }\n if (editable) {\n if (!txt) {\n setPlaceholder(el, placeholder);\n titleIsPlaceholder = true;\n } else el.on(\".opacity\", null);\n el.call(svgTextUtils.makeEditable, { gd }).on(\"edit\", function(text) {\n if (traceIndex !== void 0) {\n Registry.call(\"_guiRestyle\", gd, prop, text, traceIndex);\n } else {\n Registry.call(\"_guiRelayout\", gd, prop, text);\n }\n }).on(\"cancel\", function() {\n this.text(this.attr(\"data-unformatted\")).call(titleLayout);\n }).on(\"input\", function(d) {\n this.text(d || \" \").call(svgTextUtils.positionText, attributes.x, attributes.y);\n });\n if (subtitleEnabled) {\n if (subtitleEnabled && !txt) {\n var titleElBbox = el.node().getBBox();\n var subtitleY = titleElBbox.y + titleElBbox.height + SUBTITLE_PADDING_EM * subFontSize;\n subtitleEl.attr(\"y\", subtitleY);\n }\n if (!subtitleTxt) {\n setPlaceholder(subtitleEl, subtitlePlaceholder);\n subtitleIsPlaceholder = true;\n } else subtitleEl.on(\".opacity\", null);\n subtitleEl.call(svgTextUtils.makeEditable, { gd }).on(\"edit\", function(text) {\n Registry.call(\"_guiRelayout\", gd, \"title.subtitle.text\", text);\n }).on(\"cancel\", function() {\n this.text(this.attr(\"data-unformatted\")).call(titleLayout);\n }).on(\"input\", function(d) {\n this.text(d || \" \").call(svgTextUtils.positionText, subtitleEl.attr(\"x\"), subtitleEl.attr(\"y\"));\n });\n }\n }\n el.classed(\"js-placeholder\", titleIsPlaceholder);\n if (subtitleEl) subtitleEl.classed(\"js-placeholder\", subtitleIsPlaceholder);\n return group;\n }\n module.exports = {\n draw,\n SUBTITLE_PADDING_EM,\n SUBTITLE_PADDING_MATHJAX_EM\n };\n }\n });\n\n // src/plots/cartesian/set_convert.js\n var require_set_convert = __commonJS({\n \"src/plots/cartesian/set_convert.js\"(exports, module) {\n \"use strict\";\n var d3 = require_d3();\n var utcFormat = require_d3_time_format().utcFormat;\n var Lib = require_lib();\n var numberFormat = Lib.numberFormat;\n var isNumeric = require_fast_isnumeric();\n var cleanNumber = Lib.cleanNumber;\n var ms2DateTime = Lib.ms2DateTime;\n var dateTime2ms = Lib.dateTime2ms;\n var ensureNumber = Lib.ensureNumber;\n var isArrayOrTypedArray = Lib.isArrayOrTypedArray;\n var numConstants = require_numerical();\n var FP_SAFE = numConstants.FP_SAFE;\n var BADNUM = numConstants.BADNUM;\n var LOG_CLIP = numConstants.LOG_CLIP;\n var ONEWEEK = numConstants.ONEWEEK;\n var ONEDAY = numConstants.ONEDAY;\n var ONEHOUR = numConstants.ONEHOUR;\n var ONEMIN = numConstants.ONEMIN;\n var ONESEC = numConstants.ONESEC;\n var axisIds = require_axis_ids();\n var constants = require_constants2();\n var HOUR_PATTERN = constants.HOUR_PATTERN;\n var WEEKDAY_PATTERN = constants.WEEKDAY_PATTERN;\n function fromLog(v) {\n return Math.pow(10, v);\n }\n function isValidCategory(v) {\n return v !== null && v !== void 0;\n }\n module.exports = function setConvert(ax, fullLayout) {\n fullLayout = fullLayout || {};\n var axId = ax._id || \"x\";\n var axLetter = axId.charAt(0);\n function toLog(v, clip) {\n if (v > 0) return Math.log(v) / Math.LN10;\n else if (v <= 0 && clip && ax.range && ax.range.length === 2) {\n var r0 = ax.range[0];\n var r1 = ax.range[1];\n return 0.5 * (r0 + r1 - 2 * LOG_CLIP * Math.abs(r0 - r1));\n } else return BADNUM;\n }\n function dt2ms(v, _, calendar, opts) {\n if ((opts || {}).msUTC && isNumeric(v)) {\n return +v;\n }\n var ms = dateTime2ms(v, calendar || ax.calendar);\n if (ms === BADNUM) {\n if (isNumeric(v)) {\n v = +v;\n var msecTenths = Math.floor(Lib.mod(v + 0.05, 1) * 10);\n var msRounded = Math.round(v - msecTenths / 10);\n ms = dateTime2ms(new Date(msRounded)) + msecTenths / 10;\n } else return BADNUM;\n }\n return ms;\n }\n function ms2dt(v, r, calendar) {\n return ms2DateTime(v, r, calendar || ax.calendar);\n }\n function getCategoryName(v) {\n return ax._categories[Math.round(v)];\n }\n function setCategoryIndex(v) {\n if (isValidCategory(v)) {\n if (ax._categoriesMap === void 0) {\n ax._categoriesMap = {};\n }\n if (ax._categoriesMap[v] !== void 0) {\n return ax._categoriesMap[v];\n } else {\n ax._categories.push(typeof v === \"number\" ? String(v) : v);\n var curLength = ax._categories.length - 1;\n ax._categoriesMap[v] = curLength;\n return curLength;\n }\n }\n return BADNUM;\n }\n function setMultiCategoryIndex(arrayIn, len) {\n var arrayOut = new Array(len);\n for (var i = 0; i < len; i++) {\n var v0 = (arrayIn[0] || [])[i];\n var v1 = (arrayIn[1] || [])[i];\n arrayOut[i] = getCategoryIndex([v0, v1]);\n }\n return arrayOut;\n }\n function getCategoryIndex(v) {\n if (ax._categoriesMap) {\n return ax._categoriesMap[v];\n }\n }\n function getCategoryPosition(v) {\n var index = getCategoryIndex(v);\n if (index !== void 0) return index;\n if (isNumeric(v)) return +v;\n }\n function getRangePosition(v) {\n return isNumeric(v) ? +v : getCategoryIndex(v);\n }\n function _l2p(v, m, b) {\n return d3.round(b + m * v, 2);\n }\n function _p2l(px, m, b) {\n return (px - b) / m;\n }\n var l2p = function l2p2(v) {\n if (!isNumeric(v)) return BADNUM;\n return _l2p(v, ax._m, ax._b);\n };\n var p2l = function(px) {\n return _p2l(px, ax._m, ax._b);\n };\n if (ax.rangebreaks) {\n var isY = axLetter === \"y\";\n l2p = function(v) {\n if (!isNumeric(v)) return BADNUM;\n var len = ax._rangebreaks.length;\n if (!len) return _l2p(v, ax._m, ax._b);\n var flip = isY;\n if (ax.range[0] > ax.range[1]) flip = !flip;\n var signAx = flip ? -1 : 1;\n var pos = signAx * v;\n var q = 0;\n for (var i = 0; i < len; i++) {\n var min = signAx * ax._rangebreaks[i].min;\n var max = signAx * ax._rangebreaks[i].max;\n if (pos < min) break;\n if (pos > max) q = i + 1;\n else {\n q = pos < (min + max) / 2 ? i : i + 1;\n break;\n }\n }\n var b2 = ax._B[q] || 0;\n if (!isFinite(b2)) return 0;\n return _l2p(v, ax._m2, b2);\n };\n p2l = function(px) {\n var len = ax._rangebreaks.length;\n if (!len) return _p2l(px, ax._m, ax._b);\n var q = 0;\n for (var i = 0; i < len; i++) {\n if (px < ax._rangebreaks[i].pmin) break;\n if (px > ax._rangebreaks[i].pmax) q = i + 1;\n }\n return _p2l(px, ax._m2, ax._B[q]);\n };\n }\n ax.c2l = ax.type === \"log\" ? toLog : ensureNumber;\n ax.l2c = ax.type === \"log\" ? fromLog : ensureNumber;\n ax.l2p = l2p;\n ax.p2l = p2l;\n ax.c2p = ax.type === \"log\" ? function(v, clip) {\n return l2p(toLog(v, clip));\n } : l2p;\n ax.p2c = ax.type === \"log\" ? function(px) {\n return fromLog(p2l(px));\n } : p2l;\n if ([\"linear\", \"-\"].indexOf(ax.type) !== -1) {\n ax.d2r = ax.r2d = ax.d2c = ax.r2c = ax.d2l = ax.r2l = cleanNumber;\n ax.c2d = ax.c2r = ax.l2d = ax.l2r = ensureNumber;\n ax.d2p = ax.r2p = function(v) {\n return ax.l2p(cleanNumber(v));\n };\n ax.p2d = ax.p2r = p2l;\n ax.cleanPos = ensureNumber;\n } else if (ax.type === \"log\") {\n ax.d2r = ax.d2l = function(v, clip) {\n return toLog(cleanNumber(v), clip);\n };\n ax.r2d = ax.r2c = function(v) {\n return fromLog(cleanNumber(v));\n };\n ax.d2c = ax.r2l = cleanNumber;\n ax.c2d = ax.l2r = ensureNumber;\n ax.c2r = toLog;\n ax.l2d = fromLog;\n ax.d2p = function(v, clip) {\n return ax.l2p(ax.d2r(v, clip));\n };\n ax.p2d = function(px) {\n return fromLog(p2l(px));\n };\n ax.r2p = function(v) {\n return ax.l2p(cleanNumber(v));\n };\n ax.p2r = p2l;\n ax.cleanPos = ensureNumber;\n } else if (ax.type === \"date\") {\n ax.d2r = ax.r2d = Lib.identity;\n ax.d2c = ax.r2c = ax.d2l = ax.r2l = dt2ms;\n ax.c2d = ax.c2r = ax.l2d = ax.l2r = ms2dt;\n ax.d2p = ax.r2p = function(v, _, calendar) {\n return ax.l2p(dt2ms(v, 0, calendar));\n };\n ax.p2d = ax.p2r = function(px, r, calendar) {\n return ms2dt(p2l(px), r, calendar);\n };\n ax.cleanPos = function(v) {\n return Lib.cleanDate(v, BADNUM, ax.calendar);\n };\n } else if (ax.type === \"category\") {\n ax.d2c = ax.d2l = setCategoryIndex;\n ax.r2d = ax.c2d = ax.l2d = getCategoryName;\n ax.d2r = ax.d2l_noadd = getCategoryPosition;\n ax.r2c = function(v) {\n var index = getRangePosition(v);\n return index !== void 0 ? index : ax.fraction2r(0.5);\n };\n ax.l2r = ax.c2r = ensureNumber;\n ax.r2l = getRangePosition;\n ax.d2p = function(v) {\n return ax.l2p(ax.r2c(v));\n };\n ax.p2d = function(px) {\n return getCategoryName(p2l(px));\n };\n ax.r2p = ax.d2p;\n ax.p2r = p2l;\n ax.cleanPos = function(v) {\n if (typeof v === \"string\" && v !== \"\") return v;\n return ensureNumber(v);\n };\n } else if (ax.type === \"multicategory\") {\n ax.r2d = ax.c2d = ax.l2d = getCategoryName;\n ax.d2r = ax.d2l_noadd = getCategoryPosition;\n ax.r2c = function(v) {\n var index = getCategoryPosition(v);\n return index !== void 0 ? index : ax.fraction2r(0.5);\n };\n ax.r2c_just_indices = getCategoryIndex;\n ax.l2r = ax.c2r = ensureNumber;\n ax.r2l = getCategoryPosition;\n ax.d2p = function(v) {\n return ax.l2p(ax.r2c(v));\n };\n ax.p2d = function(px) {\n return getCategoryName(p2l(px));\n };\n ax.r2p = ax.d2p;\n ax.p2r = p2l;\n ax.cleanPos = function(v) {\n if (Array.isArray(v) || typeof v === \"string\" && v !== \"\") return v;\n return ensureNumber(v);\n };\n ax.setupMultiCategory = function(fullData) {\n var traceIndices = ax._traceIndices;\n var i, j;\n var group = ax._matchGroup;\n if (group && ax._categories.length === 0) {\n for (var axId2 in group) {\n if (axId2 !== axId) {\n var ax2 = fullLayout[axisIds.id2name(axId2)];\n traceIndices = traceIndices.concat(ax2._traceIndices);\n }\n }\n }\n var seen = [[0, {}], [0, {}]];\n var list = [];\n for (i = 0; i < traceIndices.length; i++) {\n var trace = fullData[traceIndices[i]];\n if (axLetter in trace) {\n var arrayIn = trace[axLetter];\n var len = trace._length || Lib.minRowLength(arrayIn);\n if (isArrayOrTypedArray(arrayIn[0]) && isArrayOrTypedArray(arrayIn[1])) {\n for (j = 0; j < len; j++) {\n var v0 = arrayIn[0][j];\n var v1 = arrayIn[1][j];\n if (isValidCategory(v0) && isValidCategory(v1)) {\n list.push([v0, v1]);\n if (!(v0 in seen[0][1])) {\n seen[0][1][v0] = seen[0][0]++;\n }\n if (!(v1 in seen[1][1])) {\n seen[1][1][v1] = seen[1][0]++;\n }\n }\n }\n }\n }\n }\n list.sort(function(a, b) {\n var ind0 = seen[0][1];\n var d = ind0[a[0]] - ind0[b[0]];\n if (d) return d;\n var ind1 = seen[1][1];\n return ind1[a[1]] - ind1[b[1]];\n });\n for (i = 0; i < list.length; i++) {\n setCategoryIndex(list[i]);\n }\n };\n }\n ax.fraction2r = function(v) {\n var rl0 = ax.r2l(ax.range[0]);\n var rl1 = ax.r2l(ax.range[1]);\n return ax.l2r(rl0 + v * (rl1 - rl0));\n };\n ax.r2fraction = function(v) {\n var rl0 = ax.r2l(ax.range[0]);\n var rl1 = ax.r2l(ax.range[1]);\n return (ax.r2l(v) - rl0) / (rl1 - rl0);\n };\n ax.limitRange = function(rangeAttr) {\n var minallowed = ax.minallowed;\n var maxallowed = ax.maxallowed;\n if (minallowed === void 0 && maxallowed === void 0) return;\n if (!rangeAttr) rangeAttr = \"range\";\n var range = Lib.nestedProperty(ax, rangeAttr).get();\n var rng = Lib.simpleMap(range, ax.r2l);\n var axrev = rng[1] < rng[0];\n if (axrev) rng.reverse();\n var bounds = Lib.simpleMap([minallowed, maxallowed], ax.r2l);\n if (minallowed !== void 0 && rng[0] < bounds[0]) range[axrev ? 1 : 0] = minallowed;\n if (maxallowed !== void 0 && rng[1] > bounds[1]) range[axrev ? 0 : 1] = maxallowed;\n if (range[0] === range[1]) {\n var minL = ax.l2r(minallowed);\n var maxL = ax.l2r(maxallowed);\n if (minallowed !== void 0) {\n var _max = minL + 1;\n if (maxallowed !== void 0) _max = Math.min(_max, maxL);\n range[axrev ? 1 : 0] = _max;\n }\n if (maxallowed !== void 0) {\n var _min = maxL + 1;\n if (minallowed !== void 0) _min = Math.max(_min, minL);\n range[axrev ? 0 : 1] = _min;\n }\n }\n };\n ax.cleanRange = function(rangeAttr, opts) {\n ax._cleanRange(rangeAttr, opts);\n ax.limitRange(rangeAttr);\n };\n ax._cleanRange = function(rangeAttr, opts) {\n if (!opts) opts = {};\n if (!rangeAttr) rangeAttr = \"range\";\n var range = Lib.nestedProperty(ax, rangeAttr).get();\n var i, dflt;\n if (ax.type === \"date\") dflt = Lib.dfltRange(ax.calendar);\n else if (axLetter === \"y\") dflt = constants.DFLTRANGEY;\n else if (ax._name === \"realaxis\") dflt = [0, 1];\n else dflt = opts.dfltRange || constants.DFLTRANGEX;\n dflt = dflt.slice();\n if (ax.rangemode === \"tozero\" || ax.rangemode === \"nonnegative\") {\n dflt[0] = 0;\n }\n if (!range || range.length !== 2) {\n Lib.nestedProperty(ax, rangeAttr).set(dflt);\n return;\n }\n var nullRange0 = range[0] === null;\n var nullRange1 = range[1] === null;\n if (ax.type === \"date\" && !ax.autorange) {\n range[0] = Lib.cleanDate(range[0], BADNUM, ax.calendar);\n range[1] = Lib.cleanDate(range[1], BADNUM, ax.calendar);\n }\n for (i = 0; i < 2; i++) {\n if (ax.type === \"date\") {\n if (!Lib.isDateTime(range[i], ax.calendar)) {\n ax[rangeAttr] = dflt;\n break;\n }\n if (ax.r2l(range[0]) === ax.r2l(range[1])) {\n var linCenter = Lib.constrain(\n ax.r2l(range[0]),\n Lib.MIN_MS + 1e3,\n Lib.MAX_MS - 1e3\n );\n range[0] = ax.l2r(linCenter - 1e3);\n range[1] = ax.l2r(linCenter + 1e3);\n break;\n }\n } else {\n if (!isNumeric(range[i])) {\n if (!(nullRange0 || nullRange1) && isNumeric(range[1 - i])) {\n range[i] = range[1 - i] * (i ? 10 : 0.1);\n } else {\n ax[rangeAttr] = dflt;\n break;\n }\n }\n if (range[i] < -FP_SAFE) range[i] = -FP_SAFE;\n else if (range[i] > FP_SAFE) range[i] = FP_SAFE;\n if (range[0] === range[1]) {\n var inc = Math.max(1, Math.abs(range[0] * 1e-6));\n range[0] -= inc;\n range[1] += inc;\n }\n }\n }\n };\n ax.setScale = function(usePrivateRange) {\n var gs = fullLayout._size;\n if (ax.overlaying) {\n var ax2 = axisIds.getFromId({ _fullLayout: fullLayout }, ax.overlaying);\n ax.domain = ax2.domain;\n }\n var rangeAttr = usePrivateRange && ax._r ? \"_r\" : \"range\";\n var calendar = ax.calendar;\n ax.cleanRange(rangeAttr);\n var rl0 = ax.r2l(ax[rangeAttr][0], calendar);\n var rl1 = ax.r2l(ax[rangeAttr][1], calendar);\n var isY2 = axLetter === \"y\";\n if (isY2) {\n ax._offset = gs.t + (1 - ax.domain[1]) * gs.h;\n ax._length = gs.h * (ax.domain[1] - ax.domain[0]);\n ax._m = ax._length / (rl0 - rl1);\n ax._b = -ax._m * rl1;\n } else {\n ax._offset = gs.l + ax.domain[0] * gs.w;\n ax._length = gs.w * (ax.domain[1] - ax.domain[0]);\n ax._m = ax._length / (rl1 - rl0);\n ax._b = -ax._m * rl0;\n }\n ax._rangebreaks = [];\n ax._lBreaks = 0;\n ax._m2 = 0;\n ax._B = [];\n if (ax.rangebreaks) {\n var i, brk;\n ax._rangebreaks = ax.locateBreaks(\n Math.min(rl0, rl1),\n Math.max(rl0, rl1)\n );\n if (ax._rangebreaks.length) {\n for (i = 0; i < ax._rangebreaks.length; i++) {\n brk = ax._rangebreaks[i];\n ax._lBreaks += Math.abs(brk.max - brk.min);\n }\n var flip = isY2;\n if (rl0 > rl1) flip = !flip;\n if (flip) ax._rangebreaks.reverse();\n var sign = flip ? -1 : 1;\n ax._m2 = sign * ax._length / (Math.abs(rl1 - rl0) - ax._lBreaks);\n ax._B.push(-ax._m2 * (isY2 ? rl1 : rl0));\n for (i = 0; i < ax._rangebreaks.length; i++) {\n brk = ax._rangebreaks[i];\n ax._B.push(\n ax._B[ax._B.length - 1] - sign * ax._m2 * (brk.max - brk.min)\n );\n }\n for (i = 0; i < ax._rangebreaks.length; i++) {\n brk = ax._rangebreaks[i];\n brk.pmin = l2p(brk.min);\n brk.pmax = l2p(brk.max);\n }\n }\n }\n if (!isFinite(ax._m) || !isFinite(ax._b) || ax._length < 0) {\n fullLayout._replotting = false;\n throw new Error(\"Something went wrong with axis scaling\");\n }\n };\n ax.maskBreaks = function(v) {\n var rangebreaksIn = ax.rangebreaks || [];\n var bnds, b0, b1, vb, vDate;\n if (!rangebreaksIn._cachedPatterns) {\n rangebreaksIn._cachedPatterns = rangebreaksIn.map(function(brk2) {\n return brk2.enabled && brk2.bounds ? Lib.simpleMap(\n brk2.bounds,\n brk2.pattern ? cleanNumber : ax.d2c\n // case of pattern: ''\n ) : null;\n });\n }\n if (!rangebreaksIn._cachedValues) {\n rangebreaksIn._cachedValues = rangebreaksIn.map(function(brk2) {\n return brk2.enabled && brk2.values ? Lib.simpleMap(brk2.values, ax.d2c).sort(Lib.sorterAsc) : null;\n });\n }\n for (var i = 0; i < rangebreaksIn.length; i++) {\n var brk = rangebreaksIn[i];\n if (brk.enabled) {\n if (brk.bounds) {\n var pattern = brk.pattern;\n bnds = rangebreaksIn._cachedPatterns[i];\n b0 = bnds[0];\n b1 = bnds[1];\n switch (pattern) {\n case WEEKDAY_PATTERN:\n vDate = new Date(v);\n vb = vDate.getUTCDay();\n if (b0 > b1) {\n b1 += 7;\n if (vb < b0) vb += 7;\n }\n break;\n case HOUR_PATTERN:\n vDate = new Date(v);\n var hours = vDate.getUTCHours();\n var minutes = vDate.getUTCMinutes();\n var seconds = vDate.getUTCSeconds();\n var milliseconds = vDate.getUTCMilliseconds();\n vb = hours + (minutes / 60 + seconds / 3600 + milliseconds / 36e5);\n if (b0 > b1) {\n b1 += 24;\n if (vb < b0) vb += 24;\n }\n break;\n case \"\":\n vb = v;\n break;\n }\n if (vb >= b0 && vb < b1) return BADNUM;\n } else {\n var vals = rangebreaksIn._cachedValues[i];\n for (var j = 0; j < vals.length; j++) {\n b0 = vals[j];\n b1 = b0 + brk.dvalue;\n if (v >= b0 && v < b1) return BADNUM;\n }\n }\n }\n }\n return v;\n };\n ax.locateBreaks = function(r0, r1) {\n var i, bnds, b0, b1;\n var rangebreaksOut = [];\n if (!ax.rangebreaks) return rangebreaksOut;\n var rangebreaksIn = ax.rangebreaks.slice().sort(function(a, b) {\n if (a.pattern === WEEKDAY_PATTERN && b.pattern === HOUR_PATTERN) return -1;\n if (b.pattern === WEEKDAY_PATTERN && a.pattern === HOUR_PATTERN) return 1;\n return 0;\n });\n var addBreak = function(min, max) {\n min = Lib.constrain(min, r0, r1);\n max = Lib.constrain(max, r0, r1);\n if (min === max) return;\n var isNewBreak = true;\n for (var j2 = 0; j2 < rangebreaksOut.length; j2++) {\n var brkj = rangebreaksOut[j2];\n if (min < brkj.max && max >= brkj.min) {\n if (min < brkj.min) {\n brkj.min = min;\n }\n if (max > brkj.max) {\n brkj.max = max;\n }\n isNewBreak = false;\n }\n }\n if (isNewBreak) {\n rangebreaksOut.push({ min, max });\n }\n };\n for (i = 0; i < rangebreaksIn.length; i++) {\n var brk = rangebreaksIn[i];\n if (brk.enabled) {\n if (brk.bounds) {\n var t0 = r0;\n var t1 = r1;\n if (brk.pattern) {\n t0 = Math.floor(t0);\n }\n bnds = Lib.simpleMap(brk.bounds, brk.pattern ? cleanNumber : ax.r2l);\n b0 = bnds[0];\n b1 = bnds[1];\n var t0Date = new Date(t0);\n var bndDelta;\n var step;\n switch (brk.pattern) {\n case WEEKDAY_PATTERN:\n step = ONEWEEK;\n bndDelta = ((b1 < b0 ? 7 : 0) + (b1 - b0)) * ONEDAY;\n t0 += b0 * ONEDAY - (t0Date.getUTCDay() * ONEDAY + t0Date.getUTCHours() * ONEHOUR + t0Date.getUTCMinutes() * ONEMIN + t0Date.getUTCSeconds() * ONESEC + t0Date.getUTCMilliseconds());\n break;\n case HOUR_PATTERN:\n step = ONEDAY;\n bndDelta = ((b1 < b0 ? 24 : 0) + (b1 - b0)) * ONEHOUR;\n t0 += b0 * ONEHOUR - (t0Date.getUTCHours() * ONEHOUR + t0Date.getUTCMinutes() * ONEMIN + t0Date.getUTCSeconds() * ONESEC + t0Date.getUTCMilliseconds());\n break;\n default:\n t0 = Math.min(bnds[0], bnds[1]);\n t1 = Math.max(bnds[0], bnds[1]);\n step = t1 - t0;\n bndDelta = step;\n }\n for (var t = t0; t < t1; t += step) {\n addBreak(t, t + bndDelta);\n }\n } else {\n var vals = Lib.simpleMap(brk.values, ax.d2c);\n for (var j = 0; j < vals.length; j++) {\n b0 = vals[j];\n b1 = b0 + brk.dvalue;\n addBreak(b0, b1);\n }\n }\n }\n }\n rangebreaksOut.sort(function(a, b) {\n return a.min - b.min;\n });\n return rangebreaksOut;\n };\n ax.makeCalcdata = function(trace, axLetter2, opts) {\n var arrayIn, arrayOut, i, len;\n var axType = ax.type;\n var cal = axType === \"date\" && trace[axLetter2 + \"calendar\"];\n if (axLetter2 in trace) {\n arrayIn = trace[axLetter2];\n len = trace._length || Lib.minRowLength(arrayIn);\n if (Lib.isTypedArray(arrayIn) && (axType === \"linear\" || axType === \"log\")) {\n if (len === arrayIn.length) {\n return arrayIn;\n } else if (arrayIn.subarray) {\n return arrayIn.subarray(0, len);\n }\n }\n if (axType === \"multicategory\") {\n return setMultiCategoryIndex(arrayIn, len);\n }\n arrayOut = new Array(len);\n for (i = 0; i < len; i++) {\n arrayOut[i] = ax.d2c(arrayIn[i], 0, cal, opts);\n }\n } else {\n var v0 = axLetter2 + \"0\" in trace ? ax.d2c(trace[axLetter2 + \"0\"], 0, cal) : 0;\n var dv = trace[\"d\" + axLetter2] ? Number(trace[\"d\" + axLetter2]) : 1;\n arrayIn = trace[{ x: \"y\", y: \"x\" }[axLetter2]];\n len = trace._length || arrayIn.length;\n arrayOut = new Array(len);\n for (i = 0; i < len; i++) {\n arrayOut[i] = v0 + i * dv;\n }\n }\n if (ax.rangebreaks) {\n for (i = 0; i < len; i++) {\n arrayOut[i] = ax.maskBreaks(arrayOut[i]);\n }\n }\n return arrayOut;\n };\n ax.isValidRange = function(range, nullOk) {\n return Array.isArray(range) && range.length === 2 && (nullOk && range[0] === null || isNumeric(ax.r2l(range[0]))) && (nullOk && range[1] === null || isNumeric(ax.r2l(range[1])));\n };\n ax.getAutorangeDflt = function(range, options) {\n var autorangeDflt = !ax.isValidRange(range, \"nullOk\");\n if (autorangeDflt && options && options.reverseDflt) autorangeDflt = \"reversed\";\n else if (range) {\n if (range[0] === null && range[1] === null) {\n autorangeDflt = true;\n } else if (range[0] === null && range[1] !== null) {\n autorangeDflt = \"min\";\n } else if (range[0] !== null && range[1] === null) {\n autorangeDflt = \"max\";\n }\n }\n return autorangeDflt;\n };\n ax.isReversed = function() {\n var autorange = ax.autorange;\n return autorange === \"reversed\" || autorange === \"min reversed\" || autorange === \"max reversed\";\n };\n ax.isPtWithinRange = function(d, calendar) {\n var coord = ax.c2l(d[axLetter], null, calendar);\n var r0 = ax.r2l(ax.range[0]);\n var r1 = ax.r2l(ax.range[1]);\n if (r0 < r1) {\n return r0 <= coord && coord <= r1;\n } else {\n return r1 <= coord && coord <= r0;\n }\n };\n ax._emptyCategories = function() {\n ax._categories = [];\n ax._categoriesMap = {};\n };\n ax.clearCalc = function() {\n var group = ax._matchGroup;\n if (group) {\n var categories = null;\n var categoriesMap = null;\n for (var axId2 in group) {\n var ax2 = fullLayout[axisIds.id2name(axId2)];\n if (ax2._categories) {\n categories = ax2._categories;\n categoriesMap = ax2._categoriesMap;\n break;\n }\n }\n if (categories && categoriesMap) {\n ax._categories = categories;\n ax._categoriesMap = categoriesMap;\n } else {\n ax._emptyCategories();\n }\n } else {\n ax._emptyCategories();\n }\n if (ax._initialCategories) {\n for (var j = 0; j < ax._initialCategories.length; j++) {\n setCategoryIndex(ax._initialCategories[j]);\n }\n }\n };\n ax.sortByInitialCategories = function() {\n var affectedTraces = [];\n ax._emptyCategories();\n if (ax._initialCategories) {\n for (var j = 0; j < ax._initialCategories.length; j++) {\n setCategoryIndex(ax._initialCategories[j]);\n }\n }\n affectedTraces = affectedTraces.concat(ax._traceIndices);\n var group = ax._matchGroup;\n for (var axId2 in group) {\n if (axId === axId2) continue;\n var ax2 = fullLayout[axisIds.id2name(axId2)];\n ax2._categories = ax._categories;\n ax2._categoriesMap = ax._categoriesMap;\n affectedTraces = affectedTraces.concat(ax2._traceIndices);\n }\n return affectedTraces;\n };\n var locale = fullLayout._d3locale;\n if (ax.type === \"date\") {\n ax._dateFormat = locale ? locale.timeFormat : utcFormat;\n ax._extraFormat = fullLayout._extraFormat;\n }\n ax._separators = fullLayout.separators;\n ax._numFormat = locale ? locale.numberFormat : numberFormat;\n delete ax._minDtick;\n delete ax._forceTick0;\n };\n }\n });\n\n // src/plots/cartesian/axis_autotype.js\n var require_axis_autotype = __commonJS({\n \"src/plots/cartesian/axis_autotype.js\"(exports, module) {\n \"use strict\";\n var isNumeric = require_fast_isnumeric();\n var Lib = require_lib();\n var BADNUM = require_numerical().BADNUM;\n var isArrayOrTypedArray = Lib.isArrayOrTypedArray;\n var isDateTime = Lib.isDateTime;\n var cleanNumber = Lib.cleanNumber;\n var round = Math.round;\n module.exports = function autoType(array, calendar, opts) {\n var a = array;\n var noMultiCategory = opts.noMultiCategory;\n if (isArrayOrTypedArray(a) && !a.length) return \"-\";\n if (!noMultiCategory && multiCategory(a)) return \"multicategory\";\n if (noMultiCategory && Array.isArray(a[0])) {\n var b = [];\n for (var i = 0; i < a.length; i++) {\n if (isArrayOrTypedArray(a[i])) {\n for (var j = 0; j < a[i].length; j++) {\n b.push(a[i][j]);\n }\n }\n }\n a = b;\n }\n if (moreDates(a, calendar)) return \"date\";\n var convertNumeric = opts.autotypenumbers !== \"strict\";\n if (category(a, convertNumeric)) return \"category\";\n if (linearOK(a, convertNumeric)) return \"linear\";\n return \"-\";\n };\n function hasTypeNumber(v, convertNumeric) {\n return convertNumeric ? isNumeric(v) : typeof v === \"number\";\n }\n function linearOK(a, convertNumeric) {\n var len = a.length;\n for (var i = 0; i < len; i++) {\n if (hasTypeNumber(a[i], convertNumeric)) return true;\n }\n return false;\n }\n function moreDates(a, calendar) {\n var len = a.length;\n var inc = getIncrement(len);\n var dats = 0;\n var nums = 0;\n var seen = {};\n for (var f = 0; f < len; f += inc) {\n var i = round(f);\n var ai = a[i];\n var stri = String(ai);\n if (seen[stri]) continue;\n seen[stri] = 1;\n if (isDateTime(ai, calendar)) dats++;\n if (isNumeric(ai)) nums++;\n }\n return dats > nums * 2;\n }\n function getIncrement(len) {\n return Math.max(1, (len - 1) / 1e3);\n }\n function category(a, convertNumeric) {\n var len = a.length;\n var inc = getIncrement(len);\n var nums = 0;\n var cats = 0;\n var seen = {};\n for (var f = 0; f < len; f += inc) {\n var i = round(f);\n var ai = a[i];\n var stri = String(ai);\n if (seen[stri]) continue;\n seen[stri] = 1;\n var t = typeof ai;\n if (t === \"boolean\") cats++;\n else if (convertNumeric ? cleanNumber(ai) !== BADNUM : t === \"number\") nums++;\n else if (t === \"string\") cats++;\n }\n return cats > nums * 2;\n }\n function multiCategory(a) {\n return isArrayOrTypedArray(a[0]) && isArrayOrTypedArray(a[1]);\n }\n }\n });\n\n // src/plots/cartesian/autorange.js\n var require_autorange = __commonJS({\n \"src/plots/cartesian/autorange.js\"(exports, module) {\n \"use strict\";\n var d3 = require_d3();\n var isNumeric = require_fast_isnumeric();\n var Lib = require_lib();\n var FP_SAFE = require_numerical().FP_SAFE;\n var Registry = require_registry();\n var Drawing = require_drawing();\n var axIds = require_axis_ids();\n var getFromId = axIds.getFromId;\n var isLinked = axIds.isLinked;\n module.exports = {\n applyAutorangeOptions,\n getAutoRange,\n makePadFn,\n doAutoRange,\n findExtremes,\n concatExtremes\n };\n function getAutoRange(gd, ax) {\n var i, j;\n var newRange = [];\n var fullLayout = gd._fullLayout;\n var getPadMin = makePadFn(fullLayout, ax, 0);\n var getPadMax = makePadFn(fullLayout, ax, 1);\n var extremes = concatExtremes(gd, ax);\n var minArray = extremes.min;\n var maxArray = extremes.max;\n if (minArray.length === 0 || maxArray.length === 0) {\n return Lib.simpleMap(ax.range, ax.r2l);\n }\n var minmin = minArray[0].val;\n var maxmax = maxArray[0].val;\n for (i = 1; i < minArray.length; i++) {\n if (minmin !== maxmax) break;\n minmin = Math.min(minmin, minArray[i].val);\n }\n for (i = 1; i < maxArray.length; i++) {\n if (minmin !== maxmax) break;\n maxmax = Math.max(maxmax, maxArray[i].val);\n }\n var autorange = ax.autorange;\n var axReverse = autorange === \"reversed\" || autorange === \"min reversed\" || autorange === \"max reversed\";\n if (!axReverse && ax.range) {\n var rng = Lib.simpleMap(ax.range, ax.r2l);\n axReverse = rng[1] < rng[0];\n }\n if (ax.autorange === \"reversed\") {\n ax.autorange = true;\n }\n var rangeMode = ax.rangemode;\n var toZero = rangeMode === \"tozero\";\n var nonNegative = rangeMode === \"nonnegative\";\n var axLen = ax._length;\n var minSpan = axLen / 10;\n var mbest = 0;\n var minpt, maxpt, minbest, maxbest, dp, dv;\n for (i = 0; i < minArray.length; i++) {\n minpt = minArray[i];\n for (j = 0; j < maxArray.length; j++) {\n maxpt = maxArray[j];\n dv = maxpt.val - minpt.val - calcBreaksLength(ax, minpt.val, maxpt.val);\n if (dv > 0) {\n dp = axLen - getPadMin(minpt) - getPadMax(maxpt);\n if (dp > minSpan) {\n if (dv / dp > mbest) {\n minbest = minpt;\n maxbest = maxpt;\n mbest = dv / dp;\n }\n } else if (dv / axLen > mbest) {\n minbest = { val: minpt.val, nopad: 1 };\n maxbest = { val: maxpt.val, nopad: 1 };\n mbest = dv / axLen;\n }\n }\n }\n }\n function maximumPad(prev, pt) {\n return Math.max(prev, getPadMax(pt));\n }\n if (minmin === maxmax) {\n var lower = minmin - 1;\n var upper = minmin + 1;\n if (toZero) {\n if (minmin === 0) {\n newRange = [0, 1];\n } else {\n var maxPad = (minmin > 0 ? maxArray : minArray).reduce(maximumPad, 0);\n var rangeEnd = minmin / (1 - Math.min(0.5, maxPad / axLen));\n newRange = minmin > 0 ? [0, rangeEnd] : [rangeEnd, 0];\n }\n } else if (nonNegative) {\n newRange = [Math.max(0, lower), Math.max(1, upper)];\n } else {\n newRange = [lower, upper];\n }\n } else {\n if (toZero) {\n if (minbest.val >= 0) {\n minbest = { val: 0, nopad: 1 };\n }\n if (maxbest.val <= 0) {\n maxbest = { val: 0, nopad: 1 };\n }\n } else if (nonNegative) {\n if (minbest.val - mbest * getPadMin(minbest) < 0) {\n minbest = { val: 0, nopad: 1 };\n }\n if (maxbest.val <= 0) {\n maxbest = { val: 1, nopad: 1 };\n }\n }\n mbest = (maxbest.val - minbest.val - calcBreaksLength(ax, minpt.val, maxpt.val)) / (axLen - getPadMin(minbest) - getPadMax(maxbest));\n newRange = [\n minbest.val - mbest * getPadMin(minbest),\n maxbest.val + mbest * getPadMax(maxbest)\n ];\n }\n newRange = applyAutorangeOptions(newRange, ax);\n if (ax.limitRange) ax.limitRange();\n if (axReverse) newRange.reverse();\n return Lib.simpleMap(newRange, ax.l2r || Number);\n }\n function calcBreaksLength(ax, v0, v1) {\n var lBreaks = 0;\n if (ax.rangebreaks) {\n var rangebreaksOut = ax.locateBreaks(v0, v1);\n for (var i = 0; i < rangebreaksOut.length; i++) {\n var brk = rangebreaksOut[i];\n lBreaks += brk.max - brk.min;\n }\n }\n return lBreaks;\n }\n function makePadFn(fullLayout, ax, max) {\n var extrappad = 0.05 * ax._length;\n var anchorAxis = ax._anchorAxis || {};\n if ((ax.ticklabelposition || \"\").indexOf(\"inside\") !== -1 || (anchorAxis.ticklabelposition || \"\").indexOf(\"inside\") !== -1) {\n var axReverse = ax.isReversed();\n if (!axReverse) {\n var rng = Lib.simpleMap(ax.range, ax.r2l);\n axReverse = rng[1] < rng[0];\n }\n if (axReverse) max = !max;\n }\n var zero = 0;\n if (!isLinked(fullLayout, ax._id)) {\n zero = padInsideLabelsOnAnchorAxis(fullLayout, ax, max);\n }\n extrappad = Math.max(zero, extrappad);\n if (ax.constrain === \"domain\" && ax._inputDomain) {\n extrappad *= (ax._inputDomain[1] - ax._inputDomain[0]) / (ax.domain[1] - ax.domain[0]);\n }\n return function getPad(pt) {\n if (pt.nopad) return 0;\n return pt.pad + (pt.extrapad ? extrappad : zero);\n };\n }\n var TEXTPAD = 3;\n function padInsideLabelsOnAnchorAxis(fullLayout, ax, max) {\n var pad = 0;\n var isX = ax._id.charAt(0) === \"x\";\n for (var subplot in fullLayout._plots) {\n var plotinfo = fullLayout._plots[subplot];\n if (ax._id !== plotinfo.xaxis._id && ax._id !== plotinfo.yaxis._id) continue;\n var anchorAxis = (isX ? plotinfo.yaxis : plotinfo.xaxis) || {};\n if ((anchorAxis.ticklabelposition || \"\").indexOf(\"inside\") !== -1) {\n if (!max && (anchorAxis.side === \"left\" || anchorAxis.side === \"bottom\") || max && (anchorAxis.side === \"top\" || anchorAxis.side === \"right\")) {\n if (anchorAxis._vals) {\n var rad = Lib.deg2rad(anchorAxis._tickAngles[anchorAxis._id + \"tick\"] || 0);\n var cosA = Math.abs(Math.cos(rad));\n var sinA = Math.abs(Math.sin(rad));\n if (!anchorAxis._vals[0].bb) {\n var cls = anchorAxis._id + \"tick\";\n var tickLabels = anchorAxis._selections[cls];\n tickLabels.each(function(d) {\n var thisLabel = d3.select(this);\n var mathjaxGroup = thisLabel.select(\".text-math-group\");\n if (mathjaxGroup.empty()) {\n d.bb = Drawing.bBox(thisLabel.node());\n }\n });\n }\n for (var i = 0; i < anchorAxis._vals.length; i++) {\n var t = anchorAxis._vals[i];\n var bb = t.bb;\n if (bb) {\n var w = 2 * TEXTPAD + bb.width;\n var h = 2 * TEXTPAD + bb.height;\n pad = Math.max(\n pad,\n isX ? Math.max(w * cosA, h * sinA) : Math.max(h * cosA, w * sinA)\n );\n }\n }\n }\n if (anchorAxis.ticks === \"inside\" && anchorAxis.ticklabelposition === \"inside\") {\n pad += anchorAxis.ticklen || 0;\n }\n }\n }\n }\n return pad;\n }\n function concatExtremes(gd, ax, noMatch) {\n var axId = ax._id;\n var fullData = gd._fullData;\n var fullLayout = gd._fullLayout;\n var minArray = [];\n var maxArray = [];\n var i, j, d;\n function _concat(cont, indices) {\n for (i = 0; i < indices.length; i++) {\n var item = cont[indices[i]];\n var extremes = (item._extremes || {})[axId];\n if (item.visible === true && extremes) {\n for (j = 0; j < extremes.min.length; j++) {\n d = extremes.min[j];\n collapseMinArray(minArray, d.val, d.pad, { extrapad: d.extrapad });\n }\n for (j = 0; j < extremes.max.length; j++) {\n d = extremes.max[j];\n collapseMaxArray(maxArray, d.val, d.pad, { extrapad: d.extrapad });\n }\n }\n }\n }\n _concat(fullData, ax._traceIndices);\n _concat(fullLayout.annotations || [], ax._annIndices || []);\n _concat(fullLayout.shapes || [], ax._shapeIndices || []);\n if (ax._matchGroup && !noMatch) {\n for (var axId2 in ax._matchGroup) {\n if (axId2 !== ax._id) {\n var ax2 = getFromId(gd, axId2);\n var extremes2 = concatExtremes(gd, ax2, true);\n var lenRatio = ax._length / ax2._length;\n for (j = 0; j < extremes2.min.length; j++) {\n d = extremes2.min[j];\n collapseMinArray(minArray, d.val, d.pad * lenRatio, { extrapad: d.extrapad });\n }\n for (j = 0; j < extremes2.max.length; j++) {\n d = extremes2.max[j];\n collapseMaxArray(maxArray, d.val, d.pad * lenRatio, { extrapad: d.extrapad });\n }\n }\n }\n }\n return { min: minArray, max: maxArray };\n }\n function doAutoRange(gd, ax, presetRange) {\n ax.setScale();\n if (ax.autorange) {\n ax.range = presetRange ? presetRange.slice() : getAutoRange(gd, ax);\n ax._r = ax.range.slice();\n ax._rl = Lib.simpleMap(ax._r, ax.r2l);\n var axIn = ax._input;\n var edits = {};\n edits[ax._attr + \".range\"] = ax.range;\n edits[ax._attr + \".autorange\"] = ax.autorange;\n Registry.call(\"_storeDirectGUIEdit\", gd.layout, gd._fullLayout._preGUI, edits);\n axIn.range = ax.range.slice();\n axIn.autorange = ax.autorange;\n }\n var anchorAx = ax._anchorAxis;\n if (anchorAx && anchorAx.rangeslider) {\n var axeRangeOpts = anchorAx.rangeslider[ax._name];\n if (axeRangeOpts) {\n if (axeRangeOpts.rangemode === \"auto\") {\n axeRangeOpts.range = getAutoRange(gd, ax);\n }\n }\n anchorAx._input.rangeslider[ax._name] = Lib.extendFlat({}, axeRangeOpts);\n }\n }\n function findExtremes(ax, data, opts) {\n if (!opts) opts = {};\n if (!ax._m) ax.setScale();\n var minArray = [];\n var maxArray = [];\n var len = data.length;\n var extrapad = opts.padded || false;\n var tozero = opts.tozero && (ax.type === \"linear\" || ax.type === \"-\");\n var isLog = ax.type === \"log\";\n var hasArrayOption = false;\n var vpadLinearized = opts.vpadLinearized || false;\n var i, v, di, dmin, dmax, ppadiplus, ppadiminus, vmin, vmax;\n function makePadAccessor(item) {\n if (Array.isArray(item)) {\n hasArrayOption = true;\n return function(i2) {\n return Math.max(Number(item[i2] || 0), 0);\n };\n } else {\n var v2 = Math.max(Number(item || 0), 0);\n return function() {\n return v2;\n };\n }\n }\n var ppadplus = makePadAccessor((ax._m > 0 ? opts.ppadplus : opts.ppadminus) || opts.ppad || 0);\n var ppadminus = makePadAccessor((ax._m > 0 ? opts.ppadminus : opts.ppadplus) || opts.ppad || 0);\n var vpadplus = makePadAccessor(opts.vpadplus || opts.vpad);\n var vpadminus = makePadAccessor(opts.vpadminus || opts.vpad);\n if (!hasArrayOption) {\n vmin = Infinity;\n vmax = -Infinity;\n if (isLog) {\n for (i = 0; i < len; i++) {\n v = data[i];\n if (v < vmin && v > 0) vmin = v;\n if (v > vmax && v < FP_SAFE) vmax = v;\n }\n } else {\n for (i = 0; i < len; i++) {\n v = data[i];\n if (v < vmin && v > -FP_SAFE) vmin = v;\n if (v > vmax && v < FP_SAFE) vmax = v;\n }\n }\n data = [vmin, vmax];\n len = 2;\n }\n var collapseOpts = { tozero, extrapad };\n function addItem(i2) {\n di = data[i2];\n if (!isNumeric(di)) return;\n ppadiplus = ppadplus(i2);\n ppadiminus = ppadminus(i2);\n if (vpadLinearized) {\n dmin = ax.c2l(di) - vpadminus(i2);\n dmax = ax.c2l(di) + vpadplus(i2);\n } else {\n vmin = di - vpadminus(i2);\n vmax = di + vpadplus(i2);\n if (isLog && vmin < vmax / 10) vmin = vmax / 10;\n dmin = ax.c2l(vmin);\n dmax = ax.c2l(vmax);\n }\n if (tozero) {\n dmin = Math.min(0, dmin);\n dmax = Math.max(0, dmax);\n }\n if (goodNumber(dmin)) {\n collapseMinArray(minArray, dmin, ppadiminus, collapseOpts);\n }\n if (goodNumber(dmax)) {\n collapseMaxArray(maxArray, dmax, ppadiplus, collapseOpts);\n }\n }\n var iMax = Math.min(6, len);\n for (i = 0; i < iMax; i++) addItem(i);\n for (i = len - 1; i >= iMax; i--) addItem(i);\n return {\n min: minArray,\n max: maxArray,\n opts\n };\n }\n function collapseMinArray(array, newVal, newPad, opts) {\n collapseArray(array, newVal, newPad, opts, lessOrEqual);\n }\n function collapseMaxArray(array, newVal, newPad, opts) {\n collapseArray(array, newVal, newPad, opts, greaterOrEqual);\n }\n function collapseArray(array, newVal, newPad, opts, atLeastAsExtreme) {\n var tozero = opts.tozero;\n var extrapad = opts.extrapad;\n var includeThis = true;\n for (var j = 0; j < array.length && includeThis; j++) {\n var v = array[j];\n if (atLeastAsExtreme(v.val, newVal) && v.pad >= newPad && (v.extrapad || !extrapad)) {\n includeThis = false;\n break;\n } else if (atLeastAsExtreme(newVal, v.val) && v.pad <= newPad && (extrapad || !v.extrapad)) {\n array.splice(j, 1);\n j--;\n }\n }\n if (includeThis) {\n var clipAtZero = tozero && newVal === 0;\n array.push({\n val: newVal,\n pad: clipAtZero ? 0 : newPad,\n extrapad: clipAtZero ? false : extrapad\n });\n }\n }\n function goodNumber(v) {\n return isNumeric(v) && Math.abs(v) < FP_SAFE;\n }\n function lessOrEqual(v0, v1) {\n return v0 <= v1;\n }\n function greaterOrEqual(v0, v1) {\n return v0 >= v1;\n }\n function applyAutorangeMinOptions(v, ax) {\n var autorangeoptions = ax.autorangeoptions;\n if (autorangeoptions && autorangeoptions.minallowed !== void 0 && hasValidMinAndMax(ax, autorangeoptions.minallowed, autorangeoptions.maxallowed)) {\n return autorangeoptions.minallowed;\n }\n if (autorangeoptions && autorangeoptions.clipmin !== void 0 && hasValidMinAndMax(ax, autorangeoptions.clipmin, autorangeoptions.clipmax)) {\n return Math.max(v, ax.d2l(autorangeoptions.clipmin));\n }\n return v;\n }\n function applyAutorangeMaxOptions(v, ax) {\n var autorangeoptions = ax.autorangeoptions;\n if (autorangeoptions && autorangeoptions.maxallowed !== void 0 && hasValidMinAndMax(ax, autorangeoptions.minallowed, autorangeoptions.maxallowed)) {\n return autorangeoptions.maxallowed;\n }\n if (autorangeoptions && autorangeoptions.clipmax !== void 0 && hasValidMinAndMax(ax, autorangeoptions.clipmin, autorangeoptions.clipmax)) {\n return Math.min(v, ax.d2l(autorangeoptions.clipmax));\n }\n return v;\n }\n function hasValidMinAndMax(ax, min, max) {\n if (min !== void 0 && max !== void 0) {\n min = ax.d2l(min);\n max = ax.d2l(max);\n return min < max;\n }\n return true;\n }\n function applyAutorangeOptions(range, ax) {\n if (!ax || !ax.autorangeoptions) return range;\n var min = range[0];\n var max = range[1];\n var include = ax.autorangeoptions.include;\n if (include !== void 0) {\n var lMin = ax.d2l(min);\n var lMax = ax.d2l(max);\n if (!Lib.isArrayOrTypedArray(include)) include = [include];\n for (var i = 0; i < include.length; i++) {\n var v = ax.d2l(include[i]);\n if (lMin >= v) {\n lMin = v;\n min = v;\n }\n if (lMax <= v) {\n lMax = v;\n max = v;\n }\n }\n }\n min = applyAutorangeMinOptions(min, ax);\n max = applyAutorangeMaxOptions(max, ax);\n return [min, max];\n }\n }\n });\n\n // src/plots/cartesian/axes.js\n var require_axes = __commonJS({\n \"src/plots/cartesian/axes.js\"(exports, module) {\n \"use strict\";\n var d3 = require_d3();\n var isNumeric = require_fast_isnumeric();\n var Plots = require_plots();\n var Registry = require_registry();\n var Lib = require_lib();\n var strTranslate = Lib.strTranslate;\n var svgTextUtils = require_svg_text_utils();\n var Titles = require_titles();\n var Color = require_color();\n var Drawing = require_drawing();\n var axAttrs = require_layout_attributes4();\n var cleanTicks = require_clean_ticks();\n var constants = require_numerical();\n var ONEMAXYEAR = constants.ONEMAXYEAR;\n var ONEAVGYEAR = constants.ONEAVGYEAR;\n var ONEMINYEAR = constants.ONEMINYEAR;\n var ONEMAXQUARTER = constants.ONEMAXQUARTER;\n var ONEAVGQUARTER = constants.ONEAVGQUARTER;\n var ONEMINQUARTER = constants.ONEMINQUARTER;\n var ONEMAXMONTH = constants.ONEMAXMONTH;\n var ONEAVGMONTH = constants.ONEAVGMONTH;\n var ONEMINMONTH = constants.ONEMINMONTH;\n var ONEWEEK = constants.ONEWEEK;\n var ONEDAY = constants.ONEDAY;\n var HALFDAY = ONEDAY / 2;\n var ONEHOUR = constants.ONEHOUR;\n var ONEMIN = constants.ONEMIN;\n var ONESEC = constants.ONESEC;\n var ONEMILLI = constants.ONEMILLI;\n var ONEMICROSEC = constants.ONEMICROSEC;\n var MINUS_SIGN = constants.MINUS_SIGN;\n var BADNUM = constants.BADNUM;\n var ZERO_PATH = { K: \"zeroline\" };\n var GRID_PATH = { K: \"gridline\", L: \"path\" };\n var MINORGRID_PATH = { K: \"minor-gridline\", L: \"path\" };\n var TICK_PATH = { K: \"tick\", L: \"path\" };\n var TICK_TEXT = { K: \"tick\", L: \"text\" };\n var MARGIN_MAPPING = {\n width: [\"x\", \"r\", \"l\", \"xl\", \"xr\"],\n height: [\"y\", \"t\", \"b\", \"yt\", \"yb\"],\n right: [\"r\", \"xr\"],\n left: [\"l\", \"xl\"],\n top: [\"t\", \"yt\"],\n bottom: [\"b\", \"yb\"]\n };\n var alignmentConstants = require_alignment();\n var MID_SHIFT = alignmentConstants.MID_SHIFT;\n var CAP_SHIFT = alignmentConstants.CAP_SHIFT;\n var LINE_SPACING = alignmentConstants.LINE_SPACING;\n var OPPOSITE_SIDE = alignmentConstants.OPPOSITE_SIDE;\n var TEXTPAD = 3;\n var axes = module.exports = {};\n axes.setConvert = require_set_convert();\n var autoType = require_axis_autotype();\n var axisIds = require_axis_ids();\n var idSort = axisIds.idSort;\n var isLinked = axisIds.isLinked;\n axes.id2name = axisIds.id2name;\n axes.name2id = axisIds.name2id;\n axes.cleanId = axisIds.cleanId;\n axes.list = axisIds.list;\n axes.listIds = axisIds.listIds;\n axes.getFromId = axisIds.getFromId;\n axes.getFromTrace = axisIds.getFromTrace;\n var autorange = require_autorange();\n axes.getAutoRange = autorange.getAutoRange;\n axes.findExtremes = autorange.findExtremes;\n var epsilon = 1e-4;\n function expandRange(range) {\n var delta = (range[1] - range[0]) * epsilon;\n return [\n range[0] - delta,\n range[1] + delta\n ];\n }\n axes.coerceRef = function(containerIn, containerOut, gd, attr, dflt, extraOption) {\n var axLetter = attr.charAt(attr.length - 1);\n var axlist = gd._fullLayout._subplots[axLetter + \"axis\"];\n var refAttr = attr + \"ref\";\n var attrDef = {};\n if (!dflt) dflt = axlist[0] || (typeof extraOption === \"string\" ? extraOption : extraOption[0]);\n if (!extraOption) extraOption = dflt;\n axlist = axlist.concat(axlist.map(function(x) {\n return x + \" domain\";\n }));\n attrDef[refAttr] = {\n valType: \"enumerated\",\n values: axlist.concat(extraOption ? typeof extraOption === \"string\" ? [extraOption] : extraOption : []),\n dflt\n };\n return Lib.coerce(containerIn, containerOut, attrDef, refAttr);\n };\n axes.getRefType = function(ar) {\n if (ar === void 0) {\n return ar;\n }\n if (ar === \"paper\") {\n return \"paper\";\n }\n if (ar === \"pixel\") {\n return \"pixel\";\n }\n if (/( domain)$/.test(ar)) {\n return \"domain\";\n } else {\n return \"range\";\n }\n };\n axes.coercePosition = function(containerOut, gd, coerce, axRef, attr, dflt) {\n var cleanPos, pos;\n var axRefType = axes.getRefType(axRef);\n if (axRefType !== \"range\") {\n cleanPos = Lib.ensureNumber;\n pos = coerce(attr, dflt);\n } else {\n var ax = axes.getFromId(gd, axRef);\n dflt = ax.fraction2r(dflt);\n pos = coerce(attr, dflt);\n cleanPos = ax.cleanPos;\n }\n containerOut[attr] = cleanPos(pos);\n };\n axes.cleanPosition = function(pos, gd, axRef) {\n var cleanPos = axRef === \"paper\" || axRef === \"pixel\" ? Lib.ensureNumber : axes.getFromId(gd, axRef).cleanPos;\n return cleanPos(pos);\n };\n axes.redrawComponents = function(gd, axIds) {\n axIds = axIds ? axIds : axes.listIds(gd);\n var fullLayout = gd._fullLayout;\n function _redrawOneComp(moduleName, methodName, stashName, shortCircuit) {\n var method = Registry.getComponentMethod(moduleName, methodName);\n var stash = {};\n for (var i = 0; i < axIds.length; i++) {\n var ax = fullLayout[axes.id2name(axIds[i])];\n var indices = ax[stashName];\n for (var j = 0; j < indices.length; j++) {\n var ind = indices[j];\n if (!stash[ind]) {\n method(gd, ind);\n stash[ind] = 1;\n if (shortCircuit) return;\n }\n }\n }\n }\n _redrawOneComp(\"annotations\", \"drawOne\", \"_annIndices\");\n _redrawOneComp(\"shapes\", \"drawOne\", \"_shapeIndices\");\n _redrawOneComp(\"images\", \"draw\", \"_imgIndices\", true);\n _redrawOneComp(\"selections\", \"drawOne\", \"_selectionIndices\");\n };\n var getDataConversions = axes.getDataConversions = function(gd, trace, target, targetArray) {\n var ax;\n var d2cTarget = target === \"x\" || target === \"y\" || target === \"z\" ? target : targetArray;\n if (Lib.isArrayOrTypedArray(d2cTarget)) {\n ax = {\n type: autoType(targetArray, void 0, {\n autotypenumbers: gd._fullLayout.autotypenumbers\n }),\n _categories: []\n };\n axes.setConvert(ax);\n if (ax.type === \"category\") {\n for (var i = 0; i < targetArray.length; i++) {\n ax.d2c(targetArray[i]);\n }\n }\n } else {\n ax = axes.getFromTrace(gd, trace, d2cTarget);\n }\n if (ax) return { d2c: ax.d2c, c2d: ax.c2d };\n if (d2cTarget === \"ids\") return { d2c: toString, c2d: toString };\n return { d2c: toNum, c2d: toNum };\n };\n function toNum(v) {\n return +v;\n }\n function toString(v) {\n return String(v);\n }\n axes.getDataToCoordFunc = function(gd, trace, target, targetArray) {\n return getDataConversions(gd, trace, target, targetArray).d2c;\n };\n axes.counterLetter = function(id) {\n var axLetter = id.charAt(0);\n if (axLetter === \"x\") return \"y\";\n if (axLetter === \"y\") return \"x\";\n };\n axes.minDtick = function(ax, newDiff, newFirst, allow) {\n if ([\"log\", \"category\", \"multicategory\"].indexOf(ax.type) !== -1 || !allow) {\n ax._minDtick = 0;\n } else if (ax._minDtick === void 0) {\n ax._minDtick = newDiff;\n ax._forceTick0 = newFirst;\n } else if (ax._minDtick) {\n if ((ax._minDtick / newDiff + 1e-6) % 1 < 2e-6 && // existing minDtick is an integer multiple of newDiff\n // (within rounding err)\n // and forceTick0 can be shifted to newFirst\n ((newFirst - ax._forceTick0) / newDiff % 1 + 1.000001) % 1 < 2e-6) {\n ax._minDtick = newDiff;\n ax._forceTick0 = newFirst;\n } else if ((newDiff / ax._minDtick + 1e-6) % 1 > 2e-6 || // if the converse is true (newDiff is a multiple of minDtick and\n // newFirst can be shifted to forceTick0) then do nothing - same\n // forcing stands. Otherwise, cancel forced minimum\n ((newFirst - ax._forceTick0) / ax._minDtick % 1 + 1.000001) % 1 > 2e-6) {\n ax._minDtick = 0;\n }\n }\n };\n axes.saveRangeInitial = function(gd, overwrite) {\n var axList = axes.list(gd, \"\", true);\n var hasOneAxisChanged = false;\n for (var i = 0; i < axList.length; i++) {\n var ax = axList[i];\n var isNew = ax._rangeInitial0 === void 0 && ax._rangeInitial1 === void 0;\n var hasChanged = isNew || (ax.range[0] !== ax._rangeInitial0 || ax.range[1] !== ax._rangeInitial1);\n var autorange2 = ax.autorange;\n if (isNew && autorange2 !== true || overwrite && hasChanged) {\n ax._rangeInitial0 = autorange2 === \"min\" || autorange2 === \"max reversed\" ? void 0 : ax.range[0];\n ax._rangeInitial1 = autorange2 === \"max\" || autorange2 === \"min reversed\" ? void 0 : ax.range[1];\n ax._autorangeInitial = autorange2;\n hasOneAxisChanged = true;\n }\n }\n return hasOneAxisChanged;\n };\n axes.saveShowSpikeInitial = function(gd, overwrite) {\n var axList = axes.list(gd, \"\", true);\n var hasOneAxisChanged = false;\n var allSpikesEnabled = \"on\";\n for (var i = 0; i < axList.length; i++) {\n var ax = axList[i];\n var isNew = ax._showSpikeInitial === void 0;\n var hasChanged = isNew || !(ax.showspikes === ax._showspikes);\n if (isNew || overwrite && hasChanged) {\n ax._showSpikeInitial = ax.showspikes;\n hasOneAxisChanged = true;\n }\n if (allSpikesEnabled === \"on\" && !ax.showspikes) {\n allSpikesEnabled = \"off\";\n }\n }\n gd._fullLayout._cartesianSpikesEnabled = allSpikesEnabled;\n return hasOneAxisChanged;\n };\n axes.autoBin = function(data, ax, nbins, is2d, calendar, size) {\n var dataMin = Lib.aggNums(Math.min, null, data);\n var dataMax = Lib.aggNums(Math.max, null, data);\n if (ax.type === \"category\" || ax.type === \"multicategory\") {\n return {\n start: dataMin - 0.5,\n end: dataMax + 0.5,\n size: Math.max(1, Math.round(size) || 1),\n _dataSpan: dataMax - dataMin\n };\n }\n if (!calendar) calendar = ax.calendar;\n var dummyAx;\n if (ax.type === \"log\") {\n dummyAx = {\n type: \"linear\",\n range: [dataMin, dataMax]\n };\n } else {\n dummyAx = {\n type: ax.type,\n range: Lib.simpleMap([dataMin, dataMax], ax.c2r, 0, calendar),\n calendar\n };\n }\n axes.setConvert(dummyAx);\n size = size && cleanTicks.dtick(size, dummyAx.type);\n if (size) {\n dummyAx.dtick = size;\n dummyAx.tick0 = cleanTicks.tick0(void 0, dummyAx.type, calendar);\n } else {\n var size0;\n if (nbins) size0 = (dataMax - dataMin) / nbins;\n else {\n var distinctData = Lib.distinctVals(data);\n var msexp = Math.pow(10, Math.floor(\n Math.log(distinctData.minDiff) / Math.LN10\n ));\n var minSize = msexp * Lib.roundUp(\n distinctData.minDiff / msexp,\n [0.9, 1.9, 4.9, 9.9],\n true\n );\n size0 = Math.max(minSize, 2 * Lib.stdev(data) / Math.pow(data.length, is2d ? 0.25 : 0.4));\n if (!isNumeric(size0)) size0 = 1;\n }\n axes.autoTicks(dummyAx, size0);\n }\n var finalSize = dummyAx.dtick;\n var binStart = axes.tickIncrement(\n axes.tickFirst(dummyAx),\n finalSize,\n \"reverse\",\n calendar\n );\n var binEnd, bincount;\n if (typeof finalSize === \"number\") {\n binStart = autoShiftNumericBins(binStart, data, dummyAx, dataMin, dataMax);\n bincount = 1 + Math.floor((dataMax - binStart) / finalSize);\n binEnd = binStart + bincount * finalSize;\n } else {\n if (dummyAx.dtick.charAt(0) === \"M\") {\n binStart = autoShiftMonthBins(binStart, data, finalSize, dataMin, calendar);\n }\n binEnd = binStart;\n bincount = 0;\n while (binEnd <= dataMax) {\n binEnd = axes.tickIncrement(binEnd, finalSize, false, calendar);\n bincount++;\n }\n }\n return {\n start: ax.c2r(binStart, 0, calendar),\n end: ax.c2r(binEnd, 0, calendar),\n size: finalSize,\n _dataSpan: dataMax - dataMin\n };\n };\n function autoShiftNumericBins(binStart, data, ax, dataMin, dataMax) {\n var edgecount = 0;\n var midcount = 0;\n var intcount = 0;\n var blankCount = 0;\n function nearEdge(v) {\n return (1 + (v - binStart) * 100 / ax.dtick) % 100 < 2;\n }\n for (var i = 0; i < data.length; i++) {\n if (data[i] % 1 === 0) intcount++;\n else if (!isNumeric(data[i])) blankCount++;\n if (nearEdge(data[i])) edgecount++;\n if (nearEdge(data[i] + ax.dtick / 2)) midcount++;\n }\n var dataCount = data.length - blankCount;\n if (intcount === dataCount && ax.type !== \"date\") {\n if (ax.dtick < 1) {\n binStart = dataMin - 0.5 * ax.dtick;\n } else {\n binStart -= 0.5;\n if (binStart + ax.dtick < dataMin) binStart += ax.dtick;\n }\n } else if (midcount < dataCount * 0.1) {\n if (edgecount > dataCount * 0.3 || nearEdge(dataMin) || nearEdge(dataMax)) {\n var binshift = ax.dtick / 2;\n binStart += binStart + binshift < dataMin ? binshift : -binshift;\n }\n }\n return binStart;\n }\n function autoShiftMonthBins(binStart, data, dtick, dataMin, calendar) {\n var stats = Lib.findExactDates(data, calendar);\n var threshold = 0.8;\n if (stats.exactDays > threshold) {\n var numMonths = Number(dtick.substr(1));\n if (stats.exactYears > threshold && numMonths % 12 === 0) {\n binStart = axes.tickIncrement(binStart, \"M6\", \"reverse\") + ONEDAY * 1.5;\n } else if (stats.exactMonths > threshold) {\n binStart = axes.tickIncrement(binStart, \"M1\", \"reverse\") + ONEDAY * 15.5;\n } else {\n binStart -= HALFDAY;\n }\n var nextBinStart = axes.tickIncrement(binStart, dtick);\n if (nextBinStart <= dataMin) return nextBinStart;\n }\n return binStart;\n }\n axes.prepMinorTicks = function(mockAx, ax, opts) {\n if (!ax.minor.dtick) {\n delete mockAx.dtick;\n var hasMajor = ax.dtick && isNumeric(ax._tmin);\n var mockMinorRange;\n if (hasMajor) {\n var tick2 = axes.tickIncrement(ax._tmin, ax.dtick, true);\n mockMinorRange = [ax._tmin, tick2 * 0.99 + ax._tmin * 0.01];\n } else {\n var rl = Lib.simpleMap(ax.range, ax.r2l);\n mockMinorRange = [rl[0], 0.8 * rl[0] + 0.2 * rl[1]];\n }\n mockAx.range = Lib.simpleMap(mockMinorRange, ax.l2r);\n mockAx._isMinor = true;\n axes.prepTicks(mockAx, opts);\n if (hasMajor) {\n var numericMajor = isNumeric(ax.dtick);\n var numericMinor = isNumeric(mockAx.dtick);\n var majorNum = numericMajor ? ax.dtick : +ax.dtick.substring(1);\n var minorNum = numericMinor ? mockAx.dtick : +mockAx.dtick.substring(1);\n if (numericMajor && numericMinor) {\n if (!isMultiple(majorNum, minorNum)) {\n if (majorNum === 2 * ONEWEEK && minorNum === 3 * ONEDAY) {\n mockAx.dtick = ONEWEEK;\n } else if (majorNum === ONEWEEK && !(ax._input.minor || {}).nticks) {\n mockAx.dtick = ONEDAY;\n } else if (isClose(majorNum / minorNum, 2.5)) {\n mockAx.dtick = majorNum / 2;\n } else {\n mockAx.dtick = majorNum;\n }\n } else if (majorNum === 2 * ONEWEEK && minorNum === 2 * ONEDAY) {\n mockAx.dtick = ONEWEEK;\n }\n } else if (String(ax.dtick).charAt(0) === \"M\") {\n if (numericMinor) {\n mockAx.dtick = \"M1\";\n } else {\n if (!isMultiple(majorNum, minorNum)) {\n mockAx.dtick = ax.dtick;\n } else if (majorNum >= 12 && minorNum === 2) {\n mockAx.dtick = \"M3\";\n }\n }\n } else if (String(mockAx.dtick).charAt(0) === \"L\") {\n if (String(ax.dtick).charAt(0) === \"L\") {\n if (!isMultiple(majorNum, minorNum)) {\n mockAx.dtick = isClose(majorNum / minorNum, 2.5) ? ax.dtick / 2 : ax.dtick;\n }\n } else {\n mockAx.dtick = \"D1\";\n }\n } else if (mockAx.dtick === \"D2\" && +ax.dtick > 1) {\n mockAx.dtick = 1;\n }\n }\n mockAx.range = ax.range;\n }\n if (ax.minor._tick0Init === void 0) {\n mockAx.tick0 = ax.tick0;\n }\n };\n function isMultiple(bigger, smaller) {\n return Math.abs((bigger / smaller + 0.5) % 1 - 0.5) < 1e-3;\n }\n function isClose(a, b) {\n return Math.abs(a / b - 1) < 1e-3;\n }\n axes.prepTicks = function(ax, opts) {\n var rng = Lib.simpleMap(ax.range, ax.r2l, void 0, void 0, opts);\n if (ax.tickmode === \"auto\" || !ax.dtick) {\n var nt = ax.nticks;\n var minPx;\n if (!nt) {\n if (ax.type === \"category\" || ax.type === \"multicategory\") {\n minPx = ax.tickfont ? Lib.bigFont(ax.tickfont.size || 12) : 15;\n nt = ax._length / minPx;\n } else {\n minPx = ax._id.charAt(0) === \"y\" ? 40 : 80;\n nt = Lib.constrain(ax._length / minPx, 4, 9) + 1;\n }\n if (ax._name === \"radialaxis\") nt *= 2;\n }\n if (!(ax.minor && ax.minor.tickmode !== \"array\")) {\n if (ax.tickmode === \"array\") nt *= 100;\n }\n ax._roughDTick = Math.abs(rng[1] - rng[0]) / nt;\n axes.autoTicks(ax, ax._roughDTick);\n if (ax._minDtick > 0 && ax.dtick < ax._minDtick * 2) {\n ax.dtick = ax._minDtick;\n ax.tick0 = ax.l2r(ax._forceTick0);\n }\n }\n if (ax.ticklabelmode === \"period\") {\n adjustPeriodDelta(ax);\n }\n if (!ax.tick0) {\n ax.tick0 = ax.type === \"date\" ? \"2000-01-01\" : 0;\n }\n if (ax.type === \"date\" && ax.dtick < 0.1) ax.dtick = 0.1;\n autoTickRound(ax);\n };\n function nMonths(dtick) {\n return +dtick.substring(1);\n }\n function adjustPeriodDelta(ax) {\n var definedDelta;\n function mDate() {\n return !(isNumeric(ax.dtick) || ax.dtick.charAt(0) !== \"M\");\n }\n var isMDate = mDate();\n var tickformat = axes.getTickFormat(ax);\n if (tickformat) {\n var noDtick = ax._dtickInit !== ax.dtick;\n if (!/%[fLQsSMX]/.test(tickformat)) {\n if (/%[HI]/.test(tickformat)) {\n definedDelta = ONEHOUR;\n if (noDtick && !isMDate && ax.dtick < ONEHOUR) ax.dtick = ONEHOUR;\n } else if (/%p/.test(tickformat)) {\n definedDelta = HALFDAY;\n if (noDtick && !isMDate && ax.dtick < HALFDAY) ax.dtick = HALFDAY;\n } else if (/%[Aadejuwx]/.test(tickformat)) {\n definedDelta = ONEDAY;\n if (noDtick && !isMDate && ax.dtick < ONEDAY) ax.dtick = ONEDAY;\n } else if (/%[UVW]/.test(tickformat)) {\n definedDelta = ONEWEEK;\n if (noDtick && !isMDate && ax.dtick < ONEWEEK) ax.dtick = ONEWEEK;\n } else if (/%[Bbm]/.test(tickformat)) {\n definedDelta = ONEAVGMONTH;\n if (noDtick && (isMDate ? nMonths(ax.dtick) < 1 : ax.dtick < ONEMINMONTH)) ax.dtick = \"M1\";\n } else if (/%[q]/.test(tickformat)) {\n definedDelta = ONEAVGQUARTER;\n if (noDtick && (isMDate ? nMonths(ax.dtick) < 3 : ax.dtick < ONEMINQUARTER)) ax.dtick = \"M3\";\n } else if (/%[Yy]/.test(tickformat)) {\n definedDelta = ONEAVGYEAR;\n if (noDtick && (isMDate ? nMonths(ax.dtick) < 12 : ax.dtick < ONEMINYEAR)) ax.dtick = \"M12\";\n }\n }\n }\n isMDate = mDate();\n if (isMDate && ax.tick0 === ax._dowTick0) {\n ax.tick0 = ax._rawTick0;\n }\n ax._definedDelta = definedDelta;\n }\n function positionPeriodTicks(tickVals, ax, definedDelta) {\n for (var i = 0; i < tickVals.length; i++) {\n var v = tickVals[i].value;\n var a = i;\n var b = i + 1;\n if (i < tickVals.length - 1) {\n a = i;\n b = i + 1;\n } else if (i > 0) {\n a = i - 1;\n b = i;\n } else {\n a = i;\n b = i;\n }\n var A = tickVals[a].value;\n var B = tickVals[b].value;\n var actualDelta = Math.abs(B - A);\n var delta = definedDelta || actualDelta;\n var periodLength = 0;\n if (delta >= ONEMINYEAR) {\n if (actualDelta >= ONEMINYEAR && actualDelta <= ONEMAXYEAR) {\n periodLength = actualDelta;\n } else {\n periodLength = ONEAVGYEAR;\n }\n } else if (definedDelta === ONEAVGQUARTER && delta >= ONEMINQUARTER) {\n if (actualDelta >= ONEMINQUARTER && actualDelta <= ONEMAXQUARTER) {\n periodLength = actualDelta;\n } else {\n periodLength = ONEAVGQUARTER;\n }\n } else if (delta >= ONEMINMONTH) {\n if (actualDelta >= ONEMINMONTH && actualDelta <= ONEMAXMONTH) {\n periodLength = actualDelta;\n } else {\n periodLength = ONEAVGMONTH;\n }\n } else if (definedDelta === ONEWEEK && delta >= ONEWEEK) {\n periodLength = ONEWEEK;\n } else if (delta >= ONEDAY) {\n periodLength = ONEDAY;\n } else if (definedDelta === HALFDAY && delta >= HALFDAY) {\n periodLength = HALFDAY;\n } else if (definedDelta === ONEHOUR && delta >= ONEHOUR) {\n periodLength = ONEHOUR;\n }\n var inBetween;\n if (periodLength >= actualDelta) {\n periodLength = actualDelta;\n inBetween = true;\n }\n var endPeriod = v + periodLength;\n if (ax.rangebreaks && periodLength > 0) {\n var nAll = 84;\n var n = 0;\n for (var c = 0; c < nAll; c++) {\n var r = (c + 0.5) / nAll;\n if (ax.maskBreaks(v * (1 - r) + r * endPeriod) !== BADNUM) n++;\n }\n periodLength *= n / nAll;\n if (!periodLength) {\n tickVals[i].drop = true;\n }\n if (inBetween && actualDelta > ONEWEEK) periodLength = actualDelta;\n }\n if (periodLength > 0 || // not instant\n i === 0) {\n tickVals[i].periodX = v + periodLength / 2;\n }\n }\n }\n axes.calcTicks = function calcTicks(ax, opts) {\n var type = ax.type;\n var calendar = ax.calendar;\n var ticklabelstep = ax.ticklabelstep;\n var isPeriod = ax.ticklabelmode === \"period\";\n var isReversed = ax.range[0] > ax.range[1];\n var ticklabelIndex = !ax.ticklabelindex || Lib.isArrayOrTypedArray(ax.ticklabelindex) ? ax.ticklabelindex : [ax.ticklabelindex];\n var rng = Lib.simpleMap(ax.range, ax.r2l, void 0, void 0, opts);\n var axrev = rng[1] < rng[0];\n var minRange = Math.min(rng[0], rng[1]);\n var maxRange = Math.max(rng[0], rng[1]);\n var maxTicks = Math.max(1e3, ax._length || 0);\n var ticksOut = [];\n var minorTicks = [];\n var tickVals = [];\n var minorTickVals = [];\n var allTicklabelVals = [];\n var hasMinor = ax.minor && (ax.minor.ticks || ax.minor.showgrid);\n for (var major = 1; major >= (hasMinor ? 0 : 1); major--) {\n var isMinor = !major;\n if (major) {\n ax._dtickInit = ax.dtick;\n ax._tick0Init = ax.tick0;\n } else {\n ax.minor._dtickInit = ax.minor.dtick;\n ax.minor._tick0Init = ax.minor.tick0;\n }\n var mockAx = major ? ax : Lib.extendFlat({}, ax, ax.minor);\n if (isMinor) {\n axes.prepMinorTicks(mockAx, ax, opts);\n } else {\n axes.prepTicks(mockAx, opts);\n }\n if (mockAx.tickmode === \"array\") {\n if (major) {\n tickVals = [];\n ticksOut = arrayTicks(ax, !isMinor);\n } else {\n minorTickVals = [];\n minorTicks = arrayTicks(ax, !isMinor);\n }\n continue;\n }\n if (mockAx.tickmode === \"sync\") {\n tickVals = [];\n ticksOut = syncTicks(ax);\n continue;\n }\n var exRng = expandRange(rng);\n var startTick = exRng[0];\n var endTick = exRng[1];\n var numDtick = isNumeric(mockAx.dtick);\n var isDLog = type === \"log\" && !(numDtick || mockAx.dtick.charAt(0) === \"L\");\n var x0 = axes.tickFirst(mockAx, opts);\n if (major) {\n ax._tmin = x0;\n if (x0 < startTick !== axrev) break;\n if (type === \"category\" || type === \"multicategory\") {\n endTick = axrev ? Math.max(-0.5, endTick) : Math.min(ax._categories.length - 0.5, endTick);\n }\n }\n var prevX = null;\n var x = x0;\n var majorId;\n if (major) {\n var _dTick;\n if (numDtick) {\n _dTick = ax.dtick;\n } else {\n if (type === \"date\") {\n if (typeof ax.dtick === \"string\" && ax.dtick.charAt(0) === \"M\") {\n _dTick = ONEAVGMONTH * ax.dtick.substring(1);\n }\n } else {\n _dTick = ax._roughDTick;\n }\n }\n majorId = Math.round((ax.r2l(x) - ax.r2l(ax.tick0)) / _dTick) - 1;\n }\n var dtick = mockAx.dtick;\n if (mockAx.rangebreaks && mockAx._tick0Init !== mockAx.tick0) {\n x = moveOutsideBreak(x, ax);\n if (!axrev) {\n x = axes.tickIncrement(x, dtick, !axrev, calendar);\n }\n }\n if (major && isPeriod) {\n x = axes.tickIncrement(x, dtick, !axrev, calendar);\n majorId--;\n }\n for (; axrev ? x >= endTick : x <= endTick; x = axes.tickIncrement(\n x,\n dtick,\n axrev,\n calendar\n )) {\n if (major) majorId++;\n if (mockAx.rangebreaks) {\n if (!axrev) {\n if (x < startTick) continue;\n if (mockAx.maskBreaks(x) === BADNUM && moveOutsideBreak(x, mockAx) >= maxRange) break;\n }\n }\n if (tickVals.length > maxTicks || x === prevX) break;\n prevX = x;\n var obj = { value: x };\n if (major) {\n if (isDLog && x !== (x | 0)) {\n obj.simpleLabel = true;\n }\n if (ticklabelstep > 1 && majorId % ticklabelstep) {\n obj.skipLabel = true;\n }\n tickVals.push(obj);\n } else {\n obj.minor = true;\n minorTickVals.push(obj);\n }\n }\n }\n if (!minorTickVals || minorTickVals.length < 2) {\n ticklabelIndex = false;\n } else {\n var diff = (minorTickVals[1].value - minorTickVals[0].value) * (isReversed ? -1 : 1);\n if (!periodCompatibleWithTickformat(diff, ax.tickformat)) {\n ticklabelIndex = false;\n }\n }\n if (!ticklabelIndex) {\n allTicklabelVals = tickVals;\n } else {\n var allTickVals = tickVals.concat(minorTickVals);\n if (isPeriod && tickVals.length) {\n allTickVals = allTickVals.slice(1);\n }\n allTickVals = allTickVals.sort(function(a, b) {\n return a.value - b.value;\n }).filter(function(tick, index, self2) {\n return index === 0 || tick.value !== self2[index - 1].value;\n });\n var majorTickIndices = allTickVals.map(function(item, index) {\n return item.minor === void 0 && !item.skipLabel ? index : null;\n }).filter(function(index) {\n return index !== null;\n });\n majorTickIndices.forEach(function(majorIdx) {\n ticklabelIndex.map(function(nextLabelIdx) {\n var minorIdx = majorIdx + nextLabelIdx;\n if (minorIdx >= 0 && minorIdx < allTickVals.length) {\n Lib.pushUnique(allTicklabelVals, allTickVals[minorIdx]);\n }\n });\n });\n }\n if (hasMinor) {\n var canOverlap = ax.minor.ticks === \"inside\" && ax.ticks === \"outside\" || ax.minor.ticks === \"outside\" && ax.ticks === \"inside\";\n if (!canOverlap) {\n var majorValues = tickVals.map(function(d) {\n return d.value;\n });\n var list = [];\n for (var k = 0; k < minorTickVals.length; k++) {\n var T = minorTickVals[k];\n var v = T.value;\n if (majorValues.indexOf(v) !== -1) {\n continue;\n }\n var found = false;\n for (var q = 0; !found && q < tickVals.length; q++) {\n if (\n // add 10e6 to eliminate problematic digits\n 1e7 + tickVals[q].value === 1e7 + v\n ) {\n found = true;\n }\n }\n if (!found) list.push(T);\n }\n minorTickVals = list;\n }\n }\n if (isPeriod) positionPeriodTicks(allTicklabelVals, ax, ax._definedDelta);\n var i;\n if (ax.rangebreaks) {\n var flip = ax._id.charAt(0) === \"y\";\n var fontSize = 1;\n if (ax.tickmode === \"auto\") {\n fontSize = ax.tickfont ? ax.tickfont.size : 12;\n }\n var prevL = NaN;\n for (i = tickVals.length - 1; i > -1; i--) {\n if (tickVals[i].drop) {\n tickVals.splice(i, 1);\n continue;\n }\n tickVals[i].value = moveOutsideBreak(tickVals[i].value, ax);\n var l = ax.c2p(tickVals[i].value);\n if (flip ? prevL > l - fontSize : prevL < l + fontSize) {\n tickVals.splice(axrev ? i + 1 : i, 1);\n } else {\n prevL = l;\n }\n }\n }\n if (isAngular(ax) && Math.abs(rng[1] - rng[0]) === 360) {\n tickVals.pop();\n }\n ax._tmax = (tickVals[tickVals.length - 1] || {}).value;\n ax._prevDateHead = \"\";\n ax._inCalcTicks = true;\n var lastVisibleHead;\n var hideLabel = function(tick) {\n tick.text = \"\";\n ax._prevDateHead = lastVisibleHead;\n };\n tickVals = tickVals.concat(minorTickVals);\n function setTickLabel(ax2, tickVal) {\n var text = axes.tickText(\n ax2,\n tickVal.value,\n false,\n // hover\n tickVal.simpleLabel\n // noSuffixPrefix\n );\n var p = tickVal.periodX;\n if (p !== void 0) {\n text.periodX = p;\n if (p > maxRange || p < minRange) {\n if (p > maxRange) text.periodX = maxRange;\n if (p < minRange) text.periodX = minRange;\n hideLabel(text);\n }\n }\n return text;\n }\n var t;\n for (i = 0; i < tickVals.length; i++) {\n var _minor = tickVals[i].minor;\n var _value = tickVals[i].value;\n if (_minor) {\n if (ticklabelIndex && allTicklabelVals.indexOf(tickVals[i]) !== -1) {\n t = setTickLabel(ax, tickVals[i]);\n } else {\n t = { x: _value };\n }\n t.minor = true;\n minorTicks.push(t);\n } else {\n lastVisibleHead = ax._prevDateHead;\n t = setTickLabel(ax, tickVals[i]);\n if (tickVals[i].skipLabel || ticklabelIndex && allTicklabelVals.indexOf(tickVals[i]) === -1) {\n hideLabel(t);\n }\n ticksOut.push(t);\n }\n }\n ticksOut = ticksOut.concat(minorTicks);\n ax._inCalcTicks = false;\n if (isPeriod && ticksOut.length) {\n ticksOut[0].noTick = true;\n }\n return ticksOut;\n };\n function filterRangeBreaks(ax, ticksOut) {\n if (ax.rangebreaks) {\n ticksOut = ticksOut.filter(function(d) {\n return ax.maskBreaks(d.x) !== BADNUM;\n });\n }\n return ticksOut;\n }\n function syncTicks(ax) {\n var baseAxis = ax._mainAxis;\n var ticksOut = [];\n if (baseAxis._vals) {\n for (var i = 0; i < baseAxis._vals.length; i++) {\n if (baseAxis._vals[i].noTick) {\n continue;\n }\n var pos = baseAxis.l2p(baseAxis._vals[i].x);\n var vali = ax.p2l(pos);\n var obj = axes.tickText(ax, vali);\n if (baseAxis._vals[i].minor) {\n obj.minor = true;\n obj.text = \"\";\n }\n ticksOut.push(obj);\n }\n }\n ticksOut = filterRangeBreaks(ax, ticksOut);\n return ticksOut;\n }\n function arrayTicks(ax, majorOnly) {\n var rng = Lib.simpleMap(ax.range, ax.r2l);\n var exRng = expandRange(rng);\n var tickMin = Math.min(exRng[0], exRng[1]);\n var tickMax = Math.max(exRng[0], exRng[1]);\n var tickVal2l = ax.type === \"category\" ? ax.d2l_noadd : ax.d2l;\n if (ax.type === \"log\" && String(ax.dtick).charAt(0) !== \"L\") {\n ax.dtick = \"L\" + Math.pow(10, Math.floor(Math.min(ax.range[0], ax.range[1])) - 1);\n }\n var ticksOut = [];\n for (var isMinor = 0; isMinor <= 1; isMinor++) {\n if (majorOnly !== void 0 && (majorOnly && isMinor || majorOnly === false && !isMinor)) continue;\n if (isMinor && !ax.minor) continue;\n var vals = !isMinor ? ax.tickvals : ax.minor.tickvals;\n var text = !isMinor ? ax.ticktext : [];\n if (!vals) continue;\n if (!Lib.isArrayOrTypedArray(text)) text = [];\n for (var i = 0; i < vals.length; i++) {\n var vali = tickVal2l(vals[i]);\n if (vali > tickMin && vali < tickMax) {\n var obj = axes.tickText(ax, vali, false, String(text[i]));\n if (isMinor) {\n obj.minor = true;\n obj.text = \"\";\n }\n ticksOut.push(obj);\n }\n }\n }\n ticksOut = filterRangeBreaks(ax, ticksOut);\n return ticksOut;\n }\n var roundBase10 = [2, 5, 10];\n var roundBase24 = [1, 2, 3, 6, 12];\n var roundBase60 = [1, 2, 5, 10, 15, 30];\n var roundDays = [1, 2, 3, 7, 14];\n var roundLog1 = [-0.046, 0, 0.301, 0.477, 0.602, 0.699, 0.778, 0.845, 0.903, 0.954, 1];\n var roundLog2 = [-0.301, 0, 0.301, 0.699, 1];\n var roundAngles = [15, 30, 45, 90, 180];\n function roundDTick(roughDTick, base, roundingSet) {\n return base * Lib.roundUp(roughDTick / base, roundingSet);\n }\n axes.autoTicks = function(ax, roughDTick, isMinor) {\n var base;\n function getBase(v) {\n return Math.pow(v, Math.floor(Math.log(roughDTick) / Math.LN10));\n }\n if (ax.type === \"date\") {\n ax.tick0 = Lib.dateTick0(ax.calendar, 0);\n var roughX2 = 2 * roughDTick;\n if (roughX2 > ONEAVGYEAR) {\n roughDTick /= ONEAVGYEAR;\n base = getBase(10);\n ax.dtick = \"M\" + 12 * roundDTick(roughDTick, base, roundBase10);\n } else if (roughX2 > ONEAVGMONTH) {\n roughDTick /= ONEAVGMONTH;\n ax.dtick = \"M\" + roundDTick(roughDTick, 1, roundBase24);\n } else if (roughX2 > ONEDAY) {\n ax.dtick = roundDTick(roughDTick, ONEDAY, ax._hasDayOfWeekBreaks ? [1, 2, 7, 14] : roundDays);\n if (!isMinor) {\n var tickformat = axes.getTickFormat(ax);\n var isPeriod = ax.ticklabelmode === \"period\";\n if (isPeriod) ax._rawTick0 = ax.tick0;\n if (/%[uVW]/.test(tickformat)) {\n ax.tick0 = Lib.dateTick0(ax.calendar, 2);\n } else {\n ax.tick0 = Lib.dateTick0(ax.calendar, 1);\n }\n if (isPeriod) ax._dowTick0 = ax.tick0;\n }\n } else if (roughX2 > ONEHOUR) {\n ax.dtick = roundDTick(roughDTick, ONEHOUR, roundBase24);\n } else if (roughX2 > ONEMIN) {\n ax.dtick = roundDTick(roughDTick, ONEMIN, roundBase60);\n } else if (roughX2 > ONESEC) {\n ax.dtick = roundDTick(roughDTick, ONESEC, roundBase60);\n } else {\n base = getBase(10);\n ax.dtick = roundDTick(roughDTick, base, roundBase10);\n }\n } else if (ax.type === \"log\") {\n ax.tick0 = 0;\n var rng = Lib.simpleMap(ax.range, ax.r2l);\n if (ax._isMinor) {\n roughDTick *= 1.5;\n }\n if (roughDTick > 0.7) {\n ax.dtick = Math.ceil(roughDTick);\n } else if (Math.abs(rng[1] - rng[0]) < 1) {\n var nt = 1.5 * Math.abs((rng[1] - rng[0]) / roughDTick);\n roughDTick = Math.abs(Math.pow(10, rng[1]) - Math.pow(10, rng[0])) / nt;\n base = getBase(10);\n ax.dtick = \"L\" + roundDTick(roughDTick, base, roundBase10);\n } else {\n ax.dtick = roughDTick > 0.3 ? \"D2\" : \"D1\";\n }\n } else if (ax.type === \"category\" || ax.type === \"multicategory\") {\n ax.tick0 = 0;\n ax.dtick = Math.ceil(Math.max(roughDTick, 1));\n } else if (isAngular(ax)) {\n ax.tick0 = 0;\n base = 1;\n ax.dtick = roundDTick(roughDTick, base, roundAngles);\n } else {\n ax.tick0 = 0;\n base = getBase(10);\n ax.dtick = roundDTick(roughDTick, base, roundBase10);\n }\n if (ax.dtick === 0) ax.dtick = 1;\n if (!isNumeric(ax.dtick) && typeof ax.dtick !== \"string\") {\n var olddtick = ax.dtick;\n ax.dtick = 1;\n throw \"ax.dtick error: \" + String(olddtick);\n }\n };\n function autoTickRound(ax) {\n var dtick = ax.dtick;\n ax._tickexponent = 0;\n if (!isNumeric(dtick) && typeof dtick !== \"string\") {\n dtick = 1;\n }\n if (ax.type === \"category\" || ax.type === \"multicategory\") {\n ax._tickround = null;\n }\n if (ax.type === \"date\") {\n var tick0ms = ax.r2l(ax.tick0);\n var tick0str = ax.l2r(tick0ms).replace(/(^-|i)/g, \"\");\n var tick0len = tick0str.length;\n if (String(dtick).charAt(0) === \"M\") {\n if (tick0len > 10 || tick0str.substr(5) !== \"01-01\") ax._tickround = \"d\";\n else ax._tickround = +dtick.substr(1) % 12 === 0 ? \"y\" : \"m\";\n } else if (dtick >= ONEDAY && tick0len <= 10 || dtick >= ONEDAY * 15) ax._tickround = \"d\";\n else if (dtick >= ONEMIN && tick0len <= 16 || dtick >= ONEHOUR) ax._tickround = \"M\";\n else if (dtick >= ONESEC && tick0len <= 19 || dtick >= ONEMIN) ax._tickround = \"S\";\n else {\n var tick1len = ax.l2r(tick0ms + dtick).replace(/^-/, \"\").length;\n ax._tickround = Math.max(tick0len, tick1len) - 20;\n if (ax._tickround < 0) ax._tickround = 4;\n }\n } else if (isNumeric(dtick) || dtick.charAt(0) === \"L\") {\n var rng = ax.range.map(ax.r2d || Number);\n if (!isNumeric(dtick)) dtick = Number(dtick.substr(1));\n ax._tickround = 2 - Math.floor(Math.log(dtick) / Math.LN10 + 0.01);\n var maxend = Math.max(Math.abs(rng[0]), Math.abs(rng[1]));\n var rangeexp = Math.floor(Math.log(maxend) / Math.LN10 + 0.01);\n var minexponent = ax.minexponent === void 0 ? 3 : ax.minexponent;\n if (Math.abs(rangeexp) > minexponent) {\n if (isSIFormat(ax.exponentformat) && !beyondSI(rangeexp)) {\n ax._tickexponent = 3 * Math.round((rangeexp - 1) / 3);\n } else ax._tickexponent = rangeexp;\n }\n } else {\n ax._tickround = null;\n }\n }\n axes.tickIncrement = function(x, dtick, axrev, calendar) {\n var axSign = axrev ? -1 : 1;\n if (isNumeric(dtick)) return Lib.increment(x, axSign * dtick);\n var tType = dtick.charAt(0);\n var dtSigned = axSign * Number(dtick.substr(1));\n if (tType === \"M\") return Lib.incrementMonth(x, dtSigned, calendar);\n if (tType === \"L\") return Math.log(Math.pow(10, x) + dtSigned) / Math.LN10;\n if (tType === \"D\") {\n var tickset = dtick === \"D2\" ? roundLog2 : roundLog1;\n var x2 = x + axSign * 0.01;\n var frac = Lib.roundUp(Lib.mod(x2, 1), tickset, axrev);\n return Math.floor(x2) + Math.log(d3.round(Math.pow(10, frac), 1)) / Math.LN10;\n }\n throw \"unrecognized dtick \" + String(dtick);\n };\n axes.tickFirst = function(ax, opts) {\n var r2l = ax.r2l || Number;\n var rng = Lib.simpleMap(ax.range, r2l, void 0, void 0, opts);\n var axrev = rng[1] < rng[0];\n var sRound = axrev ? Math.floor : Math.ceil;\n var r0 = expandRange(rng)[0];\n var dtick = ax.dtick;\n var tick0 = r2l(ax.tick0);\n if (isNumeric(dtick)) {\n var tmin = sRound((r0 - tick0) / dtick) * dtick + tick0;\n if (ax.type === \"category\" || ax.type === \"multicategory\") {\n tmin = Lib.constrain(tmin, 0, ax._categories.length - 1);\n }\n return tmin;\n }\n var tType = dtick.charAt(0);\n var dtNum = Number(dtick.substr(1));\n if (tType === \"M\") {\n var cnt = 0;\n var t0 = tick0;\n var t1, mult, newDTick;\n while (cnt < 10) {\n t1 = axes.tickIncrement(t0, dtick, axrev, ax.calendar);\n if ((t1 - r0) * (t0 - r0) <= 0) {\n if (axrev) return Math.min(t0, t1);\n return Math.max(t0, t1);\n }\n mult = (r0 - (t0 + t1) / 2) / (t1 - t0);\n newDTick = tType + (Math.abs(Math.round(mult)) || 1) * dtNum;\n t0 = axes.tickIncrement(t0, newDTick, mult < 0 ? !axrev : axrev, ax.calendar);\n cnt++;\n }\n Lib.error(\"tickFirst did not converge\", ax);\n return t0;\n } else if (tType === \"L\") {\n return Math.log(sRound(\n (Math.pow(10, r0) - tick0) / dtNum\n ) * dtNum + tick0) / Math.LN10;\n } else if (tType === \"D\") {\n var tickset = dtick === \"D2\" ? roundLog2 : roundLog1;\n var frac = Lib.roundUp(Lib.mod(r0, 1), tickset, axrev);\n return Math.floor(r0) + Math.log(d3.round(Math.pow(10, frac), 1)) / Math.LN10;\n } else throw \"unrecognized dtick \" + String(dtick);\n };\n axes.tickText = function(ax, x, hover, noSuffixPrefix) {\n var out = tickTextObj(ax, x);\n var arrayMode = ax.tickmode === \"array\";\n var extraPrecision = hover || arrayMode;\n var axType = ax.type;\n var tickVal2l = axType === \"category\" ? ax.d2l_noadd : ax.d2l;\n var i;\n var inbounds = function(v) {\n var p = ax.l2p(v);\n return p >= 0 && p <= ax._length ? v : null;\n };\n if (arrayMode && Lib.isArrayOrTypedArray(ax.ticktext)) {\n var rng = Lib.simpleMap(ax.range, ax.r2l);\n var minDiff = (Math.abs(rng[1] - rng[0]) - (ax._lBreaks || 0)) / 1e4;\n for (i = 0; i < ax.ticktext.length; i++) {\n if (Math.abs(x - tickVal2l(ax.tickvals[i])) < minDiff) break;\n }\n if (i < ax.ticktext.length) {\n out.text = String(ax.ticktext[i]);\n out.xbnd = [\n inbounds(out.x - 0.5),\n inbounds(out.x + ax.dtick - 0.5)\n ];\n return out;\n }\n }\n function isHidden(showAttr) {\n if (showAttr === void 0) return true;\n if (hover) return showAttr === \"none\";\n var firstOrLast = {\n first: ax._tmin,\n last: ax._tmax\n }[showAttr];\n return showAttr !== \"all\" && x !== firstOrLast;\n }\n var hideexp = hover ? \"never\" : ax.exponentformat !== \"none\" && isHidden(ax.showexponent) ? \"hide\" : \"\";\n if (axType === \"date\") formatDate(ax, out, hover, extraPrecision);\n else if (axType === \"log\") formatLog(ax, out, hover, extraPrecision, hideexp);\n else if (axType === \"category\") formatCategory(ax, out);\n else if (axType === \"multicategory\") formatMultiCategory(ax, out, hover);\n else if (isAngular(ax)) formatAngle(ax, out, hover, extraPrecision, hideexp);\n else formatLinear(ax, out, hover, extraPrecision, hideexp);\n if (!noSuffixPrefix) {\n if (ax.tickprefix && !isHidden(ax.showtickprefix)) out.text = ax.tickprefix + out.text;\n if (ax.ticksuffix && !isHidden(ax.showticksuffix)) out.text += ax.ticksuffix;\n }\n if (ax.labelalias && ax.labelalias.hasOwnProperty(out.text)) {\n var t = ax.labelalias[out.text];\n if (typeof t === \"string\") out.text = t;\n }\n if (ax.tickson === \"boundaries\" || ax.showdividers) {\n out.xbnd = [\n inbounds(out.x - 0.5),\n inbounds(out.x + ax.dtick - 0.5)\n ];\n }\n return out;\n };\n axes.hoverLabelText = function(ax, values, hoverformat) {\n if (hoverformat) ax = Lib.extendFlat({}, ax, { hoverformat });\n var val = Lib.isArrayOrTypedArray(values) ? values[0] : values;\n var val2 = Lib.isArrayOrTypedArray(values) ? values[1] : void 0;\n if (val2 !== void 0 && val2 !== val) {\n return axes.hoverLabelText(ax, val, hoverformat) + \" - \" + axes.hoverLabelText(ax, val2, hoverformat);\n }\n var logOffScale = ax.type === \"log\" && val <= 0;\n var tx = axes.tickText(ax, ax.c2l(logOffScale ? -val : val), \"hover\").text;\n if (logOffScale) {\n return val === 0 ? \"0\" : MINUS_SIGN + tx;\n }\n return tx;\n };\n function tickTextObj(ax, x, text) {\n var tf = ax.tickfont || {};\n return {\n x,\n dx: 0,\n dy: 0,\n text: text || \"\",\n fontSize: tf.size,\n font: tf.family,\n fontWeight: tf.weight,\n fontStyle: tf.style,\n fontVariant: tf.variant,\n fontTextcase: tf.textcase,\n fontLineposition: tf.lineposition,\n fontShadow: tf.shadow,\n fontColor: tf.color\n };\n }\n function formatDate(ax, out, hover, extraPrecision) {\n var tr = ax._tickround;\n var fmt = hover && ax.hoverformat || axes.getTickFormat(ax);\n extraPrecision = !fmt && extraPrecision;\n if (extraPrecision) {\n if (isNumeric(tr)) tr = 4;\n else tr = { y: \"m\", m: \"d\", d: \"M\", M: \"S\", S: 4 }[tr];\n }\n var dateStr = Lib.formatDate(out.x, fmt, tr, ax._dateFormat, ax.calendar, ax._extraFormat);\n var headStr;\n var splitIndex = dateStr.indexOf(\"\\n\");\n if (splitIndex !== -1) {\n headStr = dateStr.substr(splitIndex + 1);\n dateStr = dateStr.substr(0, splitIndex);\n }\n if (extraPrecision) {\n if (headStr !== void 0 && (dateStr === \"00:00:00\" || dateStr === \"00:00\")) {\n dateStr = headStr;\n headStr = \"\";\n } else if (dateStr.length === 8) {\n dateStr = dateStr.replace(/:00$/, \"\");\n }\n }\n if (headStr) {\n if (hover) {\n if (tr === \"d\") dateStr += \", \" + headStr;\n else dateStr = headStr + (dateStr ? \", \" + dateStr : \"\");\n } else {\n if (!ax._inCalcTicks || ax._prevDateHead !== headStr) {\n ax._prevDateHead = headStr;\n dateStr += \"
\" + headStr;\n } else {\n var isInside = insideTicklabelposition(ax);\n var side = ax._trueSide || ax.side;\n if (!isInside && side === \"top\" || isInside && side === \"bottom\") {\n dateStr += \"
\";\n }\n }\n }\n }\n out.text = dateStr;\n }\n function formatLog(ax, out, hover, extraPrecision, hideexp) {\n var dtick = ax.dtick;\n var x = out.x;\n var tickformat = ax.tickformat;\n var dtChar0 = typeof dtick === \"string\" && dtick.charAt(0);\n if (hideexp === \"never\") {\n hideexp = \"\";\n }\n if (extraPrecision && dtChar0 !== \"L\") {\n dtick = \"L3\";\n dtChar0 = \"L\";\n }\n if (tickformat || dtChar0 === \"L\") {\n out.text = numFormat(Math.pow(10, x), ax, hideexp, extraPrecision);\n } else if (isNumeric(dtick) || dtChar0 === \"D\" && Lib.mod(x + 0.01, 1) < 0.1) {\n var p = Math.round(x);\n var absP = Math.abs(p);\n var exponentFormat = ax.exponentformat;\n if (exponentFormat === \"power\" || isSIFormat(exponentFormat) && beyondSI(p)) {\n if (p === 0) out.text = 1;\n else if (p === 1) out.text = \"10\";\n else out.text = \"10\" + (p > 1 ? \"\" : MINUS_SIGN) + absP + \"\";\n out.fontSize *= 1.25;\n } else if ((exponentFormat === \"e\" || exponentFormat === \"E\") && absP > 2) {\n out.text = \"1\" + exponentFormat + (p > 0 ? \"+\" : MINUS_SIGN) + absP;\n } else {\n out.text = numFormat(Math.pow(10, x), ax, \"\", \"fakehover\");\n if (dtick === \"D1\" && ax._id.charAt(0) === \"y\") {\n out.dy -= out.fontSize / 6;\n }\n }\n } else if (dtChar0 === \"D\") {\n out.text = String(Math.round(Math.pow(10, Lib.mod(x, 1))));\n out.fontSize *= 0.75;\n } else throw \"unrecognized dtick \" + String(dtick);\n if (ax.dtick === \"D1\") {\n var firstChar = String(out.text).charAt(0);\n if (firstChar === \"0\" || firstChar === \"1\") {\n if (ax._id.charAt(0) === \"y\") {\n out.dx -= out.fontSize / 4;\n } else {\n out.dy += out.fontSize / 2;\n out.dx += (ax.range[1] > ax.range[0] ? 1 : -1) * out.fontSize * (x < 0 ? 0.5 : 0.25);\n }\n }\n }\n }\n function formatCategory(ax, out) {\n var tt = ax._categories[Math.round(out.x)];\n if (tt === void 0) tt = \"\";\n out.text = String(tt);\n }\n function formatMultiCategory(ax, out, hover) {\n var v = Math.round(out.x);\n var cats = ax._categories[v] || [];\n var tt = cats[1] === void 0 ? \"\" : String(cats[1]);\n var tt2 = cats[0] === void 0 ? \"\" : String(cats[0]);\n if (hover) {\n out.text = tt2 + \" - \" + tt;\n } else {\n out.text = tt;\n out.text2 = tt2;\n }\n }\n function formatLinear(ax, out, hover, extraPrecision, hideexp) {\n if (hideexp === \"never\") {\n hideexp = \"\";\n } else if (ax.showexponent === \"all\" && Math.abs(out.x / ax.dtick) < 1e-6) {\n hideexp = \"hide\";\n }\n out.text = numFormat(out.x, ax, hideexp, extraPrecision);\n }\n function formatAngle(ax, out, hover, extraPrecision, hideexp) {\n if (ax.thetaunit === \"radians\" && !hover) {\n var num = out.x / 180;\n if (num === 0) {\n out.text = \"0\";\n } else {\n var frac = num2frac(num);\n if (frac[1] >= 100) {\n out.text = numFormat(Lib.deg2rad(out.x), ax, hideexp, extraPrecision);\n } else {\n var isNeg = out.x < 0;\n if (frac[1] === 1) {\n if (frac[0] === 1) out.text = \"\\u03C0\";\n else out.text = frac[0] + \"\\u03C0\";\n } else {\n out.text = [\n \"\",\n frac[0],\n \"\",\n \"\\u2044\",\n \"\",\n frac[1],\n \"\",\n \"\\u03C0\"\n ].join(\"\");\n }\n if (isNeg) out.text = MINUS_SIGN + out.text;\n }\n }\n } else {\n out.text = numFormat(out.x, ax, hideexp, extraPrecision);\n }\n }\n function num2frac(num) {\n function almostEq(a, b) {\n return Math.abs(a - b) <= 1e-6;\n }\n function findGCD(a, b) {\n return almostEq(b, 0) ? a : findGCD(b, a % b);\n }\n function findPrecision(n) {\n var e = 1;\n while (!almostEq(Math.round(n * e) / e, n)) {\n e *= 10;\n }\n return e;\n }\n var precision = findPrecision(num);\n var number = num * precision;\n var gcd = Math.abs(findGCD(number, precision));\n return [\n // numerator\n Math.round(number / gcd),\n // denominator\n Math.round(precision / gcd)\n ];\n }\n var SIPREFIXES = [\"f\", \"p\", \"n\", \"\\u03BC\", \"m\", \"\", \"k\", \"M\", \"G\", \"T\"];\n function isSIFormat(exponentFormat) {\n return exponentFormat === \"SI\" || exponentFormat === \"B\";\n }\n function beyondSI(exponent) {\n return exponent > 14 || exponent < -15;\n }\n function numFormat(v, ax, fmtoverride, hover) {\n var isNeg = v < 0;\n var tickRound = ax._tickround;\n var exponentFormat = fmtoverride || ax.exponentformat || \"B\";\n var exponent = ax._tickexponent;\n var tickformat = axes.getTickFormat(ax);\n var separatethousands = ax.separatethousands;\n if (hover) {\n var ah = {\n exponentformat: exponentFormat,\n minexponent: ax.minexponent,\n dtick: ax.showexponent === \"none\" ? ax.dtick : isNumeric(v) ? Math.abs(v) || 1 : 1,\n // if not showing any exponents, don't change the exponent\n // from what we calculate\n range: ax.showexponent === \"none\" ? ax.range.map(ax.r2d) : [0, v || 1]\n };\n autoTickRound(ah);\n tickRound = (Number(ah._tickround) || 0) + 4;\n exponent = ah._tickexponent;\n if (ax.hoverformat) tickformat = ax.hoverformat;\n }\n if (tickformat) return ax._numFormat(tickformat)(v).replace(/-/g, MINUS_SIGN);\n var e = Math.pow(10, -tickRound) / 2;\n if (exponentFormat === \"none\") exponent = 0;\n v = Math.abs(v);\n if (v < e) {\n v = \"0\";\n isNeg = false;\n } else {\n v += e;\n if (exponent) {\n v *= Math.pow(10, -exponent);\n tickRound += exponent;\n }\n if (tickRound === 0) v = String(Math.floor(v));\n else if (tickRound < 0) {\n v = String(Math.round(v));\n v = v.substr(0, v.length + tickRound);\n for (var i = tickRound; i < 0; i++) v += \"0\";\n } else {\n v = String(v);\n var dp = v.indexOf(\".\") + 1;\n if (dp) v = v.substr(0, dp + tickRound).replace(/\\.?0+$/, \"\");\n }\n v = Lib.numSeparate(v, ax._separators, separatethousands);\n }\n if (exponent && exponentFormat !== \"hide\") {\n if (isSIFormat(exponentFormat) && beyondSI(exponent)) exponentFormat = \"power\";\n var signedExponent;\n if (exponent < 0) signedExponent = MINUS_SIGN + -exponent;\n else if (exponentFormat !== \"power\") signedExponent = \"+\" + exponent;\n else signedExponent = String(exponent);\n if (exponentFormat === \"e\" || exponentFormat === \"E\") {\n v += exponentFormat + signedExponent;\n } else if (exponentFormat === \"power\") {\n v += \"\\xD710\" + signedExponent + \"\";\n } else if (exponentFormat === \"B\" && exponent === 9) {\n v += \"B\";\n } else if (isSIFormat(exponentFormat)) {\n v += SIPREFIXES[exponent / 3 + 5];\n }\n }\n if (isNeg) return MINUS_SIGN + v;\n return v;\n }\n axes.getTickFormat = function(ax) {\n var i;\n function convertToMs(dtick) {\n return typeof dtick !== \"string\" ? dtick : Number(dtick.replace(\"M\", \"\")) * ONEAVGMONTH;\n }\n function compareLogTicks(left, right) {\n var priority = [\"L\", \"D\"];\n if (typeof left === typeof right) {\n if (typeof left === \"number\") {\n return left - right;\n } else {\n var leftPriority = priority.indexOf(left.charAt(0));\n var rightPriority = priority.indexOf(right.charAt(0));\n if (leftPriority === rightPriority) {\n return Number(left.replace(/(L|D)/g, \"\")) - Number(right.replace(/(L|D)/g, \"\"));\n } else {\n return leftPriority - rightPriority;\n }\n }\n } else {\n return typeof left === \"number\" ? 1 : -1;\n }\n }\n function isProperStop(dtick, range, convert) {\n var convertFn = convert || function(x) {\n return x;\n };\n var leftDtick = range[0];\n var rightDtick = range[1];\n return (!leftDtick && typeof leftDtick !== \"number\" || convertFn(leftDtick) <= convertFn(dtick)) && (!rightDtick && typeof rightDtick !== \"number\" || convertFn(rightDtick) >= convertFn(dtick));\n }\n function isProperLogStop(dtick, range) {\n var isLeftDtickNull = range[0] === null;\n var isRightDtickNull = range[1] === null;\n var isDtickInRangeLeft = compareLogTicks(dtick, range[0]) >= 0;\n var isDtickInRangeRight = compareLogTicks(dtick, range[1]) <= 0;\n return (isLeftDtickNull || isDtickInRangeLeft) && (isRightDtickNull || isDtickInRangeRight);\n }\n var tickstop, stopi;\n if (ax.tickformatstops && ax.tickformatstops.length > 0) {\n switch (ax.type) {\n case \"date\":\n case \"linear\": {\n for (i = 0; i < ax.tickformatstops.length; i++) {\n stopi = ax.tickformatstops[i];\n if (stopi.enabled && isProperStop(ax.dtick, stopi.dtickrange, convertToMs)) {\n tickstop = stopi;\n break;\n }\n }\n break;\n }\n case \"log\": {\n for (i = 0; i < ax.tickformatstops.length; i++) {\n stopi = ax.tickformatstops[i];\n if (stopi.enabled && isProperLogStop(ax.dtick, stopi.dtickrange)) {\n tickstop = stopi;\n break;\n }\n }\n break;\n }\n default:\n }\n }\n return tickstop ? tickstop.value : ax.tickformat;\n };\n axes.getSubplots = function(gd, ax) {\n var subplotObj = gd._fullLayout._subplots;\n var allSubplots = subplotObj.cartesian.concat(subplotObj.gl2d || []);\n var out = ax ? axes.findSubplotsWithAxis(allSubplots, ax) : allSubplots;\n out.sort(function(a, b) {\n var aParts = a.substr(1).split(\"y\");\n var bParts = b.substr(1).split(\"y\");\n if (aParts[0] === bParts[0]) return +aParts[1] - +bParts[1];\n return +aParts[0] - +bParts[0];\n });\n return out;\n };\n axes.findSubplotsWithAxis = function(subplots, ax) {\n var axMatch = new RegExp(\n ax._id.charAt(0) === \"x\" ? \"^\" + ax._id + \"y\" : ax._id + \"$\"\n );\n var subplotsWithAx = [];\n for (var i = 0; i < subplots.length; i++) {\n var sp = subplots[i];\n if (axMatch.test(sp)) subplotsWithAx.push(sp);\n }\n return subplotsWithAx;\n };\n axes.makeClipPaths = function(gd) {\n var fullLayout = gd._fullLayout;\n if (fullLayout._hasOnlyLargeSploms) return;\n var fullWidth = { _offset: 0, _length: fullLayout.width, _id: \"\" };\n var fullHeight = { _offset: 0, _length: fullLayout.height, _id: \"\" };\n var xaList = axes.list(gd, \"x\", true);\n var yaList = axes.list(gd, \"y\", true);\n var clipList = [];\n var i, j;\n for (i = 0; i < xaList.length; i++) {\n clipList.push({ x: xaList[i], y: fullHeight });\n for (j = 0; j < yaList.length; j++) {\n if (i === 0) clipList.push({ x: fullWidth, y: yaList[j] });\n clipList.push({ x: xaList[i], y: yaList[j] });\n }\n }\n var axClips = fullLayout._clips.selectAll(\".axesclip\").data(clipList, function(d) {\n return d.x._id + d.y._id;\n });\n axClips.enter().append(\"clipPath\").classed(\"axesclip\", true).attr(\"id\", function(d) {\n return \"clip\" + fullLayout._uid + d.x._id + d.y._id;\n }).append(\"rect\");\n axClips.exit().remove();\n axClips.each(function(d) {\n d3.select(this).select(\"rect\").attr({\n x: d.x._offset || 0,\n y: d.y._offset || 0,\n width: d.x._length || 1,\n height: d.y._length || 1\n });\n });\n };\n axes.draw = function(gd, arg, opts) {\n var fullLayout = gd._fullLayout;\n if (arg === \"redraw\") {\n fullLayout._paper.selectAll(\"g.subplot\").each(function(d) {\n var id = d[0];\n var plotinfo = fullLayout._plots[id];\n if (plotinfo) {\n var xa = plotinfo.xaxis;\n var ya = plotinfo.yaxis;\n plotinfo.xaxislayer.selectAll(\".\" + xa._id + \"tick\").remove();\n plotinfo.yaxislayer.selectAll(\".\" + ya._id + \"tick\").remove();\n plotinfo.xaxislayer.selectAll(\".\" + xa._id + \"tick2\").remove();\n plotinfo.yaxislayer.selectAll(\".\" + ya._id + \"tick2\").remove();\n plotinfo.xaxislayer.selectAll(\".\" + xa._id + \"divider\").remove();\n plotinfo.yaxislayer.selectAll(\".\" + ya._id + \"divider\").remove();\n if (plotinfo.minorGridlayer) plotinfo.minorGridlayer.selectAll(\"path\").remove();\n if (plotinfo.gridlayer) plotinfo.gridlayer.selectAll(\"path\").remove();\n if (plotinfo.zerolinelayer) plotinfo.zerolinelayer.selectAll(\"path\").remove();\n fullLayout._infolayer.select(\".g-\" + xa._id + \"title\").remove();\n fullLayout._infolayer.select(\".g-\" + ya._id + \"title\").remove();\n }\n });\n }\n var axList = !arg || arg === \"redraw\" ? axes.listIds(gd) : arg;\n var fullAxList = axes.list(gd);\n var overlayingShiftedAx = fullAxList.filter(function(ax) {\n return ax.autoshift;\n }).map(function(ax) {\n return ax.overlaying;\n });\n axList.map(function(axId) {\n var ax = axes.getFromId(gd, axId);\n if (ax.tickmode === \"sync\" && ax.overlaying) {\n var overlayingIndex = axList.findIndex(function(axis) {\n return axis === ax.overlaying;\n });\n if (overlayingIndex >= 0) {\n axList.unshift(axList.splice(overlayingIndex, 1).shift());\n }\n }\n });\n var axShifts = { false: { left: 0, right: 0 } };\n return Lib.syncOrAsync(axList.map(function(axId) {\n return function() {\n if (!axId) return;\n var ax = axes.getFromId(gd, axId);\n if (!opts) opts = {};\n opts.axShifts = axShifts;\n opts.overlayingShiftedAx = overlayingShiftedAx;\n var axDone = axes.drawOne(gd, ax, opts);\n if (ax._shiftPusher) {\n incrementShift(ax, ax._fullDepth || 0, axShifts, true);\n }\n ax._r = ax.range.slice();\n ax._rl = Lib.simpleMap(ax._r, ax.r2l);\n return axDone;\n };\n }));\n };\n axes.drawOne = function(gd, ax, opts) {\n opts = opts || {};\n var axShifts = opts.axShifts || {};\n var overlayingShiftedAx = opts.overlayingShiftedAx || [];\n var i, sp, plotinfo;\n ax.setScale();\n var fullLayout = gd._fullLayout;\n var axId = ax._id;\n var axLetter = axId.charAt(0);\n var counterLetter = axes.counterLetter(axId);\n var mainPlotinfo = fullLayout._plots[ax._mainSubplot];\n if (!mainPlotinfo) return;\n ax._shiftPusher = ax.autoshift || overlayingShiftedAx.indexOf(ax._id) !== -1 || overlayingShiftedAx.indexOf(ax.overlaying) !== -1;\n if (ax._shiftPusher & ax.anchor === \"free\") {\n var selfPush = ax.linewidth / 2 || 0;\n if (ax.ticks === \"inside\") {\n selfPush += ax.ticklen;\n }\n incrementShift(ax, selfPush, axShifts, true);\n incrementShift(ax, ax.shift || 0, axShifts, false);\n }\n if (opts.skipTitle !== true || ax._shift === void 0) ax._shift = setShiftVal(ax, axShifts);\n var mainAxLayer = mainPlotinfo[axLetter + \"axislayer\"];\n var mainLinePosition = ax._mainLinePosition;\n var mainLinePositionShift = mainLinePosition += ax._shift;\n var mainMirrorPosition = ax._mainMirrorPosition;\n var vals = ax._vals = axes.calcTicks(ax);\n var axInfo = [ax.mirror, mainLinePositionShift, mainMirrorPosition].join(\"_\");\n for (i = 0; i < vals.length; i++) {\n vals[i].axInfo = axInfo;\n }\n ax._selections = {};\n if (ax._tickAngles) ax._prevTickAngles = ax._tickAngles;\n ax._tickAngles = {};\n ax._depth = null;\n var llbboxes = {};\n function getLabelLevelBbox(suffix) {\n var cls = axId + (suffix || \"tick\");\n if (!llbboxes[cls]) llbboxes[cls] = calcLabelLevelBbox(ax, cls, mainLinePositionShift);\n return llbboxes[cls];\n }\n if (!ax.visible) return;\n var transTickFn = axes.makeTransTickFn(ax);\n var transTickLabelFn = axes.makeTransTickLabelFn(ax);\n var tickVals;\n var valsClipped;\n var insideTicks = ax.ticks === \"inside\";\n var outsideTicks = ax.ticks === \"outside\";\n if (ax.tickson === \"boundaries\") {\n var boundaryVals = getBoundaryVals(ax, vals);\n valsClipped = axes.clipEnds(ax, boundaryVals);\n tickVals = insideTicks ? valsClipped : boundaryVals;\n } else {\n valsClipped = axes.clipEnds(ax, vals);\n tickVals = insideTicks && ax.ticklabelmode !== \"period\" ? valsClipped : vals;\n }\n var gridVals = ax._gridVals = valsClipped;\n var dividerVals = getDividerVals(ax, vals);\n if (!fullLayout._hasOnlyLargeSploms) {\n var subplotsWithAx = ax._subplotsWith;\n var finishedGrids = {};\n for (i = 0; i < subplotsWithAx.length; i++) {\n sp = subplotsWithAx[i];\n plotinfo = fullLayout._plots[sp];\n var counterAxis = plotinfo[counterLetter + \"axis\"];\n var mainCounterID = counterAxis._mainAxis._id;\n if (finishedGrids[mainCounterID]) continue;\n finishedGrids[mainCounterID] = 1;\n var gridPath = axLetter === \"x\" ? \"M0,\" + counterAxis._offset + \"v\" + counterAxis._length : \"M\" + counterAxis._offset + \",0h\" + counterAxis._length;\n axes.drawGrid(gd, ax, {\n vals: gridVals,\n counterAxis,\n layer: plotinfo.gridlayer.select(\".\" + axId),\n minorLayer: plotinfo.minorGridlayer.select(\".\" + axId),\n path: gridPath,\n transFn: transTickFn\n });\n axes.drawZeroLine(gd, ax, {\n counterAxis,\n layer: plotinfo.zerolinelayer,\n path: gridPath,\n transFn: transTickFn\n });\n }\n }\n var tickPath;\n var majorTickSigns = axes.getTickSigns(ax);\n var minorTickSigns = axes.getTickSigns(ax, \"minor\");\n if (ax.ticks || ax.minor && ax.minor.ticks) {\n var majorTickPath = axes.makeTickPath(ax, mainLinePositionShift, majorTickSigns[2]);\n var minorTickPath = axes.makeTickPath(ax, mainLinePositionShift, minorTickSigns[2], { minor: true });\n var mirrorMajorTickPath;\n var mirrorMinorTickPath;\n var fullMajorTickPath;\n var fullMinorTickPath;\n if (ax._anchorAxis && ax.mirror && ax.mirror !== true) {\n mirrorMajorTickPath = axes.makeTickPath(ax, mainMirrorPosition, majorTickSigns[3]);\n mirrorMinorTickPath = axes.makeTickPath(ax, mainMirrorPosition, minorTickSigns[3], { minor: true });\n fullMajorTickPath = majorTickPath + mirrorMajorTickPath;\n fullMinorTickPath = minorTickPath + mirrorMinorTickPath;\n } else {\n mirrorMajorTickPath = \"\";\n mirrorMinorTickPath = \"\";\n fullMajorTickPath = majorTickPath;\n fullMinorTickPath = minorTickPath;\n }\n if (ax.showdividers && outsideTicks && ax.tickson === \"boundaries\") {\n var dividerLookup = {};\n for (i = 0; i < dividerVals.length; i++) {\n dividerLookup[dividerVals[i].x] = 1;\n }\n tickPath = function(d) {\n return dividerLookup[d.x] ? mirrorMajorTickPath : fullMajorTickPath;\n };\n } else {\n tickPath = function(d) {\n return d.minor ? fullMinorTickPath : fullMajorTickPath;\n };\n }\n }\n axes.drawTicks(gd, ax, {\n vals: tickVals,\n layer: mainAxLayer,\n path: tickPath,\n transFn: transTickFn\n });\n if (ax.mirror === \"allticks\") {\n var tickSubplots = Object.keys(ax._linepositions || {});\n for (i = 0; i < tickSubplots.length; i++) {\n sp = tickSubplots[i];\n plotinfo = fullLayout._plots[sp];\n var linepositions = ax._linepositions[sp] || [];\n var p0 = linepositions[0];\n var p1 = linepositions[1];\n var isMinor = linepositions[2];\n var spTickPath = axes.makeTickPath(\n ax,\n p0,\n isMinor ? majorTickSigns[0] : minorTickSigns[0],\n { minor: isMinor }\n ) + axes.makeTickPath(\n ax,\n p1,\n isMinor ? majorTickSigns[1] : minorTickSigns[1],\n { minor: isMinor }\n );\n axes.drawTicks(gd, ax, {\n vals: tickVals,\n layer: plotinfo[axLetter + \"axislayer\"],\n path: spTickPath,\n transFn: transTickFn\n });\n }\n }\n var seq = [];\n seq.push(function() {\n return axes.drawLabels(gd, ax, {\n vals,\n layer: mainAxLayer,\n plotinfo,\n transFn: transTickLabelFn,\n labelFns: axes.makeLabelFns(ax, mainLinePositionShift)\n });\n });\n if (ax.type === \"multicategory\") {\n var pad = { x: 2, y: 10 }[axLetter];\n seq.push(function() {\n var bboxKey = { x: \"height\", y: \"width\" }[axLetter];\n var standoff = getLabelLevelBbox()[bboxKey] + pad + (ax._tickAngles[axId + \"tick\"] ? ax.tickfont.size * LINE_SPACING : 0);\n return axes.drawLabels(gd, ax, {\n vals: getSecondaryLabelVals(ax, vals),\n layer: mainAxLayer,\n cls: axId + \"tick2\",\n repositionOnUpdate: true,\n secondary: true,\n transFn: transTickFn,\n labelFns: axes.makeLabelFns(ax, mainLinePositionShift + standoff * majorTickSigns[4])\n });\n });\n seq.push(function() {\n ax._depth = majorTickSigns[4] * (getLabelLevelBbox(\"tick2\")[ax.side] - mainLinePositionShift);\n return drawDividers(gd, ax, {\n vals: dividerVals,\n layer: mainAxLayer,\n path: axes.makeTickPath(ax, mainLinePositionShift, majorTickSigns[4], { len: ax._depth }),\n transFn: transTickFn\n });\n });\n } else if (ax.title.hasOwnProperty(\"standoff\")) {\n seq.push(function() {\n ax._depth = majorTickSigns[4] * (getLabelLevelBbox()[ax.side] - mainLinePositionShift);\n });\n }\n var hasRangeSlider = Registry.getComponentMethod(\"rangeslider\", \"isVisible\")(ax);\n if (!opts.skipTitle && !(hasRangeSlider && ax.side === \"bottom\")) {\n seq.push(function() {\n return drawTitle(gd, ax);\n });\n }\n seq.push(function() {\n var s = ax.side.charAt(0);\n var sMirror = OPPOSITE_SIDE[ax.side].charAt(0);\n var pos = axes.getPxPosition(gd, ax);\n var outsideTickLen = outsideTicks ? ax.ticklen : 0;\n var llbbox;\n var push;\n var mirrorPush;\n var rangeSliderPush;\n if (ax.automargin || hasRangeSlider || ax._shiftPusher) {\n if (ax.type === \"multicategory\") {\n llbbox = getLabelLevelBbox(\"tick2\");\n } else {\n llbbox = getLabelLevelBbox();\n if (axLetter === \"x\" && s === \"b\") {\n ax._depth = Math.max(llbbox.width > 0 ? llbbox.bottom - pos : 0, outsideTickLen);\n }\n }\n }\n var axDepth = 0;\n var titleDepth = 0;\n if (ax._shiftPusher) {\n axDepth = Math.max(\n outsideTickLen,\n llbbox.height > 0 ? s === \"l\" ? pos - llbbox.left : llbbox.right - pos : 0\n );\n if (ax.title.text !== fullLayout._dfltTitle[axLetter]) {\n titleDepth = (ax._titleStandoff || 0) + (ax._titleScoot || 0);\n if (s === \"l\") {\n titleDepth += approxTitleDepth(ax);\n }\n }\n ax._fullDepth = Math.max(axDepth, titleDepth);\n }\n if (ax.automargin) {\n push = { x: 0, y: 0, r: 0, l: 0, t: 0, b: 0 };\n var domainIndices = [0, 1];\n var shift = typeof ax._shift === \"number\" ? ax._shift : 0;\n if (axLetter === \"x\") {\n if (s === \"b\") {\n push[s] = ax._depth;\n } else {\n push[s] = ax._depth = Math.max(llbbox.width > 0 ? pos - llbbox.top : 0, outsideTickLen);\n domainIndices.reverse();\n }\n if (llbbox.width > 0) {\n var rExtra = llbbox.right - (ax._offset + ax._length);\n if (rExtra > 0) {\n push.xr = 1;\n push.r = rExtra;\n }\n var lExtra = ax._offset - llbbox.left;\n if (lExtra > 0) {\n push.xl = 0;\n push.l = lExtra;\n }\n }\n } else {\n if (s === \"l\") {\n ax._depth = Math.max(llbbox.height > 0 ? pos - llbbox.left : 0, outsideTickLen);\n push[s] = ax._depth - shift;\n } else {\n ax._depth = Math.max(llbbox.height > 0 ? llbbox.right - pos : 0, outsideTickLen);\n push[s] = ax._depth + shift;\n domainIndices.reverse();\n }\n if (llbbox.height > 0) {\n var bExtra = llbbox.bottom - (ax._offset + ax._length);\n if (bExtra > 0) {\n push.yb = 0;\n push.b = bExtra;\n }\n var tExtra = ax._offset - llbbox.top;\n if (tExtra > 0) {\n push.yt = 1;\n push.t = tExtra;\n }\n }\n }\n push[counterLetter] = ax.anchor === \"free\" ? ax.position : ax._anchorAxis.domain[domainIndices[0]];\n if (ax.title.text !== fullLayout._dfltTitle[axLetter]) {\n push[s] += approxTitleDepth(ax) + (ax.title.standoff || 0);\n }\n if (ax.mirror && ax.anchor !== \"free\") {\n mirrorPush = { x: 0, y: 0, r: 0, l: 0, t: 0, b: 0 };\n mirrorPush[sMirror] = ax.linewidth;\n if (ax.mirror && ax.mirror !== true) mirrorPush[sMirror] += outsideTickLen;\n if (ax.mirror === true || ax.mirror === \"ticks\") {\n mirrorPush[counterLetter] = ax._anchorAxis.domain[domainIndices[1]];\n } else if (ax.mirror === \"all\" || ax.mirror === \"allticks\") {\n mirrorPush[counterLetter] = [ax._counterDomainMin, ax._counterDomainMax][domainIndices[1]];\n }\n }\n }\n if (hasRangeSlider) {\n rangeSliderPush = Registry.getComponentMethod(\"rangeslider\", \"autoMarginOpts\")(gd, ax);\n }\n if (typeof ax.automargin === \"string\") {\n filterPush(push, ax.automargin);\n filterPush(mirrorPush, ax.automargin);\n }\n Plots.autoMargin(gd, axAutoMarginID(ax), push);\n Plots.autoMargin(gd, axMirrorAutoMarginID(ax), mirrorPush);\n Plots.autoMargin(gd, rangeSliderAutoMarginID(ax), rangeSliderPush);\n });\n return Lib.syncOrAsync(seq);\n };\n function filterPush(push, automargin) {\n if (!push) return;\n var keepMargin = Object.keys(MARGIN_MAPPING).reduce(function(data, nextKey) {\n if (automargin.indexOf(nextKey) !== -1) {\n MARGIN_MAPPING[nextKey].forEach(function(key) {\n data[key] = 1;\n });\n }\n return data;\n }, {});\n Object.keys(push).forEach(function(key) {\n if (!keepMargin[key]) {\n if (key.length === 1) push[key] = 0;\n else delete push[key];\n }\n });\n }\n function getBoundaryVals(ax, vals) {\n var out = [];\n var i;\n var _push = function(d, bndIndex) {\n var xb = d.xbnd[bndIndex];\n if (xb !== null) {\n out.push(Lib.extendFlat({}, d, { x: xb }));\n }\n };\n if (vals.length) {\n for (i = 0; i < vals.length; i++) {\n _push(vals[i], 0);\n }\n _push(vals[i - 1], 1);\n }\n return out;\n }\n function getSecondaryLabelVals(ax, vals) {\n var out = [];\n var lookup = {};\n for (var i = 0; i < vals.length; i++) {\n var d = vals[i];\n if (lookup[d.text2]) {\n lookup[d.text2].push(d.x);\n } else {\n lookup[d.text2] = [d.x];\n }\n }\n for (var k in lookup) {\n out.push(tickTextObj(ax, Lib.interp(lookup[k], 0.5), k));\n }\n return out;\n }\n function getDividerVals(ax, vals) {\n var out = [];\n var i, current;\n var reversed = vals.length && vals[vals.length - 1].x < vals[0].x;\n var _push = function(d2, bndIndex) {\n var xb = d2.xbnd[bndIndex];\n if (xb !== null) {\n out.push(Lib.extendFlat({}, d2, { x: xb }));\n }\n };\n if (ax.showdividers && vals.length) {\n for (i = 0; i < vals.length; i++) {\n var d = vals[i];\n if (d.text2 !== current) {\n _push(d, reversed ? 1 : 0);\n }\n current = d.text2;\n }\n _push(vals[i - 1], reversed ? 0 : 1);\n }\n return out;\n }\n function calcLabelLevelBbox(ax, cls, mainLinePositionShift) {\n var top, bottom;\n var left, right;\n if (ax._selections[cls].size()) {\n top = Infinity;\n bottom = -Infinity;\n left = Infinity;\n right = -Infinity;\n ax._selections[cls].each(function() {\n var thisLabel = selectTickLabel(this);\n var bb = Drawing.bBox(thisLabel.node().parentNode);\n top = Math.min(top, bb.top);\n bottom = Math.max(bottom, bb.bottom);\n left = Math.min(left, bb.left);\n right = Math.max(right, bb.right);\n });\n } else {\n var dummyCalc = axes.makeLabelFns(ax, mainLinePositionShift);\n top = bottom = dummyCalc.yFn({ dx: 0, dy: 0, fontSize: 0 });\n left = right = dummyCalc.xFn({ dx: 0, dy: 0, fontSize: 0 });\n }\n return {\n top,\n bottom,\n left,\n right,\n height: bottom - top,\n width: right - left\n };\n }\n axes.getTickSigns = function(ax, minor) {\n var axLetter = ax._id.charAt(0);\n var sideOpposite = { x: \"top\", y: \"right\" }[axLetter];\n var main = ax.side === sideOpposite ? 1 : -1;\n var out = [-1, 1, main, -main];\n var ticks = minor ? (ax.minor || {}).ticks : ax.ticks;\n if (ticks !== \"inside\" === (axLetter === \"x\")) {\n out = out.map(function(v) {\n return -v;\n });\n }\n if (ax.side) {\n out.push({ l: -1, t: -1, r: 1, b: 1 }[ax.side.charAt(0)]);\n }\n return out;\n };\n axes.makeTransTickFn = function(ax) {\n return ax._id.charAt(0) === \"x\" ? function(d) {\n return strTranslate(ax._offset + ax.l2p(d.x), 0);\n } : function(d) {\n return strTranslate(0, ax._offset + ax.l2p(d.x));\n };\n };\n axes.makeTransTickLabelFn = function(ax) {\n var uv = getTickLabelUV(ax);\n var shift = ax.ticklabelshift || 0;\n var standoff = ax.ticklabelstandoff || 0;\n var u = uv[0];\n var v = uv[1];\n var isReversed = ax.range[0] > ax.range[1];\n var labelsInside = ax.ticklabelposition && ax.ticklabelposition.indexOf(\"inside\") !== -1;\n var labelsOutside = !labelsInside;\n if (shift) {\n var shiftSign = isReversed ? -1 : 1;\n shift = shift * shiftSign;\n }\n if (standoff) {\n var side = ax.side;\n var standoffSign = labelsInside && (side === \"top\" || side === \"left\") || labelsOutside && (side === \"bottom\" || side === \"right\") ? 1 : -1;\n standoff = standoff * standoffSign;\n }\n return ax._id.charAt(0) === \"x\" ? function(d) {\n return strTranslate(\n u + ax._offset + ax.l2p(getPosX(d)) + shift,\n v + standoff\n );\n } : function(d) {\n return strTranslate(\n v + standoff,\n u + ax._offset + ax.l2p(getPosX(d)) + shift\n );\n };\n };\n function getPosX(d) {\n return d.periodX !== void 0 ? d.periodX : d.x;\n }\n function getTickLabelUV(ax) {\n var ticklabelposition = ax.ticklabelposition || \"\";\n var has = function(str) {\n return ticklabelposition.indexOf(str) !== -1;\n };\n var isTop = has(\"top\");\n var isLeft = has(\"left\");\n var isRight = has(\"right\");\n var isBottom = has(\"bottom\");\n var isInside = has(\"inside\");\n var isAligned = isBottom || isLeft || isTop || isRight;\n if (!isAligned && !isInside) return [0, 0];\n var side = ax.side;\n var u = isAligned ? (ax.tickwidth || 0) / 2 : 0;\n var v = TEXTPAD;\n var fontSize = ax.tickfont ? ax.tickfont.size : 12;\n if (isBottom || isTop) {\n u += fontSize * CAP_SHIFT;\n v += (ax.linewidth || 0) / 2;\n }\n if (isLeft || isRight) {\n u += (ax.linewidth || 0) / 2;\n v += TEXTPAD;\n }\n if (isInside && side === \"top\") {\n v -= fontSize * (1 - CAP_SHIFT);\n }\n if (isLeft || isTop) u = -u;\n if (side === \"bottom\" || side === \"right\") v = -v;\n return [\n isAligned ? u : 0,\n isInside ? v : 0\n ];\n }\n axes.makeTickPath = function(ax, shift, sgn, opts) {\n if (!opts) opts = {};\n var minor = opts.minor;\n if (minor && !ax.minor) return \"\";\n var len = opts.len !== void 0 ? opts.len : minor ? ax.minor.ticklen : ax.ticklen;\n var axLetter = ax._id.charAt(0);\n var pad = (ax.linewidth || 1) / 2;\n return axLetter === \"x\" ? \"M0,\" + (shift + pad * sgn) + \"v\" + len * sgn : \"M\" + (shift + pad * sgn) + \",0h\" + len * sgn;\n };\n axes.makeLabelFns = function(ax, shift, angle) {\n var ticklabelposition = ax.ticklabelposition || \"\";\n var has = function(str) {\n return ticklabelposition.indexOf(str) !== -1;\n };\n var isTop = has(\"top\");\n var isLeft = has(\"left\");\n var isRight = has(\"right\");\n var isBottom = has(\"bottom\");\n var isAligned = isBottom || isLeft || isTop || isRight;\n var insideTickLabels = has(\"inside\");\n var labelsOverTicks = ticklabelposition === \"inside\" && ax.ticks === \"inside\" || !insideTickLabels && ax.ticks === \"outside\" && ax.tickson !== \"boundaries\";\n var labelStandoff = 0;\n var labelShift = 0;\n var tickLen = labelsOverTicks ? ax.ticklen : 0;\n if (insideTickLabels) {\n tickLen *= -1;\n } else if (isAligned) {\n tickLen = 0;\n }\n if (labelsOverTicks) {\n labelStandoff += tickLen;\n if (angle) {\n var rad = Lib.deg2rad(angle);\n labelStandoff = tickLen * Math.cos(rad) + 1;\n labelShift = tickLen * Math.sin(rad);\n }\n }\n if (ax.showticklabels && (labelsOverTicks || ax.showline)) {\n labelStandoff += 0.2 * ax.tickfont.size;\n }\n labelStandoff += (ax.linewidth || 1) / 2 * (insideTickLabels ? -1 : 1);\n var out = {\n labelStandoff,\n labelShift\n };\n var x0, y0, ff, flipIt;\n var xQ = 0;\n var side = ax.side;\n var axLetter = ax._id.charAt(0);\n var tickangle = ax.tickangle;\n var endSide;\n if (axLetter === \"x\") {\n endSide = !insideTickLabels && side === \"bottom\" || insideTickLabels && side === \"top\";\n flipIt = endSide ? 1 : -1;\n if (insideTickLabels) flipIt *= -1;\n x0 = labelShift * flipIt;\n y0 = shift + labelStandoff * flipIt;\n ff = endSide ? 1 : -0.2;\n if (Math.abs(tickangle) === 90) {\n if (insideTickLabels) {\n ff += MID_SHIFT;\n } else {\n if (tickangle === -90 && side === \"bottom\") {\n ff = CAP_SHIFT;\n } else if (tickangle === 90 && side === \"top\") {\n ff = MID_SHIFT;\n } else {\n ff = 0.5;\n }\n }\n xQ = MID_SHIFT / 2 * (tickangle / 90);\n }\n out.xFn = function(d) {\n return d.dx + x0 + xQ * d.fontSize;\n };\n out.yFn = function(d) {\n return d.dy + y0 + d.fontSize * ff;\n };\n out.anchorFn = function(d, a) {\n if (isAligned) {\n if (isLeft) return \"end\";\n if (isRight) return \"start\";\n }\n if (!isNumeric(a) || a === 0 || a === 180) {\n return \"middle\";\n }\n return a * flipIt < 0 !== insideTickLabels ? \"end\" : \"start\";\n };\n out.heightFn = function(d, a, h) {\n return a < -60 || a > 60 ? -0.5 * h : ax.side === \"top\" !== insideTickLabels ? -h : 0;\n };\n } else if (axLetter === \"y\") {\n endSide = !insideTickLabels && side === \"left\" || insideTickLabels && side === \"right\";\n flipIt = endSide ? 1 : -1;\n if (insideTickLabels) flipIt *= -1;\n x0 = labelStandoff;\n y0 = labelShift * flipIt;\n ff = 0;\n if (!insideTickLabels && Math.abs(tickangle) === 90) {\n if (tickangle === -90 && side === \"left\" || tickangle === 90 && side === \"right\") {\n ff = CAP_SHIFT;\n } else {\n ff = 0.5;\n }\n }\n if (insideTickLabels) {\n var ang = isNumeric(tickangle) ? +tickangle : 0;\n if (ang !== 0) {\n var rA = Lib.deg2rad(ang);\n xQ = Math.abs(Math.sin(rA)) * CAP_SHIFT * flipIt;\n ff = 0;\n }\n }\n out.xFn = function(d) {\n return d.dx + shift - (x0 + d.fontSize * ff) * flipIt + xQ * d.fontSize;\n };\n out.yFn = function(d) {\n return d.dy + y0 + d.fontSize * MID_SHIFT;\n };\n out.anchorFn = function(d, a) {\n if (isNumeric(a) && Math.abs(a) === 90) {\n return \"middle\";\n }\n return endSide ? \"end\" : \"start\";\n };\n out.heightFn = function(d, a, h) {\n if (ax.side === \"right\") a *= -1;\n return a < -30 ? -h : a < 30 ? -0.5 * h : 0;\n };\n }\n return out;\n };\n function tickDataFn(d) {\n return [d.text, d.x, d.axInfo, d.font, d.fontSize, d.fontColor].join(\"_\");\n }\n axes.drawTicks = function(gd, ax, opts) {\n opts = opts || {};\n var cls = ax._id + \"tick\";\n var vals = [].concat(\n ax.minor && ax.minor.ticks ? (\n // minor vals\n opts.vals.filter(function(d) {\n return d.minor && !d.noTick;\n })\n ) : []\n ).concat(\n ax.ticks ? (\n // major vals\n opts.vals.filter(function(d) {\n return !d.minor && !d.noTick;\n })\n ) : []\n );\n var ticks = opts.layer.selectAll(\"path.\" + cls).data(vals, tickDataFn);\n ticks.exit().remove();\n ticks.enter().append(\"path\").classed(cls, 1).classed(\"ticks\", 1).classed(\"crisp\", opts.crisp !== false).each(function(d) {\n return Color.stroke(d3.select(this), d.minor ? ax.minor.tickcolor : ax.tickcolor);\n }).style(\"stroke-width\", function(d) {\n return Drawing.crispRound(\n gd,\n d.minor ? ax.minor.tickwidth : ax.tickwidth,\n 1\n ) + \"px\";\n }).attr(\"d\", opts.path).style(\"display\", null);\n hideCounterAxisInsideTickLabels(ax, [TICK_PATH]);\n ticks.attr(\"transform\", opts.transFn);\n };\n axes.drawGrid = function(gd, ax, opts) {\n opts = opts || {};\n if (ax.tickmode === \"sync\") {\n return;\n }\n var cls = ax._id + \"grid\";\n var hasMinor = ax.minor && ax.minor.showgrid;\n var minorVals = hasMinor ? opts.vals.filter(function(d) {\n return d.minor;\n }) : [];\n var majorVals = ax.showgrid ? opts.vals.filter(function(d) {\n return !d.minor;\n }) : [];\n var counterAx = opts.counterAxis;\n if (counterAx && axes.shouldShowZeroLine(gd, ax, counterAx)) {\n var isArrayMode = ax.tickmode === \"array\";\n for (var i = 0; i < majorVals.length; i++) {\n var xi = majorVals[i].x;\n if (isArrayMode ? !xi : Math.abs(xi) < ax.dtick / 100) {\n majorVals = majorVals.slice(0, i).concat(majorVals.slice(i + 1));\n if (isArrayMode) i--;\n else break;\n }\n }\n }\n ax._gw = Drawing.crispRound(gd, ax.gridwidth, 1);\n var wMinor = !hasMinor ? 0 : Drawing.crispRound(gd, ax.minor.gridwidth, 1);\n var majorLayer = opts.layer;\n var minorLayer = opts.minorLayer;\n for (var major = 1; major >= 0; major--) {\n var layer = major ? majorLayer : minorLayer;\n if (!layer) continue;\n var grid = layer.selectAll(\"path.\" + cls).data(major ? majorVals : minorVals, tickDataFn);\n grid.exit().remove();\n grid.enter().append(\"path\").classed(cls, 1).classed(\"crisp\", opts.crisp !== false);\n grid.attr(\"transform\", opts.transFn).attr(\"d\", opts.path).each(function(d) {\n return Color.stroke(\n d3.select(this),\n d.minor ? ax.minor.gridcolor : ax.gridcolor || \"#ddd\"\n );\n }).style(\"stroke-dasharray\", function(d) {\n return Drawing.dashStyle(\n d.minor ? ax.minor.griddash : ax.griddash,\n d.minor ? ax.minor.gridwidth : ax.gridwidth\n );\n }).style(\"stroke-width\", function(d) {\n return (d.minor ? wMinor : ax._gw) + \"px\";\n }).style(\"display\", null);\n if (typeof opts.path === \"function\") grid.attr(\"d\", opts.path);\n }\n hideCounterAxisInsideTickLabels(ax, [GRID_PATH, MINORGRID_PATH]);\n };\n axes.drawZeroLine = function(gd, ax, opts) {\n opts = opts || opts;\n var cls = ax._id + \"zl\";\n var show = axes.shouldShowZeroLine(gd, ax, opts.counterAxis);\n var zl = opts.layer.selectAll(\"path.\" + cls).data(show ? [{ x: 0, id: ax._id }] : []);\n zl.exit().remove();\n zl.enter().append(\"path\").classed(cls, 1).classed(\"zl\", 1).classed(\"crisp\", opts.crisp !== false).each(function() {\n opts.layer.selectAll(\"path\").sort(function(da, db) {\n return idSort(da.id, db.id);\n });\n });\n zl.attr(\"transform\", opts.transFn).attr(\"d\", opts.path).call(Color.stroke, ax.zerolinecolor || Color.defaultLine).style(\"stroke-width\", Drawing.crispRound(gd, ax.zerolinewidth, ax._gw || 1) + \"px\").style(\"display\", null);\n hideCounterAxisInsideTickLabels(ax, [ZERO_PATH]);\n };\n axes.drawLabels = function(gd, ax, opts) {\n opts = opts || {};\n var fullLayout = gd._fullLayout;\n var axId = ax._id;\n var cls = opts.cls || axId + \"tick\";\n var vals = opts.vals.filter(function(d) {\n return d.text;\n });\n var labelFns = opts.labelFns;\n var tickAngle = opts.secondary ? 0 : ax.tickangle;\n var prevAngle = (ax._prevTickAngles || {})[cls];\n var tickLabels = opts.layer.selectAll(\"g.\" + cls).data(ax.showticklabels ? vals : [], tickDataFn);\n var labelsReady = [];\n tickLabels.enter().append(\"g\").classed(cls, 1).append(\"text\").attr(\"text-anchor\", \"middle\").each(function(d) {\n var thisLabel = d3.select(this);\n var newPromise = gd._promises.length;\n thisLabel.call(svgTextUtils.positionText, labelFns.xFn(d), labelFns.yFn(d)).call(Drawing.font, {\n family: d.font,\n size: d.fontSize,\n color: d.fontColor,\n weight: d.fontWeight,\n style: d.fontStyle,\n variant: d.fontVariant,\n textcase: d.fontTextcase,\n lineposition: d.fontLineposition,\n shadow: d.fontShadow\n }).text(d.text).call(svgTextUtils.convertToTspans, gd);\n if (gd._promises[newPromise]) {\n labelsReady.push(gd._promises.pop().then(function() {\n positionLabels(thisLabel, tickAngle);\n }));\n } else {\n positionLabels(thisLabel, tickAngle);\n }\n });\n hideCounterAxisInsideTickLabels(ax, [TICK_TEXT]);\n tickLabels.exit().remove();\n if (opts.repositionOnUpdate) {\n tickLabels.each(function(d) {\n d3.select(this).select(\"text\").call(svgTextUtils.positionText, labelFns.xFn(d), labelFns.yFn(d));\n });\n }\n function positionLabels(s, angle) {\n s.each(function(d) {\n var thisLabel = d3.select(this);\n var mathjaxGroup = thisLabel.select(\".text-math-group\");\n var anchor = labelFns.anchorFn(d, angle);\n var transform = opts.transFn.call(thisLabel.node(), d) + (isNumeric(angle) && +angle !== 0 ? \" rotate(\" + angle + \",\" + labelFns.xFn(d) + \",\" + (labelFns.yFn(d) - d.fontSize / 2) + \")\" : \"\");\n var nLines = svgTextUtils.lineCount(thisLabel);\n var lineHeight = LINE_SPACING * d.fontSize;\n var anchorHeight = labelFns.heightFn(d, isNumeric(angle) ? +angle : 0, (nLines - 1) * lineHeight);\n if (anchorHeight) {\n transform += strTranslate(0, anchorHeight);\n }\n if (mathjaxGroup.empty()) {\n var thisText = thisLabel.select(\"text\");\n thisText.attr({\n transform,\n \"text-anchor\": anchor\n });\n thisText.style(\"opacity\", 1);\n if (ax._adjustTickLabelsOverflow) {\n ax._adjustTickLabelsOverflow();\n }\n } else {\n var mjWidth = Drawing.bBox(mathjaxGroup.node()).width;\n var mjShift = mjWidth * { end: -0.5, start: 0.5 }[anchor];\n mathjaxGroup.attr(\"transform\", transform + strTranslate(mjShift, 0));\n }\n });\n }\n ax._adjustTickLabelsOverflow = function() {\n var ticklabeloverflow = ax.ticklabeloverflow;\n if (!ticklabeloverflow || ticklabeloverflow === \"allow\") return;\n var hideOverflow = ticklabeloverflow.indexOf(\"hide\") !== -1;\n var isX = ax._id.charAt(0) === \"x\";\n var p02 = 0;\n var p12 = isX ? gd._fullLayout.width : gd._fullLayout.height;\n if (ticklabeloverflow.indexOf(\"domain\") !== -1) {\n var rl = Lib.simpleMap(ax.range, ax.r2l);\n p02 = ax.l2p(rl[0]) + ax._offset;\n p12 = ax.l2p(rl[1]) + ax._offset;\n }\n var min = Math.min(p02, p12);\n var max = Math.max(p02, p12);\n var side = ax.side;\n var visibleLabelMin = Infinity;\n var visibleLabelMax = -Infinity;\n tickLabels.each(function(d) {\n var thisLabel = d3.select(this);\n var mathjaxGroup = thisLabel.select(\".text-math-group\");\n if (mathjaxGroup.empty()) {\n var bb = Drawing.bBox(thisLabel.node());\n var adjust = 0;\n if (isX) {\n if (bb.right > max) adjust = 1;\n else if (bb.left < min) adjust = 1;\n } else {\n if (bb.bottom > max) adjust = 1;\n else if (bb.top + (ax.tickangle ? 0 : d.fontSize / 4) < min) adjust = 1;\n }\n var t = thisLabel.select(\"text\");\n if (adjust) {\n if (hideOverflow) t.style(\"opacity\", 0);\n } else {\n t.style(\"opacity\", 1);\n if (side === \"bottom\" || side === \"right\") {\n visibleLabelMin = Math.min(visibleLabelMin, isX ? bb.top : bb.left);\n } else {\n visibleLabelMin = -Infinity;\n }\n if (side === \"top\" || side === \"left\") {\n visibleLabelMax = Math.max(visibleLabelMax, isX ? bb.bottom : bb.right);\n } else {\n visibleLabelMax = Infinity;\n }\n }\n }\n });\n for (var subplot in fullLayout._plots) {\n var plotinfo = fullLayout._plots[subplot];\n if (ax._id !== plotinfo.xaxis._id && ax._id !== plotinfo.yaxis._id) continue;\n var anchorAx2 = isX ? plotinfo.yaxis : plotinfo.xaxis;\n if (anchorAx2) {\n anchorAx2[\"_visibleLabelMin_\" + ax._id] = visibleLabelMin;\n anchorAx2[\"_visibleLabelMax_\" + ax._id] = visibleLabelMax;\n }\n }\n };\n ax._hideCounterAxisInsideTickLabels = function(partialOpts) {\n var isX = ax._id.charAt(0) === \"x\";\n var anchoredAxes = [];\n for (var subplot in fullLayout._plots) {\n var plotinfo = fullLayout._plots[subplot];\n if (ax._id !== plotinfo.xaxis._id && ax._id !== plotinfo.yaxis._id) continue;\n anchoredAxes.push(isX ? plotinfo.yaxis : plotinfo.xaxis);\n }\n anchoredAxes.forEach(function(anchorAx2, idx) {\n if (anchorAx2 && insideTicklabelposition(anchorAx2)) {\n (partialOpts || [\n ZERO_PATH,\n MINORGRID_PATH,\n GRID_PATH,\n TICK_PATH,\n TICK_TEXT\n ]).forEach(function(e) {\n var isPeriodLabel = e.K === \"tick\" && e.L === \"text\" && ax.ticklabelmode === \"period\";\n var mainPlotinfo = fullLayout._plots[ax._mainSubplot];\n var sel;\n if (e.K === ZERO_PATH.K) sel = mainPlotinfo.zerolinelayer.selectAll(\".\" + ax._id + \"zl\");\n else if (e.K === MINORGRID_PATH.K) sel = mainPlotinfo.minorGridlayer.selectAll(\".\" + ax._id);\n else if (e.K === GRID_PATH.K) sel = mainPlotinfo.gridlayer.selectAll(\".\" + ax._id);\n else sel = mainPlotinfo[ax._id.charAt(0) + \"axislayer\"];\n sel.each(function() {\n var w = d3.select(this);\n if (e.L) w = w.selectAll(e.L);\n w.each(function(d) {\n var q = ax.l2p(\n isPeriodLabel ? getPosX(d) : d.x\n ) + ax._offset;\n var t = d3.select(this);\n if (q < ax[\"_visibleLabelMax_\" + anchorAx2._id] && q > ax[\"_visibleLabelMin_\" + anchorAx2._id]) {\n t.style(\"display\", \"none\");\n } else if (e.K === \"tick\" && !idx) {\n t.style(\"display\", null);\n }\n });\n });\n });\n }\n });\n };\n positionLabels(tickLabels, prevAngle + 1 ? prevAngle : tickAngle);\n function allLabelsReady() {\n return labelsReady.length && Promise.all(labelsReady);\n }\n var autoangle = null;\n function fixLabelOverlaps() {\n positionLabels(tickLabels, tickAngle);\n if (vals.length && ax.autotickangles && (ax.type !== \"log\" || String(ax.dtick).charAt(0) !== \"D\")) {\n autoangle = ax.autotickangles[0];\n var maxFontSize = 0;\n var lbbArray = [];\n var i;\n var maxLines = 1;\n tickLabels.each(function(d) {\n maxFontSize = Math.max(maxFontSize, d.fontSize);\n var x = ax.l2p(d.x);\n var thisLabel = selectTickLabel(this);\n var bb = Drawing.bBox(thisLabel.node());\n maxLines = Math.max(maxLines, svgTextUtils.lineCount(thisLabel));\n lbbArray.push({\n // ignore about y, just deal with x overlaps\n top: 0,\n bottom: 10,\n height: 10,\n left: x - bb.width / 2,\n // impose a 2px gap\n right: x + bb.width / 2 + 2,\n width: bb.width + 2\n });\n });\n var preventOverlapWithTick = (ax.tickson === \"boundaries\" || ax.showdividers) && !opts.secondary;\n var vLen = vals.length;\n var tickSpacing = Math.abs((vals[vLen - 1].x - vals[0].x) * ax._m) / (vLen - 1);\n var adjacent = preventOverlapWithTick ? tickSpacing / 2 : tickSpacing;\n var opposite = preventOverlapWithTick ? ax.ticklen : maxFontSize * 1.25 * maxLines;\n var hypotenuse = Math.sqrt(Math.pow(adjacent, 2) + Math.pow(opposite, 2));\n var maxCos = adjacent / hypotenuse;\n var autoTickAnglesRadians = ax.autotickangles.map(\n function(degrees) {\n return degrees * Math.PI / 180;\n }\n );\n var angleRadians = autoTickAnglesRadians.find(\n function(angle) {\n return Math.abs(Math.cos(angle)) <= maxCos;\n }\n );\n if (angleRadians === void 0) {\n angleRadians = autoTickAnglesRadians.reduce(\n function(currentMax, nextAngle) {\n return Math.abs(Math.cos(currentMax)) < Math.abs(Math.cos(nextAngle)) ? currentMax : nextAngle;\n },\n autoTickAnglesRadians[0]\n );\n }\n var newAngle = angleRadians * (180 / Math.PI);\n if (preventOverlapWithTick) {\n var gap = 2;\n if (ax.ticks) gap += ax.tickwidth / 2;\n for (i = 0; i < lbbArray.length; i++) {\n var xbnd = vals[i].xbnd;\n var lbb = lbbArray[i];\n if (xbnd[0] !== null && lbb.left - ax.l2p(xbnd[0]) < gap || xbnd[1] !== null && ax.l2p(xbnd[1]) - lbb.right < gap) {\n autoangle = newAngle;\n break;\n }\n }\n } else {\n var ticklabelposition = ax.ticklabelposition || \"\";\n var has = function(str) {\n return ticklabelposition.indexOf(str) !== -1;\n };\n var isTop = has(\"top\");\n var isLeft = has(\"left\");\n var isRight = has(\"right\");\n var isBottom = has(\"bottom\");\n var isAligned = isBottom || isLeft || isTop || isRight;\n var pad = !isAligned ? 0 : (ax.tickwidth || 0) + 2 * TEXTPAD;\n for (i = 0; i < lbbArray.length - 1; i++) {\n if (Lib.bBoxIntersect(lbbArray[i], lbbArray[i + 1], pad)) {\n autoangle = newAngle;\n break;\n }\n }\n }\n if (autoangle) {\n positionLabels(tickLabels, autoangle);\n }\n }\n }\n if (ax._selections) {\n ax._selections[cls] = tickLabels;\n }\n var seq = [allLabelsReady];\n if (ax.automargin && fullLayout._redrawFromAutoMarginCount && prevAngle === 90) {\n autoangle = prevAngle;\n seq.push(function() {\n positionLabels(tickLabels, prevAngle);\n });\n } else {\n seq.push(fixLabelOverlaps);\n }\n if (ax._tickAngles) {\n seq.push(function() {\n ax._tickAngles[cls] = autoangle === null ? isNumeric(tickAngle) ? tickAngle : 0 : autoangle;\n });\n }\n var computeTickLabelBoundingBoxes = function() {\n var labelsMaxW = 0;\n var labelsMaxH = 0;\n tickLabels.each(function(d, i) {\n var thisLabel = selectTickLabel(this);\n var mathjaxGroup = thisLabel.select(\".text-math-group\");\n if (mathjaxGroup.empty()) {\n var bb;\n if (ax._vals[i]) {\n bb = ax._vals[i].bb || Drawing.bBox(thisLabel.node());\n ax._vals[i].bb = bb;\n }\n labelsMaxW = Math.max(labelsMaxW, bb.width);\n labelsMaxH = Math.max(labelsMaxH, bb.height);\n }\n });\n return {\n labelsMaxW,\n labelsMaxH\n };\n };\n var anchorAx = ax._anchorAxis;\n if (anchorAx && (anchorAx.autorange || anchorAx.insiderange) && insideTicklabelposition(ax) && !isLinked(fullLayout, ax._id)) {\n if (!fullLayout._insideTickLabelsUpdaterange) {\n fullLayout._insideTickLabelsUpdaterange = {};\n }\n if (anchorAx.autorange) {\n fullLayout._insideTickLabelsUpdaterange[anchorAx._name + \".autorange\"] = anchorAx.autorange;\n seq.push(computeTickLabelBoundingBoxes);\n }\n if (anchorAx.insiderange) {\n var BBs = computeTickLabelBoundingBoxes();\n var move = ax._id.charAt(0) === \"y\" ? BBs.labelsMaxW : BBs.labelsMaxH;\n move += 2 * TEXTPAD;\n if (ax.ticklabelposition === \"inside\") {\n move += ax.ticklen || 0;\n }\n var sgn = ax.side === \"right\" || ax.side === \"top\" ? 1 : -1;\n var index = sgn === 1 ? 1 : 0;\n var otherIndex = sgn === 1 ? 0 : 1;\n var newRange = [];\n newRange[otherIndex] = anchorAx.range[otherIndex];\n var anchorAxRange = anchorAx.range;\n var p0 = anchorAx.r2p(anchorAxRange[index]);\n var p1 = anchorAx.r2p(anchorAxRange[otherIndex]);\n var _tempNewRange = fullLayout._insideTickLabelsUpdaterange[anchorAx._name + \".range\"];\n if (_tempNewRange) {\n var q0 = anchorAx.r2p(_tempNewRange[index]);\n var q1 = anchorAx.r2p(_tempNewRange[otherIndex]);\n var dir = sgn * (ax._id.charAt(0) === \"y\" ? 1 : -1);\n if (dir * p0 < dir * q0) {\n p0 = q0;\n newRange[index] = anchorAxRange[index] = _tempNewRange[index];\n }\n if (dir * p1 > dir * q1) {\n p1 = q1;\n newRange[otherIndex] = anchorAxRange[otherIndex] = _tempNewRange[otherIndex];\n }\n }\n var dist = Math.abs(p1 - p0);\n if (dist - move > 0) {\n dist -= move;\n move *= 1 + move / dist;\n } else {\n move = 0;\n }\n if (ax._id.charAt(0) !== \"y\") move = -move;\n newRange[index] = anchorAx.p2r(\n anchorAx.r2p(anchorAxRange[index]) + sgn * move\n );\n if (anchorAx.autorange === \"min\" || anchorAx.autorange === \"max reversed\") {\n newRange[0] = null;\n anchorAx._rangeInitial0 = void 0;\n anchorAx._rangeInitial1 = void 0;\n } else if (anchorAx.autorange === \"max\" || anchorAx.autorange === \"min reversed\") {\n newRange[1] = null;\n anchorAx._rangeInitial0 = void 0;\n anchorAx._rangeInitial1 = void 0;\n }\n fullLayout._insideTickLabelsUpdaterange[anchorAx._name + \".range\"] = newRange;\n }\n }\n var done = Lib.syncOrAsync(seq);\n if (done && done.then) gd._promises.push(done);\n return done;\n };\n function drawDividers(gd, ax, opts) {\n var cls = ax._id + \"divider\";\n var vals = opts.vals;\n var dividers = opts.layer.selectAll(\"path.\" + cls).data(vals, tickDataFn);\n dividers.exit().remove();\n dividers.enter().insert(\"path\", \":first-child\").classed(cls, 1).classed(\"crisp\", 1).call(Color.stroke, ax.dividercolor).style(\"stroke-width\", Drawing.crispRound(gd, ax.dividerwidth, 1) + \"px\");\n dividers.attr(\"transform\", opts.transFn).attr(\"d\", opts.path);\n }\n axes.getPxPosition = function(gd, ax) {\n var gs = gd._fullLayout._size;\n var axLetter = ax._id.charAt(0);\n var side = ax.side;\n var anchorAxis;\n if (ax.anchor !== \"free\") {\n anchorAxis = ax._anchorAxis;\n } else if (axLetter === \"x\") {\n anchorAxis = {\n _offset: gs.t + (1 - (ax.position || 0)) * gs.h,\n _length: 0\n };\n } else if (axLetter === \"y\") {\n anchorAxis = {\n _offset: gs.l + (ax.position || 0) * gs.w + ax._shift,\n _length: 0\n };\n }\n if (side === \"top\" || side === \"left\") {\n return anchorAxis._offset;\n } else if (side === \"bottom\" || side === \"right\") {\n return anchorAxis._offset + anchorAxis._length;\n }\n };\n function approxTitleDepth(ax) {\n var fontSize = ax.title.font.size;\n var extraLines = (ax.title.text.match(svgTextUtils.BR_TAG_ALL) || []).length;\n if (ax.title.hasOwnProperty(\"standoff\")) {\n return fontSize * (CAP_SHIFT + extraLines * LINE_SPACING);\n } else {\n return extraLines ? fontSize * (extraLines + 1) * LINE_SPACING : fontSize;\n }\n }\n function drawTitle(gd, ax) {\n var fullLayout = gd._fullLayout;\n var axId = ax._id;\n var axLetter = axId.charAt(0);\n var fontSize = ax.title.font.size;\n var titleStandoff;\n var extraLines = (ax.title.text.match(svgTextUtils.BR_TAG_ALL) || []).length;\n if (ax.title.hasOwnProperty(\"standoff\")) {\n if (ax.side === \"bottom\" || ax.side === \"right\") {\n titleStandoff = ax._depth + ax.title.standoff + fontSize * CAP_SHIFT;\n } else if (ax.side === \"top\" || ax.side === \"left\") {\n titleStandoff = ax._depth + ax.title.standoff + fontSize * (MID_SHIFT + extraLines * LINE_SPACING);\n }\n } else {\n var isInside = insideTicklabelposition(ax);\n if (ax.type === \"multicategory\") {\n titleStandoff = ax._depth;\n } else {\n var offsetBase = 1.5 * fontSize;\n if (isInside) {\n offsetBase = 0.5 * fontSize;\n if (ax.ticks === \"outside\") {\n offsetBase += ax.ticklen;\n }\n }\n titleStandoff = 10 + offsetBase + (ax.linewidth ? ax.linewidth - 1 : 0);\n }\n if (!isInside) {\n if (axLetter === \"x\") {\n titleStandoff += ax.side === \"top\" ? fontSize * (ax.showticklabels ? 1 : 0) : fontSize * (ax.showticklabels ? 1.5 : 0.5);\n } else {\n titleStandoff += ax.side === \"right\" ? fontSize * (ax.showticklabels ? 1 : 0.5) : fontSize * (ax.showticklabels ? 0.5 : 0);\n }\n }\n }\n var pos = axes.getPxPosition(gd, ax);\n var transform, x, y;\n if (axLetter === \"x\") {\n x = ax._offset + ax._length / 2;\n y = ax.side === \"top\" ? pos - titleStandoff : pos + titleStandoff;\n } else {\n y = ax._offset + ax._length / 2;\n x = ax.side === \"right\" ? pos + titleStandoff : pos - titleStandoff;\n transform = { rotate: \"-90\", offset: 0 };\n }\n var avoid;\n if (ax.type !== \"multicategory\") {\n var tickLabels = ax._selections[ax._id + \"tick\"];\n avoid = {\n selection: tickLabels,\n side: ax.side\n };\n if (tickLabels && tickLabels.node() && tickLabels.node().parentNode) {\n var translation = Drawing.getTranslate(tickLabels.node().parentNode);\n avoid.offsetLeft = translation.x;\n avoid.offsetTop = translation.y;\n }\n if (ax.title.hasOwnProperty(\"standoff\")) {\n avoid.pad = 0;\n }\n }\n ax._titleStandoff = titleStandoff;\n return Titles.draw(gd, axId + \"title\", {\n propContainer: ax,\n propName: ax._name + \".title.text\",\n placeholder: fullLayout._dfltTitle[axLetter],\n avoid,\n transform,\n attributes: { x, y, \"text-anchor\": \"middle\" }\n });\n }\n axes.shouldShowZeroLine = function(gd, ax, counterAxis) {\n var rng = Lib.simpleMap(ax.range, ax.r2l);\n return rng[0] * rng[1] <= 0 && ax.zeroline && (ax.type === \"linear\" || ax.type === \"-\") && !(ax.rangebreaks && ax.maskBreaks(0) === BADNUM) && (clipEnds(ax, 0) || !anyCounterAxLineAtZero(gd, ax, counterAxis, rng) || hasBarsOrFill(gd, ax));\n };\n axes.clipEnds = function(ax, vals) {\n return vals.filter(function(d) {\n return clipEnds(ax, d.x);\n });\n };\n function clipEnds(ax, l) {\n var p = ax.l2p(l);\n return p > 1 && p < ax._length - 1;\n }\n function anyCounterAxLineAtZero(gd, ax, counterAxis, rng) {\n var mainCounterAxis = counterAxis._mainAxis;\n if (!mainCounterAxis) return;\n var fullLayout = gd._fullLayout;\n var axLetter = ax._id.charAt(0);\n var counterLetter = axes.counterLetter(ax._id);\n var zeroPosition = ax._offset + (Math.abs(rng[0]) < Math.abs(rng[1]) === (axLetter === \"x\") ? 0 : ax._length);\n function lineNearZero(ax2) {\n if (!ax2.showline || !ax2.linewidth) return false;\n var tolerance = Math.max((ax2.linewidth + ax.zerolinewidth) / 2, 1);\n function closeEnough(pos2) {\n return typeof pos2 === \"number\" && Math.abs(pos2 - zeroPosition) < tolerance;\n }\n if (closeEnough(ax2._mainLinePosition) || closeEnough(ax2._mainMirrorPosition)) {\n return true;\n }\n var linePositions = ax2._linepositions || {};\n for (var k in linePositions) {\n if (closeEnough(linePositions[k][0]) || closeEnough(linePositions[k][1])) {\n return true;\n }\n }\n }\n var plotinfo = fullLayout._plots[counterAxis._mainSubplot];\n if (!(plotinfo.mainplotinfo || plotinfo).overlays.length) {\n return lineNearZero(counterAxis, zeroPosition);\n }\n var counterLetterAxes = axes.list(gd, counterLetter);\n for (var i = 0; i < counterLetterAxes.length; i++) {\n var counterAxis2 = counterLetterAxes[i];\n if (counterAxis2._mainAxis === mainCounterAxis && lineNearZero(counterAxis2, zeroPosition)) {\n return true;\n }\n }\n }\n function hasBarsOrFill(gd, ax) {\n var fullData = gd._fullData;\n var subplot = ax._mainSubplot;\n var axLetter = ax._id.charAt(0);\n for (var i = 0; i < fullData.length; i++) {\n var trace = fullData[i];\n if (trace.visible === true && trace.xaxis + trace.yaxis === subplot) {\n if (Registry.traceIs(trace, \"bar-like\") && trace.orientation === { x: \"h\", y: \"v\" }[axLetter]) return true;\n if (trace.fill && trace.fill.charAt(trace.fill.length - 1) === axLetter) return true;\n }\n }\n return false;\n }\n function selectTickLabel(gTick) {\n var s = d3.select(gTick);\n var mj = s.select(\".text-math-group\");\n return mj.empty() ? s.select(\"text\") : mj;\n }\n axes.allowAutoMargin = function(gd) {\n var axList = axes.list(gd, \"\", true);\n for (var i = 0; i < axList.length; i++) {\n var ax = axList[i];\n if (ax.automargin) {\n Plots.allowAutoMargin(gd, axAutoMarginID(ax));\n if (ax.mirror) {\n Plots.allowAutoMargin(gd, axMirrorAutoMarginID(ax));\n }\n }\n if (Registry.getComponentMethod(\"rangeslider\", \"isVisible\")(ax)) {\n Plots.allowAutoMargin(gd, rangeSliderAutoMarginID(ax));\n }\n }\n };\n function axAutoMarginID(ax) {\n return ax._id + \".automargin\";\n }\n function axMirrorAutoMarginID(ax) {\n return axAutoMarginID(ax) + \".mirror\";\n }\n function rangeSliderAutoMarginID(ax) {\n return ax._id + \".rangeslider\";\n }\n axes.swap = function(gd, traces) {\n var axGroups = makeAxisGroups(gd, traces);\n for (var i = 0; i < axGroups.length; i++) {\n swapAxisGroup(gd, axGroups[i].x, axGroups[i].y);\n }\n };\n function makeAxisGroups(gd, traces) {\n var groups = [];\n var i, j;\n for (i = 0; i < traces.length; i++) {\n var groupsi = [];\n var xi = gd._fullData[traces[i]].xaxis;\n var yi = gd._fullData[traces[i]].yaxis;\n if (!xi || !yi) continue;\n for (j = 0; j < groups.length; j++) {\n if (groups[j].x.indexOf(xi) !== -1 || groups[j].y.indexOf(yi) !== -1) {\n groupsi.push(j);\n }\n }\n if (!groupsi.length) {\n groups.push({ x: [xi], y: [yi] });\n continue;\n }\n var group0 = groups[groupsi[0]];\n var groupj;\n if (groupsi.length > 1) {\n for (j = 1; j < groupsi.length; j++) {\n groupj = groups[groupsi[j]];\n mergeAxisGroups(group0.x, groupj.x);\n mergeAxisGroups(group0.y, groupj.y);\n }\n }\n mergeAxisGroups(group0.x, [xi]);\n mergeAxisGroups(group0.y, [yi]);\n }\n return groups;\n }\n function mergeAxisGroups(intoSet, fromSet) {\n for (var i = 0; i < fromSet.length; i++) {\n if (intoSet.indexOf(fromSet[i]) === -1) intoSet.push(fromSet[i]);\n }\n }\n function swapAxisGroup(gd, xIds, yIds) {\n var xFullAxes = [];\n var yFullAxes = [];\n var layout = gd.layout;\n var i, j;\n for (i = 0; i < xIds.length; i++) xFullAxes.push(axes.getFromId(gd, xIds[i]));\n for (i = 0; i < yIds.length; i++) yFullAxes.push(axes.getFromId(gd, yIds[i]));\n var allAxKeys = Object.keys(axAttrs);\n var noSwapAttrs = [\n \"anchor\",\n \"domain\",\n \"overlaying\",\n \"position\",\n \"side\",\n \"tickangle\",\n \"editType\"\n ];\n var numericTypes = [\"linear\", \"log\"];\n for (i = 0; i < allAxKeys.length; i++) {\n var keyi = allAxKeys[i];\n var xVal = xFullAxes[0][keyi];\n var yVal = yFullAxes[0][keyi];\n var allEqual = true;\n var coerceLinearX = false;\n var coerceLinearY = false;\n if (keyi.charAt(0) === \"_\" || typeof xVal === \"function\" || noSwapAttrs.indexOf(keyi) !== -1) {\n continue;\n }\n for (j = 1; j < xFullAxes.length && allEqual; j++) {\n var xVali = xFullAxes[j][keyi];\n if (keyi === \"type\" && numericTypes.indexOf(xVal) !== -1 && numericTypes.indexOf(xVali) !== -1 && xVal !== xVali) {\n coerceLinearX = true;\n } else if (xVali !== xVal) allEqual = false;\n }\n for (j = 1; j < yFullAxes.length && allEqual; j++) {\n var yVali = yFullAxes[j][keyi];\n if (keyi === \"type\" && numericTypes.indexOf(yVal) !== -1 && numericTypes.indexOf(yVali) !== -1 && yVal !== yVali) {\n coerceLinearY = true;\n } else if (yFullAxes[j][keyi] !== yVal) allEqual = false;\n }\n if (allEqual) {\n if (coerceLinearX) layout[xFullAxes[0]._name].type = \"linear\";\n if (coerceLinearY) layout[yFullAxes[0]._name].type = \"linear\";\n swapAxisAttrs(layout, keyi, xFullAxes, yFullAxes, gd._fullLayout._dfltTitle);\n }\n }\n for (i = 0; i < gd._fullLayout.annotations.length; i++) {\n var ann = gd._fullLayout.annotations[i];\n if (xIds.indexOf(ann.xref) !== -1 && yIds.indexOf(ann.yref) !== -1) {\n Lib.swapAttrs(layout.annotations[i], [\"?\"]);\n }\n }\n }\n function swapAxisAttrs(layout, key, xFullAxes, yFullAxes, dfltTitle) {\n var np = Lib.nestedProperty;\n var xVal = np(layout[xFullAxes[0]._name], key).get();\n var yVal = np(layout[yFullAxes[0]._name], key).get();\n var i;\n if (key === \"title\") {\n if (xVal && xVal.text === dfltTitle.x) {\n xVal.text = dfltTitle.y;\n }\n if (yVal && yVal.text === dfltTitle.y) {\n yVal.text = dfltTitle.x;\n }\n }\n for (i = 0; i < xFullAxes.length; i++) {\n np(layout, xFullAxes[i]._name + \".\" + key).set(yVal);\n }\n for (i = 0; i < yFullAxes.length; i++) {\n np(layout, yFullAxes[i]._name + \".\" + key).set(xVal);\n }\n }\n function isAngular(ax) {\n return ax._id === \"angularaxis\";\n }\n function moveOutsideBreak(v, ax) {\n var len = ax._rangebreaks.length;\n for (var k = 0; k < len; k++) {\n var brk = ax._rangebreaks[k];\n if (v >= brk.min && v < brk.max) {\n return brk.max;\n }\n }\n return v;\n }\n function insideTicklabelposition(ax) {\n return (ax.ticklabelposition || \"\").indexOf(\"inside\") !== -1;\n }\n function hideCounterAxisInsideTickLabels(ax, opts) {\n if (insideTicklabelposition(ax._anchorAxis || {})) {\n if (ax._hideCounterAxisInsideTickLabels) {\n ax._hideCounterAxisInsideTickLabels(opts);\n }\n }\n }\n function incrementShift(ax, shiftVal, axShifts, normalize) {\n var overlay = ax.anchor !== \"free\" && (ax.overlaying === void 0 || ax.overlaying === false) ? ax._id : ax.overlaying;\n var shiftValAdj;\n if (normalize) {\n shiftValAdj = ax.side === \"right\" ? shiftVal : -shiftVal;\n } else {\n shiftValAdj = shiftVal;\n }\n if (!(overlay in axShifts)) {\n axShifts[overlay] = {};\n }\n if (!(ax.side in axShifts[overlay])) {\n axShifts[overlay][ax.side] = 0;\n }\n axShifts[overlay][ax.side] += shiftValAdj;\n }\n function setShiftVal(ax, axShifts) {\n return ax.autoshift ? axShifts[ax.overlaying][ax.side] : ax.shift || 0;\n }\n function periodCompatibleWithTickformat(period, tickformat) {\n return /%f/.test(tickformat) ? period >= ONEMICROSEC : /%L/.test(tickformat) ? period >= ONEMILLI : /%[SX]/.test(tickformat) ? period >= ONESEC : /%M/.test(tickformat) ? period >= ONEMIN : /%[HI]/.test(tickformat) ? period >= ONEHOUR : /%p/.test(tickformat) ? period >= HALFDAY : /%[Aadejuwx]/.test(tickformat) ? period >= ONEDAY : /%[UVW]/.test(tickformat) ? period >= ONEWEEK : /%[Bbm]/.test(tickformat) ? period >= ONEMINMONTH : /%[q]/.test(tickformat) ? period >= ONEMINQUARTER : /%[Yy]/.test(tickformat) ? period >= ONEMINYEAR : true;\n }\n }\n });\n\n // src/plots/cartesian/autorange_options_defaults.js\n var require_autorange_options_defaults = __commonJS({\n \"src/plots/cartesian/autorange_options_defaults.js\"(exports, module) {\n \"use strict\";\n module.exports = function handleAutorangeOptionsDefaults(coerce, autorange, range) {\n var minRange, maxRange;\n if (range) {\n var isReversed = autorange === \"reversed\" || autorange === \"min reversed\" || autorange === \"max reversed\";\n minRange = range[isReversed ? 1 : 0];\n maxRange = range[isReversed ? 0 : 1];\n }\n var minallowed = coerce(\"autorangeoptions.minallowed\", maxRange === null ? minRange : void 0);\n var maxallowed = coerce(\"autorangeoptions.maxallowed\", minRange === null ? maxRange : void 0);\n if (minallowed === void 0) coerce(\"autorangeoptions.clipmin\");\n if (maxallowed === void 0) coerce(\"autorangeoptions.clipmax\");\n coerce(\"autorangeoptions.include\");\n };\n }\n });\n\n // src/plots/cartesian/range_defaults.js\n var require_range_defaults = __commonJS({\n \"src/plots/cartesian/range_defaults.js\"(exports, module) {\n \"use strict\";\n var handleAutorangeOptionsDefaults = require_autorange_options_defaults();\n module.exports = function handleRangeDefaults(containerIn, containerOut, coerce, options) {\n var axTemplate = containerOut._template || {};\n var axType = containerOut.type || axTemplate.type || \"-\";\n coerce(\"minallowed\");\n coerce(\"maxallowed\");\n var range = coerce(\"range\");\n if (!range) {\n var insiderange;\n if (!options.noInsiderange && axType !== \"log\") {\n insiderange = coerce(\"insiderange\");\n if (insiderange && (insiderange[0] === null || insiderange[1] === null)) {\n containerOut.insiderange = false;\n insiderange = void 0;\n }\n if (insiderange) range = coerce(\"range\", insiderange);\n }\n }\n var autorangeDflt = containerOut.getAutorangeDflt(range, options);\n var autorange = coerce(\"autorange\", autorangeDflt);\n var shouldAutorange;\n if (range && (range[0] === null && range[1] === null || (range[0] === null || range[1] === null) && (autorange === \"reversed\" || autorange === true) || range[0] !== null && (autorange === \"min\" || autorange === \"max reversed\") || range[1] !== null && (autorange === \"max\" || autorange === \"min reversed\"))) {\n range = void 0;\n delete containerOut.range;\n containerOut.autorange = true;\n shouldAutorange = true;\n }\n if (!shouldAutorange) {\n autorangeDflt = containerOut.getAutorangeDflt(range, options);\n autorange = coerce(\"autorange\", autorangeDflt);\n }\n if (autorange) {\n handleAutorangeOptionsDefaults(coerce, autorange, range);\n if (axType === \"linear\" || axType === \"-\") coerce(\"rangemode\");\n }\n containerOut.cleanRange();\n };\n }\n });\n\n // node_modules/mouse-event-offset/index.js\n var require_mouse_event_offset = __commonJS({\n \"node_modules/mouse-event-offset/index.js\"(exports, module) {\n var rootPosition = { left: 0, top: 0 };\n module.exports = mouseEventOffset;\n function mouseEventOffset(ev, target, out) {\n target = target || ev.currentTarget || ev.srcElement;\n if (!Array.isArray(out)) {\n out = [0, 0];\n }\n var cx = ev.clientX || 0;\n var cy = ev.clientY || 0;\n var rect = getBoundingClientOffset(target);\n out[0] = cx - rect.left;\n out[1] = cy - rect.top;\n return out;\n }\n function getBoundingClientOffset(element) {\n if (element === window || element === document || element === document.body) {\n return rootPosition;\n } else {\n return element.getBoundingClientRect();\n }\n }\n }\n });\n\n // node_modules/has-passive-events/index.js\n var require_has_passive_events = __commonJS({\n \"node_modules/has-passive-events/index.js\"(exports, module) {\n \"use strict\";\n var isBrowser = require_client();\n function detect() {\n var supported = false;\n try {\n var opts = Object.defineProperty({}, \"passive\", {\n get: function() {\n supported = true;\n }\n });\n window.addEventListener(\"test\", null, opts);\n window.removeEventListener(\"test\", null, opts);\n } catch (e) {\n supported = false;\n }\n return supported;\n }\n module.exports = isBrowser && detect();\n }\n });\n\n // src/components/dragelement/align.js\n var require_align = __commonJS({\n \"src/components/dragelement/align.js\"(exports, module) {\n \"use strict\";\n module.exports = function align(v, dv, v0, v1, anchor) {\n var vmin = (v - v0) / (v1 - v0);\n var vmax = vmin + dv / (v1 - v0);\n var vc = (vmin + vmax) / 2;\n if (anchor === \"left\" || anchor === \"bottom\") return vmin;\n if (anchor === \"center\" || anchor === \"middle\") return vc;\n if (anchor === \"right\" || anchor === \"top\") return vmax;\n if (vmin < 2 / 3 - vc) return vmin;\n if (vmax > 4 / 3 - vc) return vmax;\n return vc;\n };\n }\n });\n\n // src/components/dragelement/cursor.js\n var require_cursor = __commonJS({\n \"src/components/dragelement/cursor.js\"(exports, module) {\n \"use strict\";\n var Lib = require_lib();\n var cursorset = [\n [\"sw-resize\", \"s-resize\", \"se-resize\"],\n [\"w-resize\", \"move\", \"e-resize\"],\n [\"nw-resize\", \"n-resize\", \"ne-resize\"]\n ];\n module.exports = function getCursor(x, y, xanchor, yanchor) {\n if (xanchor === \"left\") x = 0;\n else if (xanchor === \"center\") x = 1;\n else if (xanchor === \"right\") x = 2;\n else x = Lib.constrain(Math.floor(x * 3), 0, 2);\n if (yanchor === \"bottom\") y = 0;\n else if (yanchor === \"middle\") y = 1;\n else if (yanchor === \"top\") y = 2;\n else y = Lib.constrain(Math.floor(y * 3), 0, 2);\n return cursorset[y][x];\n };\n }\n });\n\n // src/components/dragelement/unhover.js\n var require_unhover = __commonJS({\n \"src/components/dragelement/unhover.js\"(exports, module) {\n \"use strict\";\n var Events = require_events2();\n var throttle = require_throttle();\n var getGraphDiv = require_dom().getGraphDiv;\n var hoverConstants = require_constants();\n var unhover = module.exports = {};\n unhover.wrapped = function(gd, evt, subplot) {\n gd = getGraphDiv(gd);\n if (gd._fullLayout) {\n throttle.clear(gd._fullLayout._uid + hoverConstants.HOVERID);\n }\n unhover.raw(gd, evt, subplot);\n };\n unhover.raw = function raw(gd, evt) {\n var fullLayout = gd._fullLayout;\n var oldhoverdata = gd._hoverdata;\n if (!evt) evt = {};\n if (evt.target && !gd._dragged && Events.triggerHandler(gd, \"plotly_beforehover\", evt) === false) {\n return;\n }\n fullLayout._hoverlayer.selectAll(\"g\").remove();\n fullLayout._hoverlayer.selectAll(\"line\").remove();\n fullLayout._hoverlayer.selectAll(\"circle\").remove();\n gd._hoverdata = void 0;\n if (evt.target && oldhoverdata) {\n gd.emit(\"plotly_unhover\", {\n event: evt,\n points: oldhoverdata\n });\n }\n };\n }\n });\n\n // src/components/dragelement/index.js\n var require_dragelement = __commonJS({\n \"src/components/dragelement/index.js\"(exports, module) {\n \"use strict\";\n var mouseOffset = require_mouse_event_offset();\n var hasHover = require_has_hover();\n var supportsPassive = require_has_passive_events();\n var removeElement = require_lib().removeElement;\n var constants = require_constants2();\n var dragElement = module.exports = {};\n dragElement.align = require_align();\n dragElement.getCursor = require_cursor();\n var unhover = require_unhover();\n dragElement.unhover = unhover.wrapped;\n dragElement.unhoverRaw = unhover.raw;\n dragElement.init = function init(options) {\n var gd = options.gd;\n var numClicks = 1;\n var doubleClickDelay = gd._context.doubleClickDelay;\n var element = options.element;\n var startX, startY, newMouseDownTime, cursor, dragCover, initialEvent, initialTarget, rightClick;\n if (!gd._mouseDownTime) gd._mouseDownTime = 0;\n element.style.pointerEvents = \"all\";\n element.onmousedown = onStart;\n if (!supportsPassive) {\n element.ontouchstart = onStart;\n } else {\n if (element._ontouchstart) {\n element.removeEventListener(\"touchstart\", element._ontouchstart);\n }\n element._ontouchstart = onStart;\n element.addEventListener(\"touchstart\", onStart, { passive: false });\n }\n function _clampFn(dx, dy, minDrag) {\n if (Math.abs(dx) < minDrag) dx = 0;\n if (Math.abs(dy) < minDrag) dy = 0;\n return [dx, dy];\n }\n var clampFn = options.clampFn || _clampFn;\n function onStart(e) {\n gd._dragged = false;\n gd._dragging = true;\n var offset = pointerOffset(e);\n startX = offset[0];\n startY = offset[1];\n initialTarget = e.target;\n initialEvent = e;\n rightClick = e.buttons === 2 || e.ctrlKey;\n if (typeof e.clientX === \"undefined\" && typeof e.clientY === \"undefined\") {\n e.clientX = startX;\n e.clientY = startY;\n }\n newMouseDownTime = (/* @__PURE__ */ new Date()).getTime();\n if (newMouseDownTime - gd._mouseDownTime < doubleClickDelay) {\n numClicks += 1;\n } else {\n numClicks = 1;\n gd._mouseDownTime = newMouseDownTime;\n }\n if (options.prepFn) options.prepFn(e, startX, startY);\n if (hasHover && !rightClick) {\n dragCover = coverSlip();\n dragCover.style.cursor = window.getComputedStyle(element).cursor;\n } else if (!hasHover) {\n dragCover = document;\n cursor = window.getComputedStyle(document.documentElement).cursor;\n document.documentElement.style.cursor = window.getComputedStyle(element).cursor;\n }\n document.addEventListener(\"mouseup\", onDone);\n document.addEventListener(\"touchend\", onDone);\n if (options.dragmode !== false) {\n e.preventDefault();\n document.addEventListener(\"mousemove\", onMove);\n document.addEventListener(\"touchmove\", onMove, { passive: false });\n }\n return;\n }\n function onMove(e) {\n e.preventDefault();\n var offset = pointerOffset(e);\n var minDrag = options.minDrag || constants.MINDRAG;\n var dxdy = clampFn(offset[0] - startX, offset[1] - startY, minDrag);\n var dx = dxdy[0];\n var dy = dxdy[1];\n if (dx || dy) {\n gd._dragged = true;\n dragElement.unhover(gd, e);\n }\n if (gd._dragged && options.moveFn && !rightClick) {\n gd._dragdata = {\n element,\n dx,\n dy\n };\n options.moveFn(dx, dy);\n }\n return;\n }\n function onDone(e) {\n delete gd._dragdata;\n if (options.dragmode !== false) {\n e.preventDefault();\n document.removeEventListener(\"mousemove\", onMove);\n document.removeEventListener(\"touchmove\", onMove);\n }\n document.removeEventListener(\"mouseup\", onDone);\n document.removeEventListener(\"touchend\", onDone);\n if (hasHover) {\n removeElement(dragCover);\n } else if (cursor) {\n dragCover.documentElement.style.cursor = cursor;\n cursor = null;\n }\n if (!gd._dragging) {\n gd._dragged = false;\n return;\n }\n gd._dragging = false;\n if ((/* @__PURE__ */ new Date()).getTime() - gd._mouseDownTime > doubleClickDelay) {\n numClicks = Math.max(numClicks - 1, 1);\n }\n if (gd._dragged) {\n if (options.doneFn) options.doneFn();\n } else {\n if (options.clickFn) options.clickFn(numClicks, initialEvent);\n if (!rightClick) {\n var e2;\n try {\n e2 = new MouseEvent(\"click\", e);\n } catch (err) {\n var offset = pointerOffset(e);\n e2 = document.createEvent(\"MouseEvents\");\n e2.initMouseEvent(\n \"click\",\n e.bubbles,\n e.cancelable,\n e.view,\n e.detail,\n e.screenX,\n e.screenY,\n offset[0],\n offset[1],\n e.ctrlKey,\n e.altKey,\n e.shiftKey,\n e.metaKey,\n e.button,\n e.relatedTarget\n );\n }\n initialTarget.dispatchEvent(e2);\n }\n }\n gd._dragging = false;\n gd._dragged = false;\n return;\n }\n };\n function coverSlip() {\n var cover = document.createElement(\"div\");\n cover.className = \"dragcover\";\n var cStyle = cover.style;\n cStyle.position = \"fixed\";\n cStyle.left = 0;\n cStyle.right = 0;\n cStyle.top = 0;\n cStyle.bottom = 0;\n cStyle.zIndex = 999999999;\n cStyle.background = \"none\";\n document.body.appendChild(cover);\n return cover;\n }\n dragElement.coverSlip = coverSlip;\n function pointerOffset(e) {\n return mouseOffset(\n e.changedTouches ? e.changedTouches[0] : e,\n document.body\n );\n }\n }\n });\n\n // src/lib/setcursor.js\n var require_setcursor = __commonJS({\n \"src/lib/setcursor.js\"(exports, module) {\n \"use strict\";\n module.exports = function setCursor(el3, csr) {\n (el3.attr(\"class\") || \"\").split(\" \").forEach(function(cls) {\n if (cls.indexOf(\"cursor-\") === 0) el3.classed(cls, false);\n });\n if (csr) el3.classed(\"cursor-\" + csr, true);\n };\n }\n });\n\n // src/lib/override_cursor.js\n var require_override_cursor = __commonJS({\n \"src/lib/override_cursor.js\"(exports, module) {\n \"use strict\";\n var setCursor = require_setcursor();\n var STASHATTR = \"data-savedcursor\";\n var NO_CURSOR = \"!!\";\n module.exports = function overrideCursor(el3, csr) {\n var savedCursor = el3.attr(STASHATTR);\n if (csr) {\n if (!savedCursor) {\n var classes = (el3.attr(\"class\") || \"\").split(\" \");\n for (var i = 0; i < classes.length; i++) {\n var cls = classes[i];\n if (cls.indexOf(\"cursor-\") === 0) {\n el3.attr(STASHATTR, cls.substr(7)).classed(cls, false);\n }\n }\n if (!el3.attr(STASHATTR)) {\n el3.attr(STASHATTR, NO_CURSOR);\n }\n }\n setCursor(el3, csr);\n } else if (savedCursor) {\n el3.attr(STASHATTR, null);\n if (savedCursor === NO_CURSOR) setCursor(el3);\n else setCursor(el3, savedCursor);\n }\n };\n }\n });\n\n // src/components/legend/attributes.js\n var require_attributes9 = __commonJS({\n \"src/components/legend/attributes.js\"(exports, module) {\n \"use strict\";\n var fontAttrs = require_font_attributes();\n var colorAttrs = require_attributes3();\n module.exports = {\n // not really a 'subplot' attribute container,\n // but this is the flag we use to denote attributes that\n // support yaxis, yaxis2, yaxis3, ... counters\n _isSubplotObj: true,\n visible: {\n valType: \"boolean\",\n dflt: true,\n editType: \"legend\"\n },\n bgcolor: {\n valType: \"color\",\n editType: \"legend\"\n },\n bordercolor: {\n valType: \"color\",\n dflt: colorAttrs.defaultLine,\n editType: \"legend\"\n },\n borderwidth: {\n valType: \"number\",\n min: 0,\n dflt: 0,\n editType: \"legend\"\n },\n font: fontAttrs({\n editType: \"legend\"\n }),\n grouptitlefont: fontAttrs({\n editType: \"legend\"\n }),\n orientation: {\n valType: \"enumerated\",\n values: [\"v\", \"h\"],\n dflt: \"v\",\n editType: \"legend\"\n },\n traceorder: {\n valType: \"flaglist\",\n flags: [\"reversed\", \"grouped\"],\n extras: [\"normal\"],\n editType: \"legend\"\n },\n tracegroupgap: {\n valType: \"number\",\n min: 0,\n dflt: 10,\n editType: \"legend\"\n },\n entrywidth: {\n valType: \"number\",\n min: 0,\n editType: \"legend\"\n },\n entrywidthmode: {\n valType: \"enumerated\",\n values: [\"fraction\", \"pixels\"],\n dflt: \"pixels\",\n editType: \"legend\"\n },\n indentation: {\n valType: \"number\",\n min: -15,\n dflt: 0,\n editType: \"legend\"\n },\n itemsizing: {\n valType: \"enumerated\",\n values: [\"trace\", \"constant\"],\n dflt: \"trace\",\n editType: \"legend\"\n },\n itemwidth: {\n valType: \"number\",\n min: 30,\n dflt: 30,\n editType: \"legend\"\n },\n itemclick: {\n valType: \"enumerated\",\n values: [\"toggle\", \"toggleothers\", false],\n dflt: \"toggle\",\n editType: \"legend\"\n },\n itemdoubleclick: {\n valType: \"enumerated\",\n values: [\"toggle\", \"toggleothers\", false],\n dflt: \"toggleothers\",\n editType: \"legend\"\n },\n groupclick: {\n valType: \"enumerated\",\n values: [\"toggleitem\", \"togglegroup\"],\n dflt: \"togglegroup\",\n editType: \"legend\"\n },\n x: {\n valType: \"number\",\n editType: \"legend\"\n },\n xref: {\n valType: \"enumerated\",\n dflt: \"paper\",\n values: [\"container\", \"paper\"],\n editType: \"layoutstyle\"\n },\n xanchor: {\n valType: \"enumerated\",\n values: [\"auto\", \"left\", \"center\", \"right\"],\n dflt: \"left\",\n editType: \"legend\"\n },\n y: {\n valType: \"number\",\n editType: \"legend\"\n },\n yref: {\n valType: \"enumerated\",\n dflt: \"paper\",\n values: [\"container\", \"paper\"],\n editType: \"layoutstyle\"\n },\n yanchor: {\n valType: \"enumerated\",\n values: [\"auto\", \"top\", \"middle\", \"bottom\"],\n editType: \"legend\"\n },\n uirevision: {\n valType: \"any\",\n editType: \"none\"\n },\n valign: {\n valType: \"enumerated\",\n values: [\"top\", \"middle\", \"bottom\"],\n dflt: \"middle\",\n editType: \"legend\"\n },\n title: {\n text: {\n valType: \"string\",\n dflt: \"\",\n editType: \"legend\"\n },\n font: fontAttrs({\n editType: \"legend\"\n }),\n side: {\n valType: \"enumerated\",\n values: [\"top\", \"left\", \"top left\", \"top center\", \"top right\"],\n editType: \"legend\"\n },\n editType: \"legend\"\n },\n editType: \"legend\"\n };\n }\n });\n\n // src/components/legend/helpers.js\n var require_helpers3 = __commonJS({\n \"src/components/legend/helpers.js\"(exports) {\n \"use strict\";\n exports.isGrouped = function isGrouped(legendLayout) {\n return (legendLayout.traceorder || \"\").indexOf(\"grouped\") !== -1;\n };\n exports.isVertical = function isVertical(legendLayout) {\n return legendLayout.orientation !== \"h\";\n };\n exports.isReversed = function isReversed(legendLayout) {\n return (legendLayout.traceorder || \"\").indexOf(\"reversed\") !== -1;\n };\n }\n });\n\n // src/components/legend/defaults.js\n var require_defaults3 = __commonJS({\n \"src/components/legend/defaults.js\"(exports, module) {\n \"use strict\";\n var Registry = require_registry();\n var Lib = require_lib();\n var Template = require_plot_template();\n var plotsAttrs = require_attributes2();\n var attributes = require_attributes9();\n var basePlotLayoutAttributes = require_layout_attributes2();\n var helpers = require_helpers3();\n function groupDefaults(legendId, layoutIn, layoutOut, fullData) {\n var containerIn = layoutIn[legendId] || {};\n var containerOut = Template.newContainer(layoutOut, legendId);\n function coerce(attr, dflt) {\n return Lib.coerce(containerIn, containerOut, attributes, attr, dflt);\n }\n var itemFont = Lib.coerceFont(coerce, \"font\", layoutOut.font);\n coerce(\"bgcolor\", layoutOut.paper_bgcolor);\n coerce(\"bordercolor\");\n var visible = coerce(\"visible\");\n if (!visible) return;\n var trace;\n var traceCoerce = function(attr, dflt) {\n var traceIn = trace._input;\n var traceOut = trace;\n return Lib.coerce(traceIn, traceOut, plotsAttrs, attr, dflt);\n };\n var globalFont = layoutOut.font || {};\n var grouptitlefont = Lib.coerceFont(coerce, \"grouptitlefont\", globalFont, { overrideDflt: {\n size: Math.round(globalFont.size * 1.1)\n } });\n var legendTraceCount = 0;\n var legendReallyHasATrace = false;\n var defaultOrder = \"normal\";\n var shapesWithLegend = (layoutOut.shapes || []).filter(function(d) {\n return d.showlegend;\n });\n var allLegendItems = fullData.concat(shapesWithLegend).filter(function(d) {\n return legendId === (d.legend || \"legend\");\n });\n for (var i = 0; i < allLegendItems.length; i++) {\n trace = allLegendItems[i];\n if (!trace.visible) continue;\n var isShape = trace._isShape;\n if (trace.showlegend || trace._dfltShowLegend && !(trace._module && trace._module.attributes && trace._module.attributes.showlegend && trace._module.attributes.showlegend.dflt === false)) {\n legendTraceCount++;\n if (trace.showlegend) {\n legendReallyHasATrace = true;\n if (!isShape && Registry.traceIs(trace, \"pie-like\") || trace._input.showlegend === true) {\n legendTraceCount++;\n }\n }\n Lib.coerceFont(traceCoerce, \"legendgrouptitle.font\", grouptitlefont);\n }\n if (!isShape && Registry.traceIs(trace, \"bar\") && layoutOut.barmode === \"stack\" || [\"tonextx\", \"tonexty\"].indexOf(trace.fill) !== -1) {\n defaultOrder = helpers.isGrouped({ traceorder: defaultOrder }) ? \"grouped+reversed\" : \"reversed\";\n }\n if (trace.legendgroup !== void 0 && trace.legendgroup !== \"\") {\n defaultOrder = helpers.isReversed({ traceorder: defaultOrder }) ? \"reversed+grouped\" : \"grouped\";\n }\n }\n var showLegend = Lib.coerce(\n layoutIn,\n layoutOut,\n basePlotLayoutAttributes,\n \"showlegend\",\n legendReallyHasATrace && legendTraceCount > (legendId === \"legend\" ? 1 : 0)\n );\n if (showLegend === false) layoutOut[legendId] = void 0;\n if (showLegend === false && !containerIn.uirevision) return;\n coerce(\"uirevision\", layoutOut.uirevision);\n if (showLegend === false) return;\n coerce(\"borderwidth\");\n var orientation = coerce(\"orientation\");\n var yref = coerce(\"yref\");\n var xref = coerce(\"xref\");\n var isHorizontal = orientation === \"h\";\n var isPaperY = yref === \"paper\";\n var isPaperX = xref === \"paper\";\n var defaultX, defaultY, defaultYAnchor;\n var defaultXAnchor = \"left\";\n if (isHorizontal) {\n defaultX = 0;\n if (Registry.getComponentMethod(\"rangeslider\", \"isVisible\")(layoutIn.xaxis)) {\n if (isPaperY) {\n defaultY = 1.1;\n defaultYAnchor = \"bottom\";\n } else {\n defaultY = 1;\n defaultYAnchor = \"top\";\n }\n } else {\n if (isPaperY) {\n defaultY = -0.1;\n defaultYAnchor = \"top\";\n } else {\n defaultY = 0;\n defaultYAnchor = \"bottom\";\n }\n }\n } else {\n defaultY = 1;\n defaultYAnchor = \"auto\";\n if (isPaperX) {\n defaultX = 1.02;\n } else {\n defaultX = 1;\n defaultXAnchor = \"right\";\n }\n }\n Lib.coerce(containerIn, containerOut, {\n x: {\n valType: \"number\",\n editType: \"legend\",\n min: isPaperX ? -2 : 0,\n max: isPaperX ? 3 : 1,\n dflt: defaultX\n }\n }, \"x\");\n Lib.coerce(containerIn, containerOut, {\n y: {\n valType: \"number\",\n editType: \"legend\",\n min: isPaperY ? -2 : 0,\n max: isPaperY ? 3 : 1,\n dflt: defaultY\n }\n }, \"y\");\n coerce(\"traceorder\", defaultOrder);\n if (helpers.isGrouped(layoutOut[legendId])) coerce(\"tracegroupgap\");\n coerce(\"entrywidth\");\n coerce(\"entrywidthmode\");\n coerce(\"indentation\");\n coerce(\"itemsizing\");\n coerce(\"itemwidth\");\n coerce(\"itemclick\");\n coerce(\"itemdoubleclick\");\n coerce(\"groupclick\");\n coerce(\"xanchor\", defaultXAnchor);\n coerce(\"yanchor\", defaultYAnchor);\n coerce(\"valign\");\n Lib.noneOrAll(containerIn, containerOut, [\"x\", \"y\"]);\n var titleText = coerce(\"title.text\");\n if (titleText) {\n coerce(\"title.side\", isHorizontal ? \"left\" : \"top\");\n var dfltTitleFont = Lib.extendFlat({}, itemFont, {\n size: Lib.bigFont(itemFont.size)\n });\n Lib.coerceFont(coerce, \"title.font\", dfltTitleFont);\n }\n }\n module.exports = function legendDefaults(layoutIn, layoutOut, fullData) {\n var i;\n var allLegendsData = fullData.slice();\n var shapes = layoutOut.shapes;\n if (shapes) {\n for (i = 0; i < shapes.length; i++) {\n var shape = shapes[i];\n if (!shape.showlegend) continue;\n var mockTrace = {\n _input: shape._input,\n visible: shape.visible,\n showlegend: shape.showlegend,\n legend: shape.legend\n };\n allLegendsData.push(mockTrace);\n }\n }\n var legends = [\"legend\"];\n for (i = 0; i < allLegendsData.length; i++) {\n Lib.pushUnique(legends, allLegendsData[i].legend);\n }\n layoutOut._legends = [];\n for (i = 0; i < legends.length; i++) {\n var legendId = legends[i];\n groupDefaults(legendId, layoutIn, layoutOut, allLegendsData);\n if (layoutOut[legendId] && layoutOut[legendId].visible) {\n layoutOut[legendId]._id = legendId;\n }\n layoutOut._legends.push(legendId);\n }\n };\n }\n });\n\n // src/components/legend/handle_click.js\n var require_handle_click = __commonJS({\n \"src/components/legend/handle_click.js\"(exports, module) {\n \"use strict\";\n var Registry = require_registry();\n var Lib = require_lib();\n var pushUnique = Lib.pushUnique;\n var SHOWISOLATETIP = true;\n module.exports = function handleClick(g, gd, numClicks) {\n var fullLayout = gd._fullLayout;\n if (gd._dragged || gd._editing) return;\n var itemClick = fullLayout.legend.itemclick;\n var itemDoubleClick = fullLayout.legend.itemdoubleclick;\n var groupClick = fullLayout.legend.groupclick;\n if (numClicks === 1 && itemClick === \"toggle\" && itemDoubleClick === \"toggleothers\" && SHOWISOLATETIP && gd.data && gd._context.showTips) {\n Lib.notifier(Lib._(gd, \"Double-click on legend to isolate one trace\"), \"long\");\n SHOWISOLATETIP = false;\n } else {\n SHOWISOLATETIP = false;\n }\n var mode;\n if (numClicks === 1) mode = itemClick;\n else if (numClicks === 2) mode = itemDoubleClick;\n if (!mode) return;\n var toggleGroup = groupClick === \"togglegroup\";\n var hiddenSlices = fullLayout.hiddenlabels ? fullLayout.hiddenlabels.slice() : [];\n var legendItem = g.data()[0][0];\n if (legendItem.groupTitle && legendItem.noClick) return;\n var fullData = gd._fullData;\n var shapesWithLegend = (fullLayout.shapes || []).filter(function(d2) {\n return d2.showlegend;\n });\n var allLegendItems = fullData.concat(shapesWithLegend);\n var fullTrace = legendItem.trace;\n if (fullTrace._isShape) {\n fullTrace = fullTrace._fullInput;\n }\n var legendgroup = fullTrace.legendgroup;\n var i, j, kcont, key, keys, val;\n var dataUpdate = {};\n var dataIndices = [];\n var carrs = [];\n var carrIdx = [];\n function insertDataUpdate(traceIndex, value) {\n var attrIndex = dataIndices.indexOf(traceIndex);\n var valueArray = dataUpdate.visible;\n if (!valueArray) {\n valueArray = dataUpdate.visible = [];\n }\n if (dataIndices.indexOf(traceIndex) === -1) {\n dataIndices.push(traceIndex);\n attrIndex = dataIndices.length - 1;\n }\n valueArray[attrIndex] = value;\n return attrIndex;\n }\n var updatedShapes = (fullLayout.shapes || []).map(function(d2) {\n return d2._input;\n });\n var shapesUpdated = false;\n function insertShapesUpdate(shapeIndex, value) {\n updatedShapes[shapeIndex].visible = value;\n shapesUpdated = true;\n }\n function setVisibility(fullTrace2, visibility) {\n if (legendItem.groupTitle && !toggleGroup) return;\n var fullInput2 = fullTrace2._fullInput || fullTrace2;\n var isShape2 = fullInput2._isShape;\n var index = fullInput2.index;\n if (index === void 0) index = fullInput2._index;\n var nextVisibility2 = fullInput2.visible === false ? false : visibility;\n if (isShape2) {\n insertShapesUpdate(index, nextVisibility2);\n } else {\n insertDataUpdate(index, nextVisibility2);\n }\n }\n var thisLegend = fullTrace.legend;\n var fullInput = fullTrace._fullInput;\n var isShape = fullInput && fullInput._isShape;\n if (!isShape && Registry.traceIs(fullTrace, \"pie-like\")) {\n var thisLabel = legendItem.label;\n var thisLabelIndex = hiddenSlices.indexOf(thisLabel);\n if (mode === \"toggle\") {\n if (thisLabelIndex === -1) hiddenSlices.push(thisLabel);\n else hiddenSlices.splice(thisLabelIndex, 1);\n } else if (mode === \"toggleothers\") {\n var changed = thisLabelIndex !== -1;\n var unhideList = [];\n for (i = 0; i < gd.calcdata.length; i++) {\n var cdi = gd.calcdata[i];\n for (j = 0; j < cdi.length; j++) {\n var d = cdi[j];\n var dLabel = d.label;\n if (thisLegend === cdi[0].trace.legend) {\n if (thisLabel !== dLabel) {\n if (hiddenSlices.indexOf(dLabel) === -1) changed = true;\n pushUnique(hiddenSlices, dLabel);\n unhideList.push(dLabel);\n }\n }\n }\n }\n if (!changed) {\n for (var q = 0; q < unhideList.length; q++) {\n var pos = hiddenSlices.indexOf(unhideList[q]);\n if (pos !== -1) {\n hiddenSlices.splice(pos, 1);\n }\n }\n }\n }\n Registry.call(\"_guiRelayout\", gd, \"hiddenlabels\", hiddenSlices);\n } else {\n var hasLegendgroup = legendgroup && legendgroup.length;\n var traceIndicesInGroup = [];\n var tracei;\n if (hasLegendgroup) {\n for (i = 0; i < allLegendItems.length; i++) {\n tracei = allLegendItems[i];\n if (!tracei.visible) continue;\n if (tracei.legendgroup === legendgroup) {\n traceIndicesInGroup.push(i);\n }\n }\n }\n if (mode === \"toggle\") {\n var nextVisibility;\n switch (fullTrace.visible) {\n case true:\n nextVisibility = \"legendonly\";\n break;\n case false:\n nextVisibility = false;\n break;\n case \"legendonly\":\n nextVisibility = true;\n break;\n }\n if (hasLegendgroup) {\n if (toggleGroup) {\n for (i = 0; i < allLegendItems.length; i++) {\n var item = allLegendItems[i];\n if (item.visible !== false && item.legendgroup === legendgroup) {\n setVisibility(item, nextVisibility);\n }\n }\n } else {\n setVisibility(fullTrace, nextVisibility);\n }\n } else {\n setVisibility(fullTrace, nextVisibility);\n }\n } else if (mode === \"toggleothers\") {\n var isClicked, isInGroup, notInLegend, otherState, _item;\n var isIsolated = true;\n for (i = 0; i < allLegendItems.length; i++) {\n _item = allLegendItems[i];\n isClicked = _item === fullTrace;\n notInLegend = _item.showlegend !== true;\n if (isClicked || notInLegend) continue;\n isInGroup = hasLegendgroup && _item.legendgroup === legendgroup;\n if (!isInGroup && _item.legend === thisLegend && _item.visible === true && !Registry.traceIs(_item, \"notLegendIsolatable\")) {\n isIsolated = false;\n break;\n }\n }\n for (i = 0; i < allLegendItems.length; i++) {\n _item = allLegendItems[i];\n if (_item.visible === false || _item.legend !== thisLegend) continue;\n if (Registry.traceIs(_item, \"notLegendIsolatable\")) {\n continue;\n }\n switch (fullTrace.visible) {\n case \"legendonly\":\n setVisibility(_item, true);\n break;\n case true:\n otherState = isIsolated ? true : \"legendonly\";\n isClicked = _item === fullTrace;\n notInLegend = _item.showlegend !== true && !_item.legendgroup;\n isInGroup = isClicked || hasLegendgroup && _item.legendgroup === legendgroup;\n setVisibility(_item, isInGroup || notInLegend ? true : otherState);\n break;\n }\n }\n }\n for (i = 0; i < carrs.length; i++) {\n kcont = carrs[i];\n if (!kcont) continue;\n var update = kcont.constructUpdate();\n var updateKeys = Object.keys(update);\n for (j = 0; j < updateKeys.length; j++) {\n key = updateKeys[j];\n val = dataUpdate[key] = dataUpdate[key] || [];\n val[carrIdx[i]] = update[key];\n }\n }\n keys = Object.keys(dataUpdate);\n for (i = 0; i < keys.length; i++) {\n key = keys[i];\n for (j = 0; j < dataIndices.length; j++) {\n if (!dataUpdate[key].hasOwnProperty(j)) {\n dataUpdate[key][j] = void 0;\n }\n }\n }\n if (shapesUpdated) {\n Registry.call(\"_guiUpdate\", gd, dataUpdate, { shapes: updatedShapes }, dataIndices);\n } else {\n Registry.call(\"_guiRestyle\", gd, dataUpdate, dataIndices);\n }\n }\n };\n }\n });\n\n // src/components/legend/constants.js\n var require_constants3 = __commonJS({\n \"src/components/legend/constants.js\"(exports, module) {\n \"use strict\";\n module.exports = {\n scrollBarWidth: 6,\n scrollBarMinHeight: 20,\n scrollBarColor: \"#808BA4\",\n scrollBarMargin: 4,\n scrollBarEnterAttrs: { rx: 20, ry: 3, width: 0, height: 0 },\n // number of px between legend title and (left) side of legend (always in x direction and from inner border)\n titlePad: 2,\n // number of px between each legend item (x and/or y direction)\n itemGap: 5\n };\n }\n });\n\n // src/components/legend/get_legend_data.js\n var require_get_legend_data = __commonJS({\n \"src/components/legend/get_legend_data.js\"(exports, module) {\n \"use strict\";\n var Registry = require_registry();\n var helpers = require_helpers3();\n module.exports = function getLegendData(calcdata, opts, hasMultipleLegends) {\n var inHover = opts._inHover;\n var grouped = helpers.isGrouped(opts);\n var reversed = helpers.isReversed(opts);\n var lgroupToTraces = {};\n var lgroups = [];\n var hasOneNonBlankGroup = false;\n var slicesShown = {};\n var lgroupi = 0;\n var maxNameLength = 0;\n var i, j;\n function addOneItem(legendId, legendGroup, legendItem) {\n if (opts.visible === false) return;\n if (hasMultipleLegends && legendId !== opts._id) return;\n if (legendGroup === \"\" || !helpers.isGrouped(opts)) {\n var uniqueGroup = \"~~i\" + lgroupi;\n lgroups.push(uniqueGroup);\n lgroupToTraces[uniqueGroup] = [legendItem];\n lgroupi++;\n } else if (lgroups.indexOf(legendGroup) === -1) {\n lgroups.push(legendGroup);\n hasOneNonBlankGroup = true;\n lgroupToTraces[legendGroup] = [legendItem];\n } else {\n lgroupToTraces[legendGroup].push(legendItem);\n }\n }\n for (i = 0; i < calcdata.length; i++) {\n var cd = calcdata[i];\n var cd0 = cd[0];\n var trace = cd0.trace;\n var lid = trace.legend;\n var lgroup = trace.legendgroup;\n if (!inHover && (!trace.visible || !trace.showlegend)) continue;\n if (Registry.traceIs(trace, \"pie-like\")) {\n if (!slicesShown[lgroup]) slicesShown[lgroup] = {};\n for (j = 0; j < cd.length; j++) {\n var labelj = cd[j].label;\n if (!slicesShown[lgroup][labelj]) {\n addOneItem(lid, lgroup, {\n label: labelj,\n color: cd[j].color,\n i: cd[j].i,\n trace,\n pts: cd[j].pts\n });\n slicesShown[lgroup][labelj] = true;\n maxNameLength = Math.max(maxNameLength, (labelj || \"\").length);\n }\n }\n } else {\n addOneItem(lid, lgroup, cd0);\n maxNameLength = Math.max(maxNameLength, (trace.name || \"\").length);\n }\n }\n if (!lgroups.length) return [];\n var shouldCollapse = !hasOneNonBlankGroup || !grouped;\n var legendData = [];\n for (i = 0; i < lgroups.length; i++) {\n var t = lgroupToTraces[lgroups[i]];\n if (shouldCollapse) {\n legendData.push(t[0]);\n } else {\n legendData.push(t);\n }\n }\n if (shouldCollapse) legendData = [legendData];\n for (i = 0; i < legendData.length; i++) {\n var groupMinRank = Infinity;\n for (j = 0; j < legendData[i].length; j++) {\n var rank = legendData[i][j].trace.legendrank;\n if (groupMinRank > rank) groupMinRank = rank;\n }\n legendData[i][0]._groupMinRank = groupMinRank;\n legendData[i][0]._preGroupSort = i;\n }\n var orderFn1 = function(a, b) {\n return a[0]._groupMinRank - b[0]._groupMinRank || a[0]._preGroupSort - b[0]._preGroupSort;\n };\n var orderFn2 = function(a, b) {\n return a.trace.legendrank - b.trace.legendrank || a._preSort - b._preSort;\n };\n legendData.forEach(function(a, k) {\n a[0]._preGroupSort = k;\n });\n legendData.sort(orderFn1);\n for (i = 0; i < legendData.length; i++) {\n legendData[i].forEach(function(a, k) {\n a._preSort = k;\n });\n legendData[i].sort(orderFn2);\n var firstItemTrace = legendData[i][0].trace;\n var groupTitle = null;\n for (j = 0; j < legendData[i].length; j++) {\n var gt = legendData[i][j].trace.legendgrouptitle;\n if (gt && gt.text) {\n groupTitle = gt;\n if (inHover) gt.font = opts._groupTitleFont;\n break;\n }\n }\n if (reversed) legendData[i].reverse();\n if (groupTitle) {\n var hasPieLike = false;\n for (j = 0; j < legendData[i].length; j++) {\n if (Registry.traceIs(legendData[i][j].trace, \"pie-like\")) {\n hasPieLike = true;\n break;\n }\n }\n legendData[i].unshift({\n i: -1,\n groupTitle,\n noClick: hasPieLike,\n trace: {\n showlegend: firstItemTrace.showlegend,\n legendgroup: firstItemTrace.legendgroup,\n visible: opts.groupclick === \"toggleitem\" ? true : firstItemTrace.visible\n }\n });\n }\n for (j = 0; j < legendData[i].length; j++) {\n legendData[i][j] = [\n legendData[i][j]\n ];\n }\n }\n opts._lgroupsLength = legendData.length;\n opts._maxNameLength = maxNameLength;\n return legendData;\n };\n }\n });\n\n // src/traces/pie/helpers.js\n var require_helpers4 = __commonJS({\n \"src/traces/pie/helpers.js\"(exports) {\n \"use strict\";\n var Lib = require_lib();\n function format(vRounded) {\n return vRounded.indexOf(\"e\") !== -1 ? vRounded.replace(/[.]?0+e/, \"e\") : vRounded.indexOf(\".\") !== -1 ? vRounded.replace(/[.]?0+$/, \"\") : vRounded;\n }\n exports.formatPiePercent = function formatPiePercent(v, separators) {\n var vRounded = format((v * 100).toPrecision(3));\n return Lib.numSeparate(vRounded, separators) + \"%\";\n };\n exports.formatPieValue = function formatPieValue(v, separators) {\n var vRounded = format(v.toPrecision(10));\n return Lib.numSeparate(vRounded, separators);\n };\n exports.getFirstFilled = function getFirstFilled(array, indices) {\n if (!Lib.isArrayOrTypedArray(array)) return;\n for (var i = 0; i < indices.length; i++) {\n var v = array[indices[i]];\n if (v || v === 0 || v === \"\") return v;\n }\n };\n exports.castOption = function castOption(item, indices) {\n if (Lib.isArrayOrTypedArray(item)) return exports.getFirstFilled(item, indices);\n else if (item) return item;\n };\n exports.getRotationAngle = function(rotation) {\n return (rotation === \"auto\" ? 0 : rotation) * Math.PI / 180;\n };\n }\n });\n\n // src/traces/pie/fill_one.js\n var require_fill_one = __commonJS({\n \"src/traces/pie/fill_one.js\"(exports, module) {\n \"use strict\";\n var Drawing = require_drawing();\n var Color = require_color();\n module.exports = function fillOne(s, pt, trace, gd) {\n var pattern = trace.marker.pattern;\n if (pattern && pattern.shape) {\n Drawing.pointStyle(s, trace, gd, pt);\n } else {\n Color.fill(s, pt.color);\n }\n };\n }\n });\n\n // src/traces/pie/style_one.js\n var require_style_one = __commonJS({\n \"src/traces/pie/style_one.js\"(exports, module) {\n \"use strict\";\n var Color = require_color();\n var castOption = require_helpers4().castOption;\n var fillOne = require_fill_one();\n module.exports = function styleOne(s, pt, trace, gd) {\n var line = trace.marker.line;\n var lineColor = castOption(line.color, pt.pts) || Color.defaultLine;\n var lineWidth = castOption(line.width, pt.pts) || 0;\n s.call(fillOne, pt, trace, gd).style(\"stroke-width\", lineWidth).call(Color.stroke, lineColor);\n };\n }\n });\n\n // src/components/legend/style.js\n var require_style = __commonJS({\n \"src/components/legend/style.js\"(exports, module) {\n \"use strict\";\n var d3 = require_d3();\n var Registry = require_registry();\n var Lib = require_lib();\n var strTranslate = Lib.strTranslate;\n var Drawing = require_drawing();\n var Color = require_color();\n var extractOpts = require_helpers().extractOpts;\n var subTypes = require_subtypes();\n var stylePie = require_style_one();\n var pieCastOption = require_helpers4().castOption;\n var constants = require_constants3();\n var CST_MARKER_SIZE = 12;\n var CST_LINE_WIDTH = 5;\n var CST_MARKER_LINE_WIDTH = 2;\n var MAX_LINE_WIDTH = 10;\n var MAX_MARKER_LINE_WIDTH = 5;\n module.exports = function style(s, gd, legend) {\n var fullLayout = gd._fullLayout;\n if (!legend) legend = fullLayout.legend;\n var constantItemSizing = legend.itemsizing === \"constant\";\n var itemWidth = legend.itemwidth;\n var centerPos = (itemWidth + constants.itemGap * 2) / 2;\n var centerTransform = strTranslate(centerPos, 0);\n var boundLineWidth = function(mlw, cont, max, cst) {\n var v;\n if (mlw + 1) {\n v = mlw;\n } else if (cont && cont.width > 0) {\n v = cont.width;\n } else {\n return 0;\n }\n return constantItemSizing ? cst : Math.min(v, max);\n };\n s.each(function(d) {\n var traceGroup = d3.select(this);\n var layers = Lib.ensureSingle(traceGroup, \"g\", \"layers\");\n layers.style(\"opacity\", d[0].trace.opacity);\n var indentation = legend.indentation;\n var valign = legend.valign;\n var lineHeight = d[0].lineHeight;\n var height = d[0].height;\n if (valign === \"middle\" && indentation === 0 || !lineHeight || !height) {\n layers.attr(\"transform\", null);\n } else {\n var factor = { top: 1, bottom: -1 }[valign];\n var markerOffsetY = factor * (0.5 * (lineHeight - height + 3)) || 0;\n var markerOffsetX = legend.indentation;\n layers.attr(\"transform\", strTranslate(markerOffsetX, markerOffsetY));\n }\n var fill = layers.selectAll(\"g.legendfill\").data([d]);\n fill.enter().append(\"g\").classed(\"legendfill\", true);\n var line = layers.selectAll(\"g.legendlines\").data([d]);\n line.enter().append(\"g\").classed(\"legendlines\", true);\n var symbol = layers.selectAll(\"g.legendsymbols\").data([d]);\n symbol.enter().append(\"g\").classed(\"legendsymbols\", true);\n symbol.selectAll(\"g.legendpoints\").data([d]).enter().append(\"g\").classed(\"legendpoints\", true);\n }).each(styleSpatial).each(styleWaterfalls).each(styleFunnels).each(styleBars).each(styleBoxes).each(styleFunnelareas).each(stylePies).each(styleLines).each(stylePoints).each(styleCandles).each(styleOHLC);\n function styleLines(d) {\n var styleGuide = getStyleGuide(d);\n var showFill = styleGuide.showFill;\n var showLine = styleGuide.showLine;\n var showGradientLine = styleGuide.showGradientLine;\n var showGradientFill = styleGuide.showGradientFill;\n var anyFill = styleGuide.anyFill;\n var anyLine = styleGuide.anyLine;\n var d0 = d[0];\n var trace = d0.trace;\n var dMod, tMod;\n var cOpts = extractOpts(trace);\n var colorscale = cOpts.colorscale;\n var reversescale = cOpts.reversescale;\n var fillStyle = function(s2) {\n if (s2.size()) {\n if (showFill) {\n Drawing.fillGroupStyle(s2, gd, true);\n } else {\n var gradientID = \"legendfill-\" + trace.uid;\n Drawing.gradient(\n s2,\n gd,\n gradientID,\n getGradientDirection(reversescale),\n colorscale,\n \"fill\"\n );\n }\n }\n };\n var lineGradient = function(s2) {\n if (s2.size()) {\n var gradientID = \"legendline-\" + trace.uid;\n Drawing.lineGroupStyle(s2);\n Drawing.gradient(\n s2,\n gd,\n gradientID,\n getGradientDirection(reversescale),\n colorscale,\n \"stroke\"\n );\n }\n };\n var pathStart = subTypes.hasMarkers(trace) || !anyFill ? \"M5,0\" : (\n // with a line leave it slightly below center, to leave room for the\n // line thickness and because the line is usually more prominent\n anyLine ? \"M5,-2\" : \"M5,-3\"\n );\n var this3 = d3.select(this);\n var fill = this3.select(\".legendfill\").selectAll(\"path\").data(showFill || showGradientFill ? [d] : []);\n fill.enter().append(\"path\").classed(\"js-fill\", true);\n fill.exit().remove();\n fill.attr(\"d\", pathStart + \"h\" + itemWidth + \"v6h-\" + itemWidth + \"z\").call(fillStyle);\n if (showLine || showGradientLine) {\n var lw = boundLineWidth(void 0, trace.line, MAX_LINE_WIDTH, CST_LINE_WIDTH);\n tMod = Lib.minExtend(trace, { line: { width: lw } });\n dMod = [Lib.minExtend(d0, { trace: tMod })];\n }\n var line = this3.select(\".legendlines\").selectAll(\"path\").data(showLine || showGradientLine ? [dMod] : []);\n line.enter().append(\"path\").classed(\"js-line\", true);\n line.exit().remove();\n line.attr(\"d\", pathStart + (showGradientLine ? \"l\" + itemWidth + \",0.0001\" : \"h\" + itemWidth)).call(showLine ? Drawing.lineGroupStyle : lineGradient);\n }\n function stylePoints(d) {\n var styleGuide = getStyleGuide(d);\n var anyFill = styleGuide.anyFill;\n var anyLine = styleGuide.anyLine;\n var showLine = styleGuide.showLine;\n var showMarker = styleGuide.showMarker;\n var d0 = d[0];\n var trace = d0.trace;\n var showText = !showMarker && !anyLine && !anyFill && subTypes.hasText(trace);\n var dMod, tMod;\n function boundVal(attrIn, arrayToValFn, bounds, cst) {\n var valIn = Lib.nestedProperty(trace, attrIn).get();\n var valToBound = Lib.isArrayOrTypedArray(valIn) && arrayToValFn ? arrayToValFn(valIn) : valIn;\n if (constantItemSizing && valToBound && cst !== void 0) {\n valToBound = cst;\n }\n if (bounds) {\n if (valToBound < bounds[0]) return bounds[0];\n else if (valToBound > bounds[1]) return bounds[1];\n }\n return valToBound;\n }\n function pickFirst(array) {\n if (d0._distinct && d0.index && array[d0.index]) return array[d0.index];\n return array[0];\n }\n if (showMarker || showText || showLine) {\n var dEdit = {};\n var tEdit = {};\n if (showMarker) {\n dEdit.mc = boundVal(\"marker.color\", pickFirst);\n dEdit.mx = boundVal(\"marker.symbol\", pickFirst);\n dEdit.mo = boundVal(\"marker.opacity\", Lib.mean, [0.2, 1]);\n dEdit.mlc = boundVal(\"marker.line.color\", pickFirst);\n dEdit.mlw = boundVal(\"marker.line.width\", Lib.mean, [0, 5], CST_MARKER_LINE_WIDTH);\n tEdit.marker = {\n sizeref: 1,\n sizemin: 1,\n sizemode: \"diameter\"\n };\n var ms = boundVal(\"marker.size\", Lib.mean, [2, 16], CST_MARKER_SIZE);\n dEdit.ms = ms;\n tEdit.marker.size = ms;\n }\n if (showLine) {\n tEdit.line = {\n width: boundVal(\"line.width\", pickFirst, [0, 10], CST_LINE_WIDTH)\n };\n }\n if (showText) {\n dEdit.tx = \"Aa\";\n dEdit.tp = boundVal(\"textposition\", pickFirst);\n dEdit.ts = 10;\n dEdit.tc = boundVal(\"textfont.color\", pickFirst);\n dEdit.tf = boundVal(\"textfont.family\", pickFirst);\n dEdit.tw = boundVal(\"textfont.weight\", pickFirst);\n dEdit.ty = boundVal(\"textfont.style\", pickFirst);\n dEdit.tv = boundVal(\"textfont.variant\", pickFirst);\n dEdit.tC = boundVal(\"textfont.textcase\", pickFirst);\n dEdit.tE = boundVal(\"textfont.lineposition\", pickFirst);\n dEdit.tS = boundVal(\"textfont.shadow\", pickFirst);\n }\n dMod = [Lib.minExtend(d0, dEdit)];\n tMod = Lib.minExtend(trace, tEdit);\n tMod.selectedpoints = null;\n tMod.texttemplate = null;\n }\n var ptgroup = d3.select(this).select(\"g.legendpoints\");\n var pts = ptgroup.selectAll(\"path.scatterpts\").data(showMarker ? dMod : []);\n pts.enter().insert(\"path\", \":first-child\").classed(\"scatterpts\", true).attr(\"transform\", centerTransform);\n pts.exit().remove();\n pts.call(Drawing.pointStyle, tMod, gd);\n if (showMarker) dMod[0].mrc = 3;\n var txt = ptgroup.selectAll(\"g.pointtext\").data(showText ? dMod : []);\n txt.enter().append(\"g\").classed(\"pointtext\", true).append(\"text\").attr(\"transform\", centerTransform);\n txt.exit().remove();\n txt.selectAll(\"text\").call(Drawing.textPointStyle, tMod, gd);\n }\n function styleWaterfalls(d) {\n var trace = d[0].trace;\n var isWaterfall = trace.type === \"waterfall\";\n if (d[0]._distinct && isWaterfall) {\n var cont = d[0].trace[d[0].dir].marker;\n d[0].mc = cont.color;\n d[0].mlw = cont.line.width;\n d[0].mlc = cont.line.color;\n return styleBarLike(d, this, \"waterfall\");\n }\n var ptsData = [];\n if (trace.visible && isWaterfall) {\n ptsData = d[0].hasTotals ? [[\"increasing\", \"M-6,-6V6H0Z\"], [\"totals\", \"M6,6H0L-6,-6H-0Z\"], [\"decreasing\", \"M6,6V-6H0Z\"]] : [[\"increasing\", \"M-6,-6V6H6Z\"], [\"decreasing\", \"M6,6V-6H-6Z\"]];\n }\n var pts = d3.select(this).select(\"g.legendpoints\").selectAll(\"path.legendwaterfall\").data(ptsData);\n pts.enter().append(\"path\").classed(\"legendwaterfall\", true).attr(\"transform\", centerTransform).style(\"stroke-miterlimit\", 1);\n pts.exit().remove();\n pts.each(function(dd) {\n var pt = d3.select(this);\n var cont2 = trace[dd[0]].marker;\n var lw = boundLineWidth(void 0, cont2.line, MAX_MARKER_LINE_WIDTH, CST_MARKER_LINE_WIDTH);\n pt.attr(\"d\", dd[1]).style(\"stroke-width\", lw + \"px\").call(Color.fill, cont2.color);\n if (lw) {\n pt.call(Color.stroke, cont2.line.color);\n }\n });\n }\n function styleBars(d) {\n styleBarLike(d, this);\n }\n function styleFunnels(d) {\n styleBarLike(d, this, \"funnel\");\n }\n function styleBarLike(d, lThis, desiredType) {\n var trace = d[0].trace;\n var marker = trace.marker || {};\n var markerLine = marker.line || {};\n var pathStr = marker.cornerradius ? \"M6,3a3,3,0,0,1-3,3H-3a3,3,0,0,1-3-3V-3a3,3,0,0,1,3-3H3a3,3,0,0,1,3,3Z\" : (\n // Square with rounded corners\n \"M6,6H-6V-6H6Z\"\n );\n var isVisible = !desiredType ? Registry.traceIs(trace, \"bar\") : trace.visible && trace.type === desiredType;\n var barpath = d3.select(lThis).select(\"g.legendpoints\").selectAll(\"path.legend\" + desiredType).data(isVisible ? [d] : []);\n barpath.enter().append(\"path\").classed(\"legend\" + desiredType, true).attr(\"d\", pathStr).attr(\"transform\", centerTransform);\n barpath.exit().remove();\n barpath.each(function(d2) {\n var p = d3.select(this);\n var d0 = d2[0];\n var w = boundLineWidth(d0.mlw, marker.line, MAX_MARKER_LINE_WIDTH, CST_MARKER_LINE_WIDTH);\n p.style(\"stroke-width\", w + \"px\");\n var mcc = d0.mcc;\n if (!legend._inHover && \"mc\" in d0) {\n var cOpts = extractOpts(marker);\n var mid = cOpts.mid;\n if (mid === void 0) mid = (cOpts.max + cOpts.min) / 2;\n mcc = Drawing.tryColorscale(marker, \"\")(mid);\n }\n var fillColor = mcc || d0.mc || marker.color;\n var markerPattern = marker.pattern;\n var patternShape = markerPattern && Drawing.getPatternAttr(markerPattern.shape, 0, \"\");\n if (patternShape) {\n var patternBGColor = Drawing.getPatternAttr(markerPattern.bgcolor, 0, null);\n var patternFGColor = Drawing.getPatternAttr(markerPattern.fgcolor, 0, null);\n var patternFGOpacity = markerPattern.fgopacity;\n var patternSize = dimAttr(markerPattern.size, 8, 10);\n var patternSolidity = dimAttr(markerPattern.solidity, 0.5, 1);\n var patternID = \"legend-\" + trace.uid;\n p.call(\n Drawing.pattern,\n \"legend\",\n gd,\n patternID,\n patternShape,\n patternSize,\n patternSolidity,\n mcc,\n markerPattern.fillmode,\n patternBGColor,\n patternFGColor,\n patternFGOpacity\n );\n } else {\n p.call(Color.fill, fillColor);\n }\n if (w) Color.stroke(p, d0.mlc || markerLine.color);\n });\n }\n function styleBoxes(d) {\n var trace = d[0].trace;\n var pts = d3.select(this).select(\"g.legendpoints\").selectAll(\"path.legendbox\").data(trace.visible && Registry.traceIs(trace, \"box-violin\") ? [d] : []);\n pts.enter().append(\"path\").classed(\"legendbox\", true).attr(\"d\", \"M6,6H-6V-6H6Z\").attr(\"transform\", centerTransform);\n pts.exit().remove();\n pts.each(function() {\n var p = d3.select(this);\n if ((trace.boxpoints === \"all\" || trace.points === \"all\") && Color.opacity(trace.fillcolor) === 0 && Color.opacity((trace.line || {}).color) === 0) {\n var tMod = Lib.minExtend(trace, {\n marker: {\n size: constantItemSizing ? CST_MARKER_SIZE : Lib.constrain(trace.marker.size, 2, 16),\n sizeref: 1,\n sizemin: 1,\n sizemode: \"diameter\"\n }\n });\n pts.call(Drawing.pointStyle, tMod, gd);\n } else {\n var w = boundLineWidth(void 0, trace.line, MAX_MARKER_LINE_WIDTH, CST_MARKER_LINE_WIDTH);\n p.style(\"stroke-width\", w + \"px\").call(Color.fill, trace.fillcolor);\n if (w) Color.stroke(p, trace.line.color);\n }\n });\n }\n function styleCandles(d) {\n var trace = d[0].trace;\n var pts = d3.select(this).select(\"g.legendpoints\").selectAll(\"path.legendcandle\").data(trace.visible && trace.type === \"candlestick\" ? [d, d] : []);\n pts.enter().append(\"path\").classed(\"legendcandle\", true).attr(\"d\", function(_, i) {\n if (i) return \"M-15,0H-8M-8,6V-6H8Z\";\n return \"M15,0H8M8,-6V6H-8Z\";\n }).attr(\"transform\", centerTransform).style(\"stroke-miterlimit\", 1);\n pts.exit().remove();\n pts.each(function(_, i) {\n var p = d3.select(this);\n var cont = trace[i ? \"increasing\" : \"decreasing\"];\n var w = boundLineWidth(void 0, cont.line, MAX_MARKER_LINE_WIDTH, CST_MARKER_LINE_WIDTH);\n p.style(\"stroke-width\", w + \"px\").call(Color.fill, cont.fillcolor);\n if (w) Color.stroke(p, cont.line.color);\n });\n }\n function styleOHLC(d) {\n var trace = d[0].trace;\n var pts = d3.select(this).select(\"g.legendpoints\").selectAll(\"path.legendohlc\").data(trace.visible && trace.type === \"ohlc\" ? [d, d] : []);\n pts.enter().append(\"path\").classed(\"legendohlc\", true).attr(\"d\", function(_, i) {\n if (i) return \"M-15,0H0M-8,-6V0\";\n return \"M15,0H0M8,6V0\";\n }).attr(\"transform\", centerTransform).style(\"stroke-miterlimit\", 1);\n pts.exit().remove();\n pts.each(function(_, i) {\n var p = d3.select(this);\n var cont = trace[i ? \"increasing\" : \"decreasing\"];\n var w = boundLineWidth(void 0, cont.line, MAX_MARKER_LINE_WIDTH, CST_MARKER_LINE_WIDTH);\n p.style(\"fill\", \"none\").call(Drawing.dashLine, cont.line.dash, w);\n if (w) Color.stroke(p, cont.line.color);\n });\n }\n function stylePies(d) {\n stylePieLike(d, this, \"pie\");\n }\n function styleFunnelareas(d) {\n stylePieLike(d, this, \"funnelarea\");\n }\n function stylePieLike(d, lThis, desiredType) {\n var d0 = d[0];\n var trace = d0.trace;\n var isVisible = !desiredType ? Registry.traceIs(trace, desiredType) : trace.visible && trace.type === desiredType;\n var pts = d3.select(lThis).select(\"g.legendpoints\").selectAll(\"path.legend\" + desiredType).data(isVisible ? [d] : []);\n pts.enter().append(\"path\").classed(\"legend\" + desiredType, true).attr(\"d\", \"M6,6H-6V-6H6Z\").attr(\"transform\", centerTransform);\n pts.exit().remove();\n if (pts.size()) {\n var cont = trace.marker || {};\n var lw = boundLineWidth(pieCastOption(cont.line.width, d0.pts), cont.line, MAX_MARKER_LINE_WIDTH, CST_MARKER_LINE_WIDTH);\n var opt = \"pieLike\";\n var tMod = Lib.minExtend(trace, { marker: { line: { width: lw } } }, opt);\n var d0Mod = Lib.minExtend(d0, { trace: tMod }, opt);\n stylePie(pts, d0Mod, tMod, gd);\n }\n }\n function styleSpatial(d) {\n var trace = d[0].trace;\n var useGradient;\n var ptsData = [];\n if (trace.visible) {\n switch (trace.type) {\n case \"histogram2d\":\n case \"heatmap\":\n ptsData = [\n [\"M-15,-2V4H15V-2Z\"]\n // similar to contour\n ];\n useGradient = true;\n break;\n case \"choropleth\":\n case \"choroplethmapbox\":\n case \"choroplethmap\":\n ptsData = [\n [\"M-6,-6V6H6V-6Z\"]\n ];\n useGradient = true;\n break;\n case \"densitymapbox\":\n case \"densitymap\":\n ptsData = [\n [\"M-6,0 a6,6 0 1,0 12,0 a 6,6 0 1,0 -12,0\"]\n ];\n useGradient = \"radial\";\n break;\n case \"cone\":\n ptsData = [\n [\"M-6,2 A2,2 0 0,0 -6,6 V6L6,4Z\"],\n [\"M-6,-6 A2,2 0 0,0 -6,-2 L6,-4Z\"],\n [\"M-6,-2 A2,2 0 0,0 -6,2 L6,0Z\"]\n ];\n useGradient = false;\n break;\n case \"streamtube\":\n ptsData = [\n [\"M-6,2 A2,2 0 0,0 -6,6 H6 A2,2 0 0,1 6,2 Z\"],\n [\"M-6,-6 A2,2 0 0,0 -6,-2 H6 A2,2 0 0,1 6,-6 Z\"],\n [\"M-6,-2 A2,2 0 0,0 -6,2 H6 A2,2 0 0,1 6,-2 Z\"]\n ];\n useGradient = false;\n break;\n case \"surface\":\n ptsData = [\n [\"M-6,-6 A2,3 0 0,0 -6,0 H6 A2,3 0 0,1 6,-6 Z\"],\n [\"M-6,1 A2,3 0 0,1 -6,6 H6 A2,3 0 0,0 6,0 Z\"]\n ];\n useGradient = true;\n break;\n case \"mesh3d\":\n ptsData = [\n [\"M-6,6H0L-6,-6Z\"],\n [\"M6,6H0L6,-6Z\"],\n [\"M-6,-6H6L0,6Z\"]\n ];\n useGradient = false;\n break;\n case \"volume\":\n ptsData = [\n [\"M-6,6H0L-6,-6Z\"],\n [\"M6,6H0L6,-6Z\"],\n [\"M-6,-6H6L0,6Z\"]\n ];\n useGradient = true;\n break;\n case \"isosurface\":\n ptsData = [\n [\"M-6,6H0L-6,-6Z\"],\n [\"M6,6H0L6,-6Z\"],\n [\"M-6,-6 A12,24 0 0,0 6,-6 L0,6Z\"]\n ];\n useGradient = false;\n break;\n }\n }\n var pts = d3.select(this).select(\"g.legendpoints\").selectAll(\"path.legend3dandfriends\").data(ptsData);\n pts.enter().append(\"path\").classed(\"legend3dandfriends\", true).attr(\"transform\", centerTransform).style(\"stroke-miterlimit\", 1);\n pts.exit().remove();\n pts.each(function(dd, i) {\n var pt = d3.select(this);\n var cOpts = extractOpts(trace);\n var colorscale = cOpts.colorscale;\n var reversescale = cOpts.reversescale;\n var fillGradient = function(s2) {\n if (s2.size()) {\n var gradientID = \"legendfill-\" + trace.uid;\n Drawing.gradient(\n s2,\n gd,\n gradientID,\n getGradientDirection(reversescale, useGradient === \"radial\"),\n colorscale,\n \"fill\"\n );\n }\n };\n var fillColor;\n if (!colorscale) {\n var color = trace.vertexcolor || trace.facecolor || trace.color;\n fillColor = Lib.isArrayOrTypedArray(color) ? color[i] || color[0] : color;\n } else {\n if (!useGradient) {\n var len = colorscale.length;\n fillColor = i === 0 ? colorscale[reversescale ? len - 1 : 0][1] : (\n // minimum\n i === 1 ? colorscale[reversescale ? 0 : len - 1][1] : (\n // maximum\n colorscale[Math.floor((len - 1) / 2)][1]\n )\n );\n }\n }\n pt.attr(\"d\", dd[0]);\n if (fillColor) {\n pt.call(Color.fill, fillColor);\n } else {\n pt.call(fillGradient);\n }\n });\n }\n };\n function getGradientDirection(reversescale, isRadial) {\n var str = isRadial ? \"radial\" : \"horizontal\";\n return str + (reversescale ? \"\" : \"reversed\");\n }\n function getStyleGuide(d) {\n var trace = d[0].trace;\n var contours = trace.contours;\n var showLine = subTypes.hasLines(trace);\n var showMarker = subTypes.hasMarkers(trace);\n var showFill = trace.visible && trace.fill && trace.fill !== \"none\";\n var showGradientLine = false;\n var showGradientFill = false;\n if (contours) {\n var coloring = contours.coloring;\n if (coloring === \"lines\") {\n showGradientLine = true;\n } else {\n showLine = coloring === \"none\" || coloring === \"heatmap\" || contours.showlines;\n }\n if (contours.type === \"constraint\") {\n showFill = contours._operation !== \"=\";\n } else if (coloring === \"fill\" || coloring === \"heatmap\") {\n showGradientFill = true;\n }\n }\n return {\n showMarker,\n showLine,\n showFill,\n showGradientLine,\n showGradientFill,\n anyLine: showLine || showGradientLine,\n anyFill: showFill || showGradientFill\n };\n }\n function dimAttr(v, dflt, max) {\n if (v && Lib.isArrayOrTypedArray(v)) return dflt;\n if (v > max) return max;\n return v;\n }\n }\n });\n\n // src/components/legend/draw.js\n var require_draw = __commonJS({\n \"src/components/legend/draw.js\"(exports, module) {\n \"use strict\";\n var d3 = require_d3();\n var Lib = require_lib();\n var Plots = require_plots();\n var Registry = require_registry();\n var Events = require_events2();\n var dragElement = require_dragelement();\n var Drawing = require_drawing();\n var Color = require_color();\n var svgTextUtils = require_svg_text_utils();\n var handleClick = require_handle_click();\n var constants = require_constants3();\n var alignmentConstants = require_alignment();\n var LINE_SPACING = alignmentConstants.LINE_SPACING;\n var FROM_TL = alignmentConstants.FROM_TL;\n var FROM_BR = alignmentConstants.FROM_BR;\n var getLegendData = require_get_legend_data();\n var style = require_style();\n var helpers = require_helpers3();\n var MAIN_TITLE = 1;\n var LEGEND_PATTERN = /^legend[0-9]*$/;\n module.exports = function draw(gd, opts) {\n if (opts) {\n drawOne(gd, opts);\n } else {\n var fullLayout = gd._fullLayout;\n var newLegends = fullLayout._legends;\n var oldLegends = fullLayout._infolayer.selectAll('[class^=\"legend\"]');\n oldLegends.each(function() {\n var el = d3.select(this);\n var classes = el.attr(\"class\");\n var cls = classes.split(\" \")[0];\n if (cls.match(LEGEND_PATTERN) && newLegends.indexOf(cls) === -1) {\n el.remove();\n }\n });\n for (var i = 0; i < newLegends.length; i++) {\n var legendId = newLegends[i];\n var legendObj = gd._fullLayout[legendId];\n drawOne(gd, legendObj);\n }\n }\n };\n function horizontalAlignTitle(titleEl, legendObj, bw) {\n if (legendObj.title.side !== \"top center\" && legendObj.title.side !== \"top right\") return;\n var font = legendObj.title.font;\n var lineHeight = font.size * LINE_SPACING;\n var titleOffset = 0;\n var textNode = titleEl.node();\n var width = Drawing.bBox(textNode).width;\n if (legendObj.title.side === \"top center\") {\n titleOffset = 0.5 * (legendObj._width - 2 * bw - 2 * constants.titlePad - width);\n } else if (legendObj.title.side === \"top right\") {\n titleOffset = legendObj._width - 2 * bw - 2 * constants.titlePad - width;\n }\n svgTextUtils.positionText(\n titleEl,\n bw + constants.titlePad + titleOffset,\n bw + lineHeight\n );\n }\n function drawOne(gd, opts) {\n var legendObj = opts || {};\n var fullLayout = gd._fullLayout;\n var legendId = getId(legendObj);\n var clipId, layer;\n var inHover = legendObj._inHover;\n if (inHover) {\n layer = legendObj.layer;\n clipId = \"hover\";\n } else {\n layer = fullLayout._infolayer;\n clipId = legendId;\n }\n if (!layer) return;\n clipId += fullLayout._uid;\n if (!gd._legendMouseDownTime) gd._legendMouseDownTime = 0;\n var legendData;\n if (!inHover) {\n var calcdata = (gd.calcdata || []).slice();\n var shapes = fullLayout.shapes;\n for (var i = 0; i < shapes.length; i++) {\n var shape = shapes[i];\n if (!shape.showlegend) continue;\n var shapeLegend = {\n _isShape: true,\n _fullInput: shape,\n index: shape._index,\n name: shape.name || shape.label.text || \"shape \" + shape._index,\n legend: shape.legend,\n legendgroup: shape.legendgroup,\n legendgrouptitle: shape.legendgrouptitle,\n legendrank: shape.legendrank,\n legendwidth: shape.legendwidth,\n showlegend: shape.showlegend,\n visible: shape.visible,\n opacity: shape.opacity,\n mode: shape.type === \"line\" ? \"lines\" : \"markers\",\n line: shape.line,\n marker: {\n line: shape.line,\n color: shape.fillcolor,\n size: 12,\n symbol: shape.type === \"rect\" ? \"square\" : shape.type === \"circle\" ? \"circle\" : (\n // case of path\n \"hexagon2\"\n )\n }\n };\n calcdata.push([{ trace: shapeLegend }]);\n }\n legendData = fullLayout.showlegend && getLegendData(calcdata, legendObj, fullLayout._legends.length > 1);\n } else {\n if (!legendObj.entries) return;\n legendData = getLegendData(legendObj.entries, legendObj);\n }\n var hiddenSlices = fullLayout.hiddenlabels || [];\n if (!inHover && (!fullLayout.showlegend || !legendData.length)) {\n layer.selectAll(\".\" + legendId).remove();\n fullLayout._topdefs.select(\"#\" + clipId).remove();\n return Plots.autoMargin(gd, legendId);\n }\n var legend = Lib.ensureSingle(layer, \"g\", legendId, function(s) {\n if (!inHover) s.attr(\"pointer-events\", \"all\");\n });\n var clipPath = Lib.ensureSingleById(fullLayout._topdefs, \"clipPath\", clipId, function(s) {\n s.append(\"rect\");\n });\n var bg = Lib.ensureSingle(legend, \"rect\", \"bg\", function(s) {\n s.attr(\"shape-rendering\", \"crispEdges\");\n });\n bg.call(Color.stroke, legendObj.bordercolor).call(Color.fill, legendObj.bgcolor).style(\"stroke-width\", legendObj.borderwidth + \"px\");\n var scrollBox = Lib.ensureSingle(legend, \"g\", \"scrollbox\");\n var title = legendObj.title;\n legendObj._titleWidth = 0;\n legendObj._titleHeight = 0;\n var titleEl;\n if (title.text) {\n titleEl = Lib.ensureSingle(scrollBox, \"text\", legendId + \"titletext\");\n titleEl.attr(\"text-anchor\", \"start\").call(Drawing.font, title.font).text(title.text);\n textLayout(titleEl, scrollBox, gd, legendObj, MAIN_TITLE);\n } else {\n scrollBox.selectAll(\".\" + legendId + \"titletext\").remove();\n }\n var scrollBar = Lib.ensureSingle(legend, \"rect\", \"scrollbar\", function(s) {\n s.attr(constants.scrollBarEnterAttrs).call(Color.fill, constants.scrollBarColor);\n });\n var groups = scrollBox.selectAll(\"g.groups\").data(legendData);\n groups.enter().append(\"g\").attr(\"class\", \"groups\");\n groups.exit().remove();\n var traces = groups.selectAll(\"g.traces\").data(Lib.identity);\n traces.enter().append(\"g\").attr(\"class\", \"traces\");\n traces.exit().remove();\n traces.style(\"opacity\", function(d) {\n var trace = d[0].trace;\n if (Registry.traceIs(trace, \"pie-like\")) {\n return hiddenSlices.indexOf(d[0].label) !== -1 ? 0.5 : 1;\n } else {\n return trace.visible === \"legendonly\" ? 0.5 : 1;\n }\n }).each(function() {\n d3.select(this).call(drawTexts, gd, legendObj);\n }).call(style, gd, legendObj).each(function() {\n if (!inHover) d3.select(this).call(setupTraceToggle, gd, legendId);\n });\n Lib.syncOrAsync([\n Plots.previousPromises,\n function() {\n return computeLegendDimensions(gd, groups, traces, legendObj);\n },\n function() {\n var gs = fullLayout._size;\n var bw = legendObj.borderwidth;\n var isPaperX = legendObj.xref === \"paper\";\n var isPaperY = legendObj.yref === \"paper\";\n if (title.text) {\n horizontalAlignTitle(titleEl, legendObj, bw);\n }\n if (!inHover) {\n var lx, ly;\n if (isPaperX) {\n lx = gs.l + gs.w * legendObj.x - FROM_TL[getXanchor(legendObj)] * legendObj._width;\n } else {\n lx = fullLayout.width * legendObj.x - FROM_TL[getXanchor(legendObj)] * legendObj._width;\n }\n if (isPaperY) {\n ly = gs.t + gs.h * (1 - legendObj.y) - FROM_TL[getYanchor(legendObj)] * legendObj._effHeight;\n } else {\n ly = fullLayout.height * (1 - legendObj.y) - FROM_TL[getYanchor(legendObj)] * legendObj._effHeight;\n }\n var expMargin = expandMargin(gd, legendId, lx, ly);\n if (expMargin) return;\n if (fullLayout.margin.autoexpand) {\n var lx0 = lx;\n var ly0 = ly;\n lx = isPaperX ? Lib.constrain(lx, 0, fullLayout.width - legendObj._width) : lx0;\n ly = isPaperY ? Lib.constrain(ly, 0, fullLayout.height - legendObj._effHeight) : ly0;\n if (lx !== lx0) {\n Lib.log(\"Constrain \" + legendId + \".x to make legend fit inside graph\");\n }\n if (ly !== ly0) {\n Lib.log(\"Constrain \" + legendId + \".y to make legend fit inside graph\");\n }\n }\n Drawing.setTranslate(legend, lx, ly);\n }\n scrollBar.on(\".drag\", null);\n legend.on(\"wheel\", null);\n if (inHover || legendObj._height <= legendObj._maxHeight || gd._context.staticPlot) {\n var height = legendObj._effHeight;\n if (inHover) height = legendObj._height;\n bg.attr({\n width: legendObj._width - bw,\n height: height - bw,\n x: bw / 2,\n y: bw / 2\n });\n Drawing.setTranslate(scrollBox, 0, 0);\n clipPath.select(\"rect\").attr({\n width: legendObj._width - 2 * bw,\n height: height - 2 * bw,\n x: bw,\n y: bw\n });\n Drawing.setClipUrl(scrollBox, clipId, gd);\n Drawing.setRect(scrollBar, 0, 0, 0, 0);\n delete legendObj._scrollY;\n } else {\n var scrollBarHeight = Math.max(\n constants.scrollBarMinHeight,\n legendObj._effHeight * legendObj._effHeight / legendObj._height\n );\n var scrollBarYMax = legendObj._effHeight - scrollBarHeight - 2 * constants.scrollBarMargin;\n var scrollBoxYMax = legendObj._height - legendObj._effHeight;\n var scrollRatio = scrollBarYMax / scrollBoxYMax;\n var scrollBoxY = Math.min(legendObj._scrollY || 0, scrollBoxYMax);\n bg.attr({\n width: legendObj._width - 2 * bw + constants.scrollBarWidth + constants.scrollBarMargin,\n height: legendObj._effHeight - bw,\n x: bw / 2,\n y: bw / 2\n });\n clipPath.select(\"rect\").attr({\n width: legendObj._width - 2 * bw + constants.scrollBarWidth + constants.scrollBarMargin,\n height: legendObj._effHeight - 2 * bw,\n x: bw,\n y: bw + scrollBoxY\n });\n Drawing.setClipUrl(scrollBox, clipId, gd);\n scrollHandler(scrollBoxY, scrollBarHeight, scrollRatio);\n legend.on(\"wheel\", function() {\n scrollBoxY = Lib.constrain(\n legendObj._scrollY + d3.event.deltaY / scrollBarYMax * scrollBoxYMax,\n 0,\n scrollBoxYMax\n );\n scrollHandler(scrollBoxY, scrollBarHeight, scrollRatio);\n if (scrollBoxY !== 0 && scrollBoxY !== scrollBoxYMax) {\n d3.event.preventDefault();\n }\n });\n var eventY0, eventY1, scrollBoxY0;\n var getScrollBarDragY = function(scrollBoxY02, eventY02, eventY12) {\n var y = (eventY12 - eventY02) / scrollRatio + scrollBoxY02;\n return Lib.constrain(y, 0, scrollBoxYMax);\n };\n var getNaturalDragY = function(scrollBoxY02, eventY02, eventY12) {\n var y = (eventY02 - eventY12) / scrollRatio + scrollBoxY02;\n return Lib.constrain(y, 0, scrollBoxYMax);\n };\n var scrollBarDrag = d3.behavior.drag().on(\"dragstart\", function() {\n var e = d3.event.sourceEvent;\n if (e.type === \"touchstart\") {\n eventY0 = e.changedTouches[0].clientY;\n } else {\n eventY0 = e.clientY;\n }\n scrollBoxY0 = scrollBoxY;\n }).on(\"drag\", function() {\n var e = d3.event.sourceEvent;\n if (e.buttons === 2 || e.ctrlKey) return;\n if (e.type === \"touchmove\") {\n eventY1 = e.changedTouches[0].clientY;\n } else {\n eventY1 = e.clientY;\n }\n scrollBoxY = getScrollBarDragY(scrollBoxY0, eventY0, eventY1);\n scrollHandler(scrollBoxY, scrollBarHeight, scrollRatio);\n });\n scrollBar.call(scrollBarDrag);\n var scrollBoxTouchDrag = d3.behavior.drag().on(\"dragstart\", function() {\n var e = d3.event.sourceEvent;\n if (e.type === \"touchstart\") {\n eventY0 = e.changedTouches[0].clientY;\n scrollBoxY0 = scrollBoxY;\n }\n }).on(\"drag\", function() {\n var e = d3.event.sourceEvent;\n if (e.type === \"touchmove\") {\n eventY1 = e.changedTouches[0].clientY;\n scrollBoxY = getNaturalDragY(scrollBoxY0, eventY0, eventY1);\n scrollHandler(scrollBoxY, scrollBarHeight, scrollRatio);\n }\n });\n scrollBox.call(scrollBoxTouchDrag);\n }\n function scrollHandler(scrollBoxY2, scrollBarHeight2, scrollRatio2) {\n legendObj._scrollY = gd._fullLayout[legendId]._scrollY = scrollBoxY2;\n Drawing.setTranslate(scrollBox, 0, -scrollBoxY2);\n Drawing.setRect(\n scrollBar,\n legendObj._width,\n constants.scrollBarMargin + scrollBoxY2 * scrollRatio2,\n constants.scrollBarWidth,\n scrollBarHeight2\n );\n clipPath.select(\"rect\").attr(\"y\", bw + scrollBoxY2);\n }\n if (gd._context.edits.legendPosition) {\n var xf, yf, x0, y0;\n legend.classed(\"cursor-move\", true);\n dragElement.init({\n element: legend.node(),\n gd,\n prepFn: function(e) {\n if (e.target === scrollBar.node()) {\n return;\n }\n var transform = Drawing.getTranslate(legend);\n x0 = transform.x;\n y0 = transform.y;\n },\n moveFn: function(dx, dy) {\n if (x0 !== void 0 && y0 !== void 0) {\n var newX = x0 + dx;\n var newY = y0 + dy;\n Drawing.setTranslate(legend, newX, newY);\n xf = dragElement.align(newX, legendObj._width, gs.l, gs.l + gs.w, legendObj.xanchor);\n yf = dragElement.align(newY + legendObj._height, -legendObj._height, gs.t + gs.h, gs.t, legendObj.yanchor);\n }\n },\n doneFn: function() {\n if (xf !== void 0 && yf !== void 0) {\n var obj = {};\n obj[legendId + \".x\"] = xf;\n obj[legendId + \".y\"] = yf;\n Registry.call(\"_guiRelayout\", gd, obj);\n }\n },\n clickFn: function(numClicks, e) {\n var clickedTrace = layer.selectAll(\"g.traces\").filter(function() {\n var bbox = this.getBoundingClientRect();\n return e.clientX >= bbox.left && e.clientX <= bbox.right && e.clientY >= bbox.top && e.clientY <= bbox.bottom;\n });\n if (clickedTrace.size() > 0) {\n clickOrDoubleClick(gd, legend, clickedTrace, numClicks, e);\n }\n }\n });\n }\n }\n ], gd);\n }\n function getTraceWidth(d, legendObj, textGap) {\n var legendItem = d[0];\n var legendWidth = legendItem.width;\n var mode = legendObj.entrywidthmode;\n var traceLegendWidth = legendItem.trace.legendwidth || legendObj.entrywidth;\n if (mode === \"fraction\") return legendObj._maxWidth * traceLegendWidth;\n return textGap + (traceLegendWidth || legendWidth);\n }\n function clickOrDoubleClick(gd, legend, legendItem, numClicks, evt) {\n var trace = legendItem.data()[0][0].trace;\n var evtData = {\n event: evt,\n node: legendItem.node(),\n curveNumber: trace.index,\n expandedIndex: trace.index,\n data: gd.data,\n layout: gd.layout,\n frames: gd._transitionData._frames,\n config: gd._context,\n fullData: gd._fullData,\n fullLayout: gd._fullLayout\n };\n if (trace._group) {\n evtData.group = trace._group;\n }\n if (Registry.traceIs(trace, \"pie-like\")) {\n evtData.label = legendItem.datum()[0].label;\n }\n var clickVal = Events.triggerHandler(gd, \"plotly_legendclick\", evtData);\n if (numClicks === 1) {\n if (clickVal === false) return;\n legend._clickTimeout = setTimeout(function() {\n if (!gd._fullLayout) return;\n handleClick(legendItem, gd, numClicks);\n }, gd._context.doubleClickDelay);\n } else if (numClicks === 2) {\n if (legend._clickTimeout) clearTimeout(legend._clickTimeout);\n gd._legendMouseDownTime = 0;\n var dblClickVal = Events.triggerHandler(gd, \"plotly_legenddoubleclick\", evtData);\n if (dblClickVal !== false && clickVal !== false) handleClick(legendItem, gd, numClicks);\n }\n }\n function drawTexts(g, gd, legendObj) {\n var legendId = getId(legendObj);\n var legendItem = g.data()[0][0];\n var trace = legendItem.trace;\n var isPieLike = Registry.traceIs(trace, \"pie-like\");\n var isEditable = !legendObj._inHover && gd._context.edits.legendText && !isPieLike;\n var maxNameLength = legendObj._maxNameLength;\n var name, font;\n if (legendItem.groupTitle) {\n name = legendItem.groupTitle.text;\n font = legendItem.groupTitle.font;\n } else {\n font = legendObj.font;\n if (!legendObj.entries) {\n name = isPieLike ? legendItem.label : trace.name;\n if (trace._meta) {\n name = Lib.templateString(name, trace._meta);\n }\n } else {\n name = legendItem.text;\n }\n }\n var textEl = Lib.ensureSingle(g, \"text\", legendId + \"text\");\n textEl.attr(\"text-anchor\", \"start\").call(Drawing.font, font).text(isEditable ? ensureLength(name, maxNameLength) : name);\n var textGap = legendObj.indentation + legendObj.itemwidth + constants.itemGap * 2;\n svgTextUtils.positionText(textEl, textGap, 0);\n if (isEditable) {\n textEl.call(svgTextUtils.makeEditable, { gd, text: name }).call(textLayout, g, gd, legendObj).on(\"edit\", function(newName) {\n this.text(ensureLength(newName, maxNameLength)).call(textLayout, g, gd, legendObj);\n var fullInput = legendItem.trace._fullInput || {};\n var update = {};\n update.name = newName;\n if (fullInput._isShape) {\n return Registry.call(\"_guiRelayout\", gd, \"shapes[\" + trace.index + \"].name\", update.name);\n } else {\n return Registry.call(\"_guiRestyle\", gd, update, trace.index);\n }\n });\n } else {\n textLayout(textEl, g, gd, legendObj);\n }\n }\n function ensureLength(str, maxLength) {\n var targetLength = Math.max(4, maxLength);\n if (str && str.trim().length >= targetLength / 2) return str;\n str = str || \"\";\n for (var i = targetLength - str.length; i > 0; i--) str += \" \";\n return str;\n }\n function setupTraceToggle(g, gd, legendId) {\n var doubleClickDelay = gd._context.doubleClickDelay;\n var newMouseDownTime;\n var numClicks = 1;\n var traceToggle = Lib.ensureSingle(g, \"rect\", legendId + \"toggle\", function(s) {\n if (!gd._context.staticPlot) {\n s.style(\"cursor\", \"pointer\").attr(\"pointer-events\", \"all\");\n }\n s.call(Color.fill, \"rgba(0,0,0,0)\");\n });\n if (gd._context.staticPlot) return;\n traceToggle.on(\"mousedown\", function() {\n newMouseDownTime = (/* @__PURE__ */ new Date()).getTime();\n if (newMouseDownTime - gd._legendMouseDownTime < doubleClickDelay) {\n numClicks += 1;\n } else {\n numClicks = 1;\n gd._legendMouseDownTime = newMouseDownTime;\n }\n });\n traceToggle.on(\"mouseup\", function() {\n if (gd._dragged || gd._editing) return;\n var legend = gd._fullLayout[legendId];\n if ((/* @__PURE__ */ new Date()).getTime() - gd._legendMouseDownTime > doubleClickDelay) {\n numClicks = Math.max(numClicks - 1, 1);\n }\n clickOrDoubleClick(gd, legend, g, numClicks, d3.event);\n });\n }\n function textLayout(s, g, gd, legendObj, aTitle) {\n if (legendObj._inHover) s.attr(\"data-notex\", true);\n svgTextUtils.convertToTspans(s, gd, function() {\n computeTextDimensions(g, gd, legendObj, aTitle);\n });\n }\n function computeTextDimensions(g, gd, legendObj, aTitle) {\n var legendItem = g.data()[0][0];\n if (!legendObj._inHover && legendItem && !legendItem.trace.showlegend) {\n g.remove();\n return;\n }\n var mathjaxGroup = g.select(\"g[class*=math-group]\");\n var mathjaxNode = mathjaxGroup.node();\n var legendId = getId(legendObj);\n if (!legendObj) {\n legendObj = gd._fullLayout[legendId];\n }\n var bw = legendObj.borderwidth;\n var font;\n if (aTitle === MAIN_TITLE) {\n font = legendObj.title.font;\n } else if (legendItem.groupTitle) {\n font = legendItem.groupTitle.font;\n } else {\n font = legendObj.font;\n }\n var lineHeight = font.size * LINE_SPACING;\n var height, width;\n if (mathjaxNode) {\n var mathjaxBB = Drawing.bBox(mathjaxNode);\n height = mathjaxBB.height;\n width = mathjaxBB.width;\n if (aTitle === MAIN_TITLE) {\n Drawing.setTranslate(mathjaxGroup, bw, bw + height * 0.75);\n } else {\n Drawing.setTranslate(mathjaxGroup, 0, height * 0.25);\n }\n } else {\n var cls = \".\" + legendId + (aTitle === MAIN_TITLE ? \"title\" : \"\") + \"text\";\n var textEl = g.select(cls);\n var textLines = svgTextUtils.lineCount(textEl);\n var textNode = textEl.node();\n height = lineHeight * textLines;\n width = textNode ? Drawing.bBox(textNode).width : 0;\n if (aTitle === MAIN_TITLE) {\n if (legendObj.title.side === \"left\") {\n width += constants.itemGap * 2;\n }\n svgTextUtils.positionText(\n textEl,\n bw + constants.titlePad,\n bw + lineHeight\n );\n } else {\n var x = constants.itemGap * 2 + legendObj.indentation + legendObj.itemwidth;\n if (legendItem.groupTitle) {\n x = constants.itemGap;\n width -= legendObj.indentation + legendObj.itemwidth;\n }\n svgTextUtils.positionText(\n textEl,\n x,\n -lineHeight * ((textLines - 1) / 2 - 0.3)\n );\n }\n }\n if (aTitle === MAIN_TITLE) {\n legendObj._titleWidth = width;\n legendObj._titleHeight = height;\n } else {\n legendItem.lineHeight = lineHeight;\n legendItem.height = Math.max(height, 16) + 3;\n legendItem.width = width;\n }\n }\n function getTitleSize(legendObj) {\n var w = 0;\n var h = 0;\n var side = legendObj.title.side;\n if (side) {\n if (side.indexOf(\"left\") !== -1) {\n w = legendObj._titleWidth;\n }\n if (side.indexOf(\"top\") !== -1) {\n h = legendObj._titleHeight;\n }\n }\n return [w, h];\n }\n function computeLegendDimensions(gd, groups, traces, legendObj) {\n var fullLayout = gd._fullLayout;\n var legendId = getId(legendObj);\n if (!legendObj) {\n legendObj = fullLayout[legendId];\n }\n var gs = fullLayout._size;\n var isVertical = helpers.isVertical(legendObj);\n var isGrouped = helpers.isGrouped(legendObj);\n var isFraction = legendObj.entrywidthmode === \"fraction\";\n var bw = legendObj.borderwidth;\n var bw2 = 2 * bw;\n var itemGap = constants.itemGap;\n var textGap = legendObj.indentation + legendObj.itemwidth + itemGap * 2;\n var endPad = 2 * (bw + itemGap);\n var yanchor = getYanchor(legendObj);\n var isBelowPlotArea = legendObj.y < 0 || legendObj.y === 0 && yanchor === \"top\";\n var isAbovePlotArea = legendObj.y > 1 || legendObj.y === 1 && yanchor === \"bottom\";\n var traceGroupGap = legendObj.tracegroupgap;\n var legendGroupWidths = {};\n legendObj._maxHeight = Math.max(\n isBelowPlotArea || isAbovePlotArea ? fullLayout.height / 2 : gs.h,\n 30\n );\n var toggleRectWidth = 0;\n legendObj._width = 0;\n legendObj._height = 0;\n var titleSize = getTitleSize(legendObj);\n if (isVertical) {\n traces.each(function(d) {\n var h = d[0].height;\n Drawing.setTranslate(\n this,\n bw + titleSize[0],\n bw + titleSize[1] + legendObj._height + h / 2 + itemGap\n );\n legendObj._height += h;\n legendObj._width = Math.max(legendObj._width, d[0].width);\n });\n toggleRectWidth = textGap + legendObj._width;\n legendObj._width += itemGap + textGap + bw2;\n legendObj._height += endPad;\n if (isGrouped) {\n groups.each(function(d, i) {\n Drawing.setTranslate(this, 0, i * legendObj.tracegroupgap);\n });\n legendObj._height += (legendObj._lgroupsLength - 1) * legendObj.tracegroupgap;\n }\n } else {\n var xanchor = getXanchor(legendObj);\n var isLeftOfPlotArea = legendObj.x < 0 || legendObj.x === 0 && xanchor === \"right\";\n var isRightOfPlotArea = legendObj.x > 1 || legendObj.x === 1 && xanchor === \"left\";\n var isBeyondPlotAreaY = isAbovePlotArea || isBelowPlotArea;\n var hw = fullLayout.width / 2;\n legendObj._maxWidth = Math.max(\n isLeftOfPlotArea ? isBeyondPlotAreaY && xanchor === \"left\" ? gs.l + gs.w : hw : isRightOfPlotArea ? isBeyondPlotAreaY && xanchor === \"right\" ? gs.r + gs.w : hw : gs.w,\n 2 * textGap\n );\n var maxItemWidth = 0;\n var combinedItemWidth = 0;\n traces.each(function(d) {\n var w = getTraceWidth(d, legendObj, textGap);\n maxItemWidth = Math.max(maxItemWidth, w);\n combinedItemWidth += w;\n });\n toggleRectWidth = null;\n var maxRowWidth = 0;\n if (isGrouped) {\n var maxGroupHeightInRow = 0;\n var groupOffsetX = 0;\n var groupOffsetY = 0;\n groups.each(function() {\n var maxWidthInGroup = 0;\n var offsetY2 = 0;\n d3.select(this).selectAll(\"g.traces\").each(function(d) {\n var w = getTraceWidth(d, legendObj, textGap);\n var h = d[0].height;\n Drawing.setTranslate(\n this,\n titleSize[0],\n titleSize[1] + bw + itemGap + h / 2 + offsetY2\n );\n offsetY2 += h;\n maxWidthInGroup = Math.max(maxWidthInGroup, w);\n legendGroupWidths[d[0].trace.legendgroup] = maxWidthInGroup;\n });\n var next = maxWidthInGroup + itemGap;\n if (\n // not on the first column already\n groupOffsetX > 0 && // goes beyound limit\n next + bw + groupOffsetX > legendObj._maxWidth\n ) {\n maxRowWidth = Math.max(maxRowWidth, groupOffsetX);\n groupOffsetX = 0;\n groupOffsetY += maxGroupHeightInRow + traceGroupGap;\n maxGroupHeightInRow = offsetY2;\n } else {\n maxGroupHeightInRow = Math.max(maxGroupHeightInRow, offsetY2);\n }\n Drawing.setTranslate(this, groupOffsetX, groupOffsetY);\n groupOffsetX += next;\n });\n legendObj._width = Math.max(maxRowWidth, groupOffsetX) + bw;\n legendObj._height = groupOffsetY + maxGroupHeightInRow + endPad;\n } else {\n var nTraces = traces.size();\n var oneRowLegend = combinedItemWidth + bw2 + (nTraces - 1) * itemGap < legendObj._maxWidth;\n var maxItemHeightInRow = 0;\n var offsetX = 0;\n var offsetY = 0;\n var rowWidth = 0;\n traces.each(function(d) {\n var h = d[0].height;\n var w = getTraceWidth(d, legendObj, textGap, isGrouped);\n var next = oneRowLegend ? w : maxItemWidth;\n if (!isFraction) {\n next += itemGap;\n }\n if (next + bw + offsetX - itemGap >= legendObj._maxWidth) {\n maxRowWidth = Math.max(maxRowWidth, rowWidth);\n offsetX = 0;\n offsetY += maxItemHeightInRow;\n legendObj._height += maxItemHeightInRow;\n maxItemHeightInRow = 0;\n }\n Drawing.setTranslate(\n this,\n titleSize[0] + bw + offsetX,\n titleSize[1] + bw + offsetY + h / 2 + itemGap\n );\n rowWidth = offsetX + w + itemGap;\n offsetX += next;\n maxItemHeightInRow = Math.max(maxItemHeightInRow, h);\n });\n if (oneRowLegend) {\n legendObj._width = offsetX + bw2;\n legendObj._height = maxItemHeightInRow + endPad;\n } else {\n legendObj._width = Math.max(maxRowWidth, rowWidth) + bw2;\n legendObj._height += maxItemHeightInRow + endPad;\n }\n }\n }\n legendObj._width = Math.ceil(\n Math.max(\n legendObj._width + titleSize[0],\n legendObj._titleWidth + 2 * (bw + constants.titlePad)\n )\n );\n legendObj._height = Math.ceil(\n Math.max(\n legendObj._height + titleSize[1],\n legendObj._titleHeight + 2 * (bw + constants.itemGap)\n )\n );\n legendObj._effHeight = Math.min(legendObj._height, legendObj._maxHeight);\n var edits = gd._context.edits;\n var isEditable = edits.legendText || edits.legendPosition;\n traces.each(function(d) {\n var traceToggle = d3.select(this).select(\".\" + legendId + \"toggle\");\n var h = d[0].height;\n var legendgroup = d[0].trace.legendgroup;\n var traceWidth = getTraceWidth(d, legendObj, textGap);\n if (isGrouped && legendgroup !== \"\") {\n traceWidth = legendGroupWidths[legendgroup];\n }\n var w = isEditable ? textGap : toggleRectWidth || traceWidth;\n if (!isVertical && !isFraction) {\n w += itemGap / 2;\n }\n Drawing.setRect(traceToggle, 0, -h / 2, w, h);\n });\n }\n function expandMargin(gd, legendId, lx, ly) {\n var fullLayout = gd._fullLayout;\n var legendObj = fullLayout[legendId];\n var xanchor = getXanchor(legendObj);\n var yanchor = getYanchor(legendObj);\n var isPaperX = legendObj.xref === \"paper\";\n var isPaperY = legendObj.yref === \"paper\";\n gd._fullLayout._reservedMargin[legendId] = {};\n var sideY = legendObj.y < 0.5 ? \"b\" : \"t\";\n var sideX = legendObj.x < 0.5 ? \"l\" : \"r\";\n var possibleReservedMargins = {\n r: fullLayout.width - lx,\n l: lx + legendObj._width,\n b: fullLayout.height - ly,\n t: ly + legendObj._effHeight\n };\n if (isPaperX && isPaperY) {\n return Plots.autoMargin(gd, legendId, {\n x: legendObj.x,\n y: legendObj.y,\n l: legendObj._width * FROM_TL[xanchor],\n r: legendObj._width * FROM_BR[xanchor],\n b: legendObj._effHeight * FROM_BR[yanchor],\n t: legendObj._effHeight * FROM_TL[yanchor]\n });\n } else if (isPaperX) {\n gd._fullLayout._reservedMargin[legendId][sideY] = possibleReservedMargins[sideY];\n } else if (isPaperY) {\n gd._fullLayout._reservedMargin[legendId][sideX] = possibleReservedMargins[sideX];\n } else {\n if (legendObj.orientation === \"v\") {\n gd._fullLayout._reservedMargin[legendId][sideX] = possibleReservedMargins[sideX];\n } else {\n gd._fullLayout._reservedMargin[legendId][sideY] = possibleReservedMargins[sideY];\n }\n }\n }\n function getXanchor(legendObj) {\n return Lib.isRightAnchor(legendObj) ? \"right\" : Lib.isCenterAnchor(legendObj) ? \"center\" : \"left\";\n }\n function getYanchor(legendObj) {\n return Lib.isBottomAnchor(legendObj) ? \"bottom\" : Lib.isMiddleAnchor(legendObj) ? \"middle\" : \"top\";\n }\n function getId(legendObj) {\n return legendObj._id || \"legend\";\n }\n }\n });\n\n // src/components/fx/hover.js\n var require_hover = __commonJS({\n \"src/components/fx/hover.js\"(exports) {\n \"use strict\";\n var d3 = require_d3();\n var isNumeric = require_fast_isnumeric();\n var tinycolor = require_tinycolor();\n var Lib = require_lib();\n var pushUnique = Lib.pushUnique;\n var strTranslate = Lib.strTranslate;\n var strRotate = Lib.strRotate;\n var Events = require_events2();\n var svgTextUtils = require_svg_text_utils();\n var overrideCursor = require_override_cursor();\n var Drawing = require_drawing();\n var Color = require_color();\n var dragElement = require_dragelement();\n var Axes = require_axes();\n var zindexSeparator = require_constants2().zindexSeparator;\n var Registry = require_registry();\n var helpers = require_helpers2();\n var constants = require_constants();\n var legendSupplyDefaults = require_defaults3();\n var legendDraw = require_draw();\n var YANGLE = constants.YANGLE;\n var YA_RADIANS = Math.PI * YANGLE / 180;\n var YFACTOR = 1 / Math.sin(YA_RADIANS);\n var YSHIFTX = Math.cos(YA_RADIANS);\n var YSHIFTY = Math.sin(YA_RADIANS);\n var HOVERARROWSIZE = constants.HOVERARROWSIZE;\n var HOVERTEXTPAD = constants.HOVERTEXTPAD;\n var multipleHoverPoints = {\n box: true,\n ohlc: true,\n violin: true,\n candlestick: true\n };\n var cartesianScatterPoints = {\n scatter: true,\n scattergl: true,\n splom: true\n };\n function distanceSort(a, b) {\n return a.distance - b.distance;\n }\n exports.hover = function hover(gd, evt, subplot, noHoverEvent) {\n gd = Lib.getGraphDiv(gd);\n var eventTarget = evt.target;\n Lib.throttle(\n gd._fullLayout._uid + constants.HOVERID,\n constants.HOVERMINTIME,\n function() {\n _hover(gd, evt, subplot, noHoverEvent, eventTarget);\n }\n );\n };\n exports.loneHover = function loneHover(hoverItems, opts) {\n var multiHover = true;\n if (!Array.isArray(hoverItems)) {\n multiHover = false;\n hoverItems = [hoverItems];\n }\n var gd = opts.gd;\n var gTop = getTopOffset(gd);\n var gLeft = getLeftOffset(gd);\n var pointsData = hoverItems.map(function(hoverItem) {\n var _x0 = hoverItem._x0 || hoverItem.x0 || hoverItem.x || 0;\n var _x1 = hoverItem._x1 || hoverItem.x1 || hoverItem.x || 0;\n var _y0 = hoverItem._y0 || hoverItem.y0 || hoverItem.y || 0;\n var _y1 = hoverItem._y1 || hoverItem.y1 || hoverItem.y || 0;\n var eventData = hoverItem.eventData;\n if (eventData) {\n var x0 = Math.min(_x0, _x1);\n var x1 = Math.max(_x0, _x1);\n var y0 = Math.min(_y0, _y1);\n var y1 = Math.max(_y0, _y1);\n var trace = hoverItem.trace;\n if (Registry.traceIs(trace, \"gl3d\")) {\n var container = gd._fullLayout[trace.scene]._scene.container;\n var dx = container.offsetLeft;\n var dy = container.offsetTop;\n x0 += dx;\n x1 += dx;\n y0 += dy;\n y1 += dy;\n }\n eventData.bbox = {\n x0: x0 + gLeft,\n x1: x1 + gLeft,\n y0: y0 + gTop,\n y1: y1 + gTop\n };\n if (opts.inOut_bbox) {\n opts.inOut_bbox.push(eventData.bbox);\n }\n } else {\n eventData = false;\n }\n return {\n color: hoverItem.color || Color.defaultLine,\n x0: hoverItem.x0 || hoverItem.x || 0,\n x1: hoverItem.x1 || hoverItem.x || 0,\n y0: hoverItem.y0 || hoverItem.y || 0,\n y1: hoverItem.y1 || hoverItem.y || 0,\n xLabel: hoverItem.xLabel,\n yLabel: hoverItem.yLabel,\n zLabel: hoverItem.zLabel,\n text: hoverItem.text,\n name: hoverItem.name,\n idealAlign: hoverItem.idealAlign,\n // optional extra bits of styling\n borderColor: hoverItem.borderColor,\n fontFamily: hoverItem.fontFamily,\n fontSize: hoverItem.fontSize,\n fontColor: hoverItem.fontColor,\n fontWeight: hoverItem.fontWeight,\n fontStyle: hoverItem.fontStyle,\n fontVariant: hoverItem.fontVariant,\n nameLength: hoverItem.nameLength,\n textAlign: hoverItem.textAlign,\n // filler to make createHoverText happy\n trace: hoverItem.trace || {\n index: 0,\n hoverinfo: \"\"\n },\n xa: { _offset: 0 },\n ya: { _offset: 0 },\n index: 0,\n hovertemplate: hoverItem.hovertemplate || false,\n hovertemplateLabels: hoverItem.hovertemplateLabels || false,\n eventData\n };\n });\n var rotateLabels = false;\n var hoverText = createHoverText(pointsData, {\n gd,\n hovermode: \"closest\",\n rotateLabels,\n bgColor: opts.bgColor || Color.background,\n container: d3.select(opts.container),\n outerContainer: opts.outerContainer || opts.container\n });\n var hoverLabel = hoverText.hoverLabels;\n var tooltipSpacing = 5;\n var lastBottomY = 0;\n var anchor = 0;\n hoverLabel.sort(function(a, b) {\n return a.y0 - b.y0;\n }).each(function(d, i) {\n var topY = d.y0 - d.by / 2;\n if (topY - tooltipSpacing < lastBottomY) {\n d.offset = lastBottomY - topY + tooltipSpacing;\n } else {\n d.offset = 0;\n }\n lastBottomY = topY + d.by + d.offset;\n if (i === opts.anchorIndex || 0) anchor = d.offset;\n }).each(function(d) {\n d.offset -= anchor;\n });\n var scaleX = gd._fullLayout._invScaleX;\n var scaleY = gd._fullLayout._invScaleY;\n alignHoverText(hoverLabel, rotateLabels, scaleX, scaleY);\n return multiHover ? hoverLabel : hoverLabel.node();\n };\n function _hover(gd, evt, subplot, noHoverEvent, eventTarget) {\n if (!subplot) subplot = \"xy\";\n if (typeof subplot === \"string\") {\n subplot = subplot.split(zindexSeparator)[0];\n }\n var subplots = Array.isArray(subplot) ? subplot : [subplot];\n var spId;\n var fullLayout = gd._fullLayout;\n var hoversubplots = fullLayout.hoversubplots;\n var plots = fullLayout._plots || [];\n var plotinfo = plots[subplot];\n var hasCartesian = fullLayout._has(\"cartesian\");\n var hovermode = evt.hovermode || fullLayout.hovermode;\n var hovermodeHasX = (hovermode || \"\").charAt(0) === \"x\";\n var hovermodeHasY = (hovermode || \"\").charAt(0) === \"y\";\n var firstXaxis;\n var firstYaxis;\n if (hasCartesian && (hovermodeHasX || hovermodeHasY) && hoversubplots === \"axis\") {\n var subplotsLength = subplots.length;\n for (var p = 0; p < subplotsLength; p++) {\n spId = subplots[p];\n if (plots[spId]) {\n firstXaxis = Axes.getFromId(gd, spId, \"x\");\n firstYaxis = Axes.getFromId(gd, spId, \"y\");\n var subplotsWith = (hovermodeHasX ? firstXaxis : firstYaxis)._subplotsWith;\n if (subplotsWith && subplotsWith.length) {\n for (var q = 0; q < subplotsWith.length; q++) {\n pushUnique(subplots, subplotsWith[q]);\n }\n }\n }\n }\n }\n if (plotinfo && hoversubplots !== \"single\") {\n var overlayedSubplots = plotinfo.overlays.map(function(pi) {\n return pi.id;\n });\n subplots = subplots.concat(overlayedSubplots);\n }\n var len = subplots.length;\n var xaArray = new Array(len);\n var yaArray = new Array(len);\n var supportsCompare = false;\n for (var i = 0; i < len; i++) {\n spId = subplots[i];\n if (plots[spId]) {\n supportsCompare = true;\n xaArray[i] = plots[spId].xaxis;\n yaArray[i] = plots[spId].yaxis;\n } else if (fullLayout[spId] && fullLayout[spId]._subplot) {\n var _subplot = fullLayout[spId]._subplot;\n xaArray[i] = _subplot.xaxis;\n yaArray[i] = _subplot.yaxis;\n } else {\n Lib.warn(\"Unrecognized subplot: \" + spId);\n return;\n }\n }\n if (hovermode && !supportsCompare) hovermode = \"closest\";\n if ([\"x\", \"y\", \"closest\", \"x unified\", \"y unified\"].indexOf(hovermode) === -1 || !gd.calcdata || gd.querySelector(\".zoombox\") || gd._dragging) {\n return dragElement.unhoverRaw(gd, evt);\n }\n var hoverdistance = fullLayout.hoverdistance;\n if (hoverdistance === -1) hoverdistance = Infinity;\n var spikedistance = fullLayout.spikedistance;\n if (spikedistance === -1) spikedistance = Infinity;\n var hoverData = [];\n var searchData = [];\n var xvalArray, yvalArray;\n var itemnum, curvenum, cd, trace, subplotId, subploti, _mode, xval, yval, pointData, closedataPreviousLength;\n var spikePoints = {\n hLinePoint: null,\n vLinePoint: null\n };\n var hasOneHorizontalTrace = false;\n if (Array.isArray(evt)) {\n hovermode = \"array\";\n for (itemnum = 0; itemnum < evt.length; itemnum++) {\n cd = gd.calcdata[evt[itemnum].curveNumber || 0];\n if (cd) {\n trace = cd[0].trace;\n if (cd[0].trace.hoverinfo !== \"skip\") {\n searchData.push(cd);\n if (trace.orientation === \"h\") {\n hasOneHorizontalTrace = true;\n }\n }\n }\n }\n } else {\n var zorderedCalcdata = gd.calcdata.slice();\n zorderedCalcdata.sort(function(a, b) {\n var aZorder = a[0].trace.zorder || 0;\n var bZorder = b[0].trace.zorder || 0;\n return aZorder - bZorder;\n });\n for (curvenum = 0; curvenum < zorderedCalcdata.length; curvenum++) {\n cd = zorderedCalcdata[curvenum];\n trace = cd[0].trace;\n if (trace.hoverinfo !== \"skip\" && helpers.isTraceInSubplots(trace, subplots)) {\n searchData.push(cd);\n if (trace.orientation === \"h\") {\n hasOneHorizontalTrace = true;\n }\n }\n }\n var hasUserCalledHover = !eventTarget;\n var xpx, ypx;\n if (hasUserCalledHover) {\n if (\"xpx\" in evt) xpx = evt.xpx;\n else xpx = xaArray[0]._length / 2;\n if (\"ypx\" in evt) ypx = evt.ypx;\n else ypx = yaArray[0]._length / 2;\n } else {\n if (Events.triggerHandler(gd, \"plotly_beforehover\", evt) === false) {\n return;\n }\n var dbb = eventTarget.getBoundingClientRect();\n xpx = evt.clientX - dbb.left;\n ypx = evt.clientY - dbb.top;\n fullLayout._calcInverseTransform(gd);\n var transformedCoords = Lib.apply3DTransform(fullLayout._invTransform)(xpx, ypx);\n xpx = transformedCoords[0];\n ypx = transformedCoords[1];\n if (xpx < 0 || xpx > xaArray[0]._length || ypx < 0 || ypx > yaArray[0]._length) {\n return dragElement.unhoverRaw(gd, evt);\n }\n }\n evt.pointerX = xpx + xaArray[0]._offset;\n evt.pointerY = ypx + yaArray[0]._offset;\n if (\"xval\" in evt) xvalArray = helpers.flat(subplots, evt.xval);\n else xvalArray = helpers.p2c(xaArray, xpx);\n if (\"yval\" in evt) yvalArray = helpers.flat(subplots, evt.yval);\n else yvalArray = helpers.p2c(yaArray, ypx);\n if (!isNumeric(xvalArray[0]) || !isNumeric(yvalArray[0])) {\n Lib.warn(\"Fx.hover failed\", evt, gd);\n return dragElement.unhoverRaw(gd, evt);\n }\n }\n var distance = Infinity;\n function findHoverPoints(customXVal, customYVal) {\n for (curvenum = 0; curvenum < searchData.length; curvenum++) {\n cd = searchData[curvenum];\n if (!cd || !cd[0] || !cd[0].trace) continue;\n trace = cd[0].trace;\n if (trace.visible !== true || trace._length === 0) continue;\n if ([\"carpet\", \"contourcarpet\"].indexOf(trace._module.name) !== -1) continue;\n _mode = hovermode;\n if (helpers.isUnifiedHover(_mode)) {\n _mode = _mode.charAt(0);\n }\n if (trace.type === \"splom\") {\n subploti = 0;\n subplotId = subplots[subploti];\n } else {\n subplotId = helpers.getSubplot(trace);\n subploti = subplots.indexOf(subplotId);\n }\n pointData = {\n // trace properties\n cd,\n trace,\n xa: xaArray[subploti],\n ya: yaArray[subploti],\n // max distances for hover and spikes - for points that want to show but do not\n // want to override other points, set distance/spikeDistance equal to max*Distance\n // and it will not get filtered out but it will be guaranteed to have a greater\n // distance than any point that calculated a real distance.\n maxHoverDistance: hoverdistance,\n maxSpikeDistance: spikedistance,\n // point properties - override all of these\n index: false,\n // point index in trace - only used by plotly.js hoverdata consumers\n distance: Math.min(distance, hoverdistance),\n // pixel distance or pseudo-distance\n // distance/pseudo-distance for spikes. This distance should always be calculated\n // as if in \"closest\" mode, and should only be set if this point should\n // generate a spike.\n spikeDistance: Infinity,\n // in some cases the spikes have different positioning from the hover label\n // they don't need x0/x1, just one position\n xSpike: void 0,\n ySpike: void 0,\n // where and how to display the hover label\n color: Color.defaultLine,\n // trace color\n name: trace.name,\n x0: void 0,\n x1: void 0,\n y0: void 0,\n y1: void 0,\n xLabelVal: void 0,\n yLabelVal: void 0,\n zLabelVal: void 0,\n text: void 0\n };\n if (fullLayout[subplotId]) {\n pointData.subplot = fullLayout[subplotId]._subplot;\n }\n if (fullLayout._splomScenes && fullLayout._splomScenes[trace.uid]) {\n pointData.scene = fullLayout._splomScenes[trace.uid];\n }\n if (_mode === \"array\") {\n var selection = evt[curvenum];\n if (\"pointNumber\" in selection) {\n pointData.index = selection.pointNumber;\n _mode = \"closest\";\n } else {\n _mode = \"\";\n if (\"xval\" in selection) {\n xval = selection.xval;\n _mode = \"x\";\n }\n if (\"yval\" in selection) {\n yval = selection.yval;\n _mode = _mode ? \"closest\" : \"y\";\n }\n }\n } else if (customXVal !== void 0 && customYVal !== void 0) {\n xval = customXVal;\n yval = customYVal;\n } else {\n xval = xvalArray[subploti];\n yval = yvalArray[subploti];\n }\n closedataPreviousLength = hoverData.length;\n if (hoverdistance !== 0) {\n if (trace._module && trace._module.hoverPoints) {\n var newPoints = trace._module.hoverPoints(pointData, xval, yval, _mode, {\n finiteRange: true,\n hoverLayer: fullLayout._hoverlayer,\n // options for splom when hovering on same axis\n hoversubplots,\n gd\n });\n if (newPoints) {\n var newPoint;\n for (var newPointNum = 0; newPointNum < newPoints.length; newPointNum++) {\n newPoint = newPoints[newPointNum];\n if (isNumeric(newPoint.x0) && isNumeric(newPoint.y0)) {\n hoverData.push(cleanPoint(newPoint, hovermode));\n }\n }\n }\n } else {\n Lib.log(\"Unrecognized trace type in hover:\", trace);\n }\n }\n if (hovermode === \"closest\" && hoverData.length > closedataPreviousLength) {\n hoverData.splice(0, closedataPreviousLength);\n distance = hoverData[0].distance;\n }\n if (hasCartesian && spikedistance !== 0) {\n if (hoverData.length === 0) {\n pointData.distance = spikedistance;\n pointData.index = false;\n var closestPoints = trace._module.hoverPoints(pointData, xval, yval, \"closest\", {\n hoverLayer: fullLayout._hoverlayer\n });\n if (closestPoints) {\n closestPoints = closestPoints.filter(function(point) {\n return point.spikeDistance <= spikedistance;\n });\n }\n if (closestPoints && closestPoints.length) {\n var tmpPoint;\n var closestVPoints = closestPoints.filter(function(point) {\n return point.xa.showspikes && point.xa.spikesnap !== \"hovered data\";\n });\n if (closestVPoints.length) {\n var closestVPt = closestVPoints[0];\n if (isNumeric(closestVPt.x0) && isNumeric(closestVPt.y0)) {\n tmpPoint = fillSpikePoint(closestVPt);\n if (!spikePoints.vLinePoint || spikePoints.vLinePoint.spikeDistance > tmpPoint.spikeDistance) {\n spikePoints.vLinePoint = tmpPoint;\n }\n }\n }\n var closestHPoints = closestPoints.filter(function(point) {\n return point.ya.showspikes && point.ya.spikesnap !== \"hovered data\";\n });\n if (closestHPoints.length) {\n var closestHPt = closestHPoints[0];\n if (isNumeric(closestHPt.x0) && isNumeric(closestHPt.y0)) {\n tmpPoint = fillSpikePoint(closestHPt);\n if (!spikePoints.hLinePoint || spikePoints.hLinePoint.spikeDistance > tmpPoint.spikeDistance) {\n spikePoints.hLinePoint = tmpPoint;\n }\n }\n }\n }\n }\n }\n }\n }\n findHoverPoints();\n function selectClosestPoint(pointsData, spikedistance2, spikeOnWinning2) {\n var resultPoint = null;\n var minDistance = Infinity;\n var thisSpikeDistance;\n for (var i2 = 0; i2 < pointsData.length; i2++) {\n if (firstXaxis && firstXaxis._id !== pointsData[i2].xa._id) continue;\n if (firstYaxis && firstYaxis._id !== pointsData[i2].ya._id) continue;\n thisSpikeDistance = pointsData[i2].spikeDistance;\n if (spikeOnWinning2 && i2 === 0) thisSpikeDistance = -Infinity;\n if (thisSpikeDistance <= minDistance && thisSpikeDistance <= spikedistance2) {\n resultPoint = pointsData[i2];\n minDistance = thisSpikeDistance;\n }\n }\n return resultPoint;\n }\n function fillSpikePoint(point) {\n if (!point) return null;\n return {\n xa: point.xa,\n ya: point.ya,\n x: point.xSpike !== void 0 ? point.xSpike : (point.x0 + point.x1) / 2,\n y: point.ySpike !== void 0 ? point.ySpike : (point.y0 + point.y1) / 2,\n distance: point.distance,\n spikeDistance: point.spikeDistance,\n curveNumber: point.trace.index,\n color: point.color,\n pointNumber: point.index\n };\n }\n var spikelineOpts = {\n fullLayout,\n container: fullLayout._hoverlayer,\n event: evt\n };\n var oldspikepoints = gd._spikepoints;\n var newspikepoints = {\n vLinePoint: spikePoints.vLinePoint,\n hLinePoint: spikePoints.hLinePoint\n };\n gd._spikepoints = newspikepoints;\n var sortHoverData = function() {\n var hoverDataInSubplot = hoverData.filter(function(a) {\n return firstXaxis && firstXaxis._id === a.xa._id && (firstYaxis && firstYaxis._id === a.ya._id);\n });\n var hoverDataOutSubplot = hoverData.filter(function(a) {\n return !(firstXaxis && firstXaxis._id === a.xa._id && (firstYaxis && firstYaxis._id === a.ya._id));\n });\n hoverDataInSubplot.sort(distanceSort);\n hoverDataOutSubplot.sort(distanceSort);\n hoverData = hoverDataInSubplot.concat(hoverDataOutSubplot);\n hoverData = orderRangePoints(hoverData, hovermode);\n };\n sortHoverData();\n var axLetter = hovermode.charAt(0);\n var spikeOnWinning = (axLetter === \"x\" || axLetter === \"y\") && hoverData[0] && cartesianScatterPoints[hoverData[0].trace.type];\n if (hasCartesian && spikedistance !== 0) {\n if (hoverData.length !== 0) {\n var tmpHPointData = hoverData.filter(function(point) {\n return point.ya.showspikes;\n });\n var tmpHPoint = selectClosestPoint(tmpHPointData, spikedistance, spikeOnWinning);\n spikePoints.hLinePoint = fillSpikePoint(tmpHPoint);\n var tmpVPointData = hoverData.filter(function(point) {\n return point.xa.showspikes;\n });\n var tmpVPoint = selectClosestPoint(tmpVPointData, spikedistance, spikeOnWinning);\n spikePoints.vLinePoint = fillSpikePoint(tmpVPoint);\n }\n }\n if (hoverData.length === 0) {\n var result = dragElement.unhoverRaw(gd, evt);\n if (hasCartesian && (spikePoints.hLinePoint !== null || spikePoints.vLinePoint !== null)) {\n if (spikesChanged(oldspikepoints)) {\n createSpikelines(gd, spikePoints, spikelineOpts);\n }\n }\n return result;\n }\n if (hasCartesian) {\n if (spikesChanged(oldspikepoints)) {\n createSpikelines(gd, spikePoints, spikelineOpts);\n }\n }\n if (helpers.isXYhover(_mode) && hoverData[0].length !== 0 && hoverData[0].trace.type !== \"splom\") {\n var winningPoint = hoverData[0];\n if (multipleHoverPoints[winningPoint.trace.type]) {\n hoverData = hoverData.filter(function(d) {\n return d.trace.index === winningPoint.trace.index;\n });\n } else {\n hoverData = [winningPoint];\n }\n var initLen = hoverData.length;\n var winX = getCoord(\"x\", winningPoint, fullLayout);\n var winY = getCoord(\"y\", winningPoint, fullLayout);\n findHoverPoints(winX, winY);\n var finalPoints = [];\n var seen = {};\n var id = 0;\n var insert = function(newHd) {\n var key = multipleHoverPoints[newHd.trace.type] ? hoverDataKey(newHd) : newHd.trace.index;\n if (!seen[key]) {\n id++;\n seen[key] = id;\n finalPoints.push(newHd);\n } else {\n var oldId = seen[key] - 1;\n var oldHd = finalPoints[oldId];\n if (oldId > 0 && Math.abs(newHd.distance) < Math.abs(oldHd.distance)) {\n finalPoints[oldId] = newHd;\n }\n }\n };\n var k;\n for (k = 0; k < initLen; k++) {\n insert(hoverData[k]);\n }\n for (k = hoverData.length - 1; k > initLen - 1; k--) {\n insert(hoverData[k]);\n }\n hoverData = finalPoints;\n sortHoverData();\n }\n var oldhoverdata = gd._hoverdata;\n var newhoverdata = [];\n var gTop = getTopOffset(gd);\n var gLeft = getLeftOffset(gd);\n for (itemnum = 0; itemnum < hoverData.length; itemnum++) {\n var pt = hoverData[itemnum];\n var eventData = helpers.makeEventData(pt, pt.trace, pt.cd);\n if (pt.hovertemplate !== false) {\n var ht = false;\n if (pt.cd[pt.index] && pt.cd[pt.index].ht) {\n ht = pt.cd[pt.index].ht;\n }\n pt.hovertemplate = ht || pt.trace.hovertemplate || false;\n }\n if (pt.xa && pt.ya) {\n var _x0 = pt.x0 + pt.xa._offset;\n var _x1 = pt.x1 + pt.xa._offset;\n var _y0 = pt.y0 + pt.ya._offset;\n var _y1 = pt.y1 + pt.ya._offset;\n var x0 = Math.min(_x0, _x1);\n var x1 = Math.max(_x0, _x1);\n var y0 = Math.min(_y0, _y1);\n var y1 = Math.max(_y0, _y1);\n eventData.bbox = {\n x0: x0 + gLeft,\n x1: x1 + gLeft,\n y0: y0 + gTop,\n y1: y1 + gTop\n };\n }\n pt.eventData = [eventData];\n newhoverdata.push(eventData);\n }\n gd._hoverdata = newhoverdata;\n var rotateLabels = hovermode === \"y\" && (searchData.length > 1 || hoverData.length > 1) || hovermode === \"closest\" && hasOneHorizontalTrace && hoverData.length > 1;\n var bgColor = Color.combine(\n fullLayout.plot_bgcolor || Color.background,\n fullLayout.paper_bgcolor\n );\n var hoverText = createHoverText(hoverData, {\n gd,\n hovermode,\n rotateLabels,\n bgColor,\n container: fullLayout._hoverlayer,\n outerContainer: fullLayout._paper.node(),\n commonLabelOpts: fullLayout.hoverlabel,\n hoverdistance: fullLayout.hoverdistance\n });\n var hoverLabels = hoverText.hoverLabels;\n if (!helpers.isUnifiedHover(hovermode)) {\n hoverAvoidOverlaps(hoverLabels, rotateLabels, fullLayout, hoverText.commonLabelBoundingBox);\n alignHoverText(hoverLabels, rotateLabels, fullLayout._invScaleX, fullLayout._invScaleY);\n }\n if (eventTarget && eventTarget.tagName) {\n var hasClickToShow = Registry.getComponentMethod(\"annotations\", \"hasClickToShow\")(gd, newhoverdata);\n overrideCursor(d3.select(eventTarget), hasClickToShow ? \"pointer\" : \"\");\n }\n if (!eventTarget || noHoverEvent || !hoverChanged(gd, evt, oldhoverdata)) return;\n if (oldhoverdata) {\n gd.emit(\"plotly_unhover\", {\n event: evt,\n points: oldhoverdata\n });\n }\n gd.emit(\"plotly_hover\", {\n event: evt,\n points: gd._hoverdata,\n xaxes: xaArray,\n yaxes: yaArray,\n xvals: xvalArray,\n yvals: yvalArray\n });\n }\n function hoverDataKey(d) {\n return [d.trace.index, d.index, d.x0, d.y0, d.name, d.attr, d.xa ? d.xa._id : \"\", d.ya ? d.ya._id : \"\"].join(\",\");\n }\n var EXTRA_STRING_REGEX = /([\\s\\S]*)<\\/extra>/;\n function createHoverText(hoverData, opts) {\n var gd = opts.gd;\n var fullLayout = gd._fullLayout;\n var hovermode = opts.hovermode;\n var rotateLabels = opts.rotateLabels;\n var bgColor = opts.bgColor;\n var container = opts.container;\n var outerContainer = opts.outerContainer;\n var commonLabelOpts = opts.commonLabelOpts || {};\n if (hoverData.length === 0) return [[]];\n var fontFamily = opts.fontFamily || constants.HOVERFONT;\n var fontSize = opts.fontSize || constants.HOVERFONTSIZE;\n var fontWeight = opts.fontWeight || fullLayout.font.weight;\n var fontStyle = opts.fontStyle || fullLayout.font.style;\n var fontVariant = opts.fontVariant || fullLayout.font.variant;\n var fontTextcase = opts.fontTextcase || fullLayout.font.textcase;\n var fontLineposition = opts.fontLineposition || fullLayout.font.lineposition;\n var fontShadow = opts.fontShadow || fullLayout.font.shadow;\n var c0 = hoverData[0];\n var xa = c0.xa;\n var ya = c0.ya;\n var axLetter = hovermode.charAt(0);\n var axLabel = axLetter + \"Label\";\n var t0 = c0[axLabel];\n if (t0 === void 0 && xa.type === \"multicategory\") {\n for (var q = 0; q < hoverData.length; q++) {\n t0 = hoverData[q][axLabel];\n if (t0 !== void 0) break;\n }\n }\n var outerContainerBB = getBoundingClientRect(gd, outerContainer);\n var outerTop = outerContainerBB.top;\n var outerWidth = outerContainerBB.width;\n var outerHeight = outerContainerBB.height;\n var showCommonLabel = t0 !== void 0 && c0.distance <= opts.hoverdistance && (hovermode === \"x\" || hovermode === \"y\");\n if (showCommonLabel) {\n var allHaveZ = true;\n var i, traceHoverinfo;\n for (i = 0; i < hoverData.length; i++) {\n if (allHaveZ && hoverData[i].zLabel === void 0) allHaveZ = false;\n traceHoverinfo = hoverData[i].hoverinfo || hoverData[i].trace.hoverinfo;\n if (traceHoverinfo) {\n var parts = Array.isArray(traceHoverinfo) ? traceHoverinfo : traceHoverinfo.split(\"+\");\n if (parts.indexOf(\"all\") === -1 && parts.indexOf(hovermode) === -1) {\n showCommonLabel = false;\n break;\n }\n }\n }\n if (allHaveZ) showCommonLabel = false;\n }\n var commonLabel = container.selectAll(\"g.axistext\").data(showCommonLabel ? [0] : []);\n commonLabel.enter().append(\"g\").classed(\"axistext\", true);\n commonLabel.exit().remove();\n var commonLabelRect = {\n minX: 0,\n maxX: 0,\n minY: 0,\n maxY: 0\n };\n commonLabel.each(function() {\n var label = d3.select(this);\n var lpath = Lib.ensureSingle(label, \"path\", \"\", function(s) {\n s.style({ \"stroke-width\": \"1px\" });\n });\n var ltext = Lib.ensureSingle(label, \"text\", \"\", function(s) {\n s.attr(\"data-notex\", 1);\n });\n var commonBgColor = commonLabelOpts.bgcolor || Color.defaultLine;\n var commonStroke = commonLabelOpts.bordercolor || Color.contrast(commonBgColor);\n var contrastColor = Color.contrast(commonBgColor);\n var commonLabelOptsFont = commonLabelOpts.font;\n var commonLabelFont = {\n weight: commonLabelOptsFont.weight || fontWeight,\n style: commonLabelOptsFont.style || fontStyle,\n variant: commonLabelOptsFont.variant || fontVariant,\n textcase: commonLabelOptsFont.textcase || fontTextcase,\n lineposition: commonLabelOptsFont.lineposition || fontLineposition,\n shadow: commonLabelOptsFont.shadow || fontShadow,\n family: commonLabelOptsFont.family || fontFamily,\n size: commonLabelOptsFont.size || fontSize,\n color: commonLabelOptsFont.color || contrastColor\n };\n lpath.style({\n fill: commonBgColor,\n stroke: commonStroke\n });\n ltext.text(t0).call(Drawing.font, commonLabelFont).call(svgTextUtils.positionText, 0, 0).call(svgTextUtils.convertToTspans, gd);\n label.attr(\"transform\", \"\");\n var tbb2 = getBoundingClientRect(gd, ltext.node());\n var lx2, ly2;\n if (hovermode === \"x\") {\n var topsign = xa.side === \"top\" ? \"-\" : \"\";\n ltext.attr(\"text-anchor\", \"middle\").call(svgTextUtils.positionText, 0, xa.side === \"top\" ? outerTop - tbb2.bottom - HOVERARROWSIZE - HOVERTEXTPAD : outerTop - tbb2.top + HOVERARROWSIZE + HOVERTEXTPAD);\n lx2 = xa._offset + (c0.x0 + c0.x1) / 2;\n ly2 = ya._offset + (xa.side === \"top\" ? 0 : ya._length);\n var halfWidth = tbb2.width / 2 + HOVERTEXTPAD;\n var tooltipMidX = lx2;\n if (lx2 < halfWidth) {\n tooltipMidX = halfWidth;\n } else if (lx2 > fullLayout.width - halfWidth) {\n tooltipMidX = fullLayout.width - halfWidth;\n }\n lpath.attr(\"d\", \"M\" + (lx2 - tooltipMidX) + \",0L\" + (lx2 - tooltipMidX + HOVERARROWSIZE) + \",\" + topsign + HOVERARROWSIZE + \"H\" + halfWidth + \"v\" + topsign + (HOVERTEXTPAD * 2 + tbb2.height) + \"H\" + -halfWidth + \"V\" + topsign + HOVERARROWSIZE + \"H\" + (lx2 - tooltipMidX - HOVERARROWSIZE) + \"Z\");\n lx2 = tooltipMidX;\n commonLabelRect.minX = lx2 - halfWidth;\n commonLabelRect.maxX = lx2 + halfWidth;\n if (xa.side === \"top\") {\n commonLabelRect.minY = ly2 - (HOVERTEXTPAD * 2 + tbb2.height);\n commonLabelRect.maxY = ly2 - HOVERTEXTPAD;\n } else {\n commonLabelRect.minY = ly2 + HOVERTEXTPAD;\n commonLabelRect.maxY = ly2 + (HOVERTEXTPAD * 2 + tbb2.height);\n }\n } else {\n var anchor;\n var sgn;\n var leftsign;\n if (ya.side === \"right\") {\n anchor = \"start\";\n sgn = 1;\n leftsign = \"\";\n lx2 = xa._offset + xa._length;\n } else {\n anchor = \"end\";\n sgn = -1;\n leftsign = \"-\";\n lx2 = xa._offset;\n }\n ly2 = ya._offset + (c0.y0 + c0.y1) / 2;\n ltext.attr(\"text-anchor\", anchor);\n lpath.attr(\"d\", \"M0,0L\" + leftsign + HOVERARROWSIZE + \",\" + HOVERARROWSIZE + \"V\" + (HOVERTEXTPAD + tbb2.height / 2) + \"h\" + leftsign + (HOVERTEXTPAD * 2 + tbb2.width) + \"V-\" + (HOVERTEXTPAD + tbb2.height / 2) + \"H\" + leftsign + HOVERARROWSIZE + \"V-\" + HOVERARROWSIZE + \"Z\");\n commonLabelRect.minY = ly2 - (HOVERTEXTPAD + tbb2.height / 2);\n commonLabelRect.maxY = ly2 + (HOVERTEXTPAD + tbb2.height / 2);\n if (ya.side === \"right\") {\n commonLabelRect.minX = lx2 + HOVERARROWSIZE;\n commonLabelRect.maxX = lx2 + HOVERARROWSIZE + (HOVERTEXTPAD * 2 + tbb2.width);\n } else {\n commonLabelRect.minX = lx2 - HOVERARROWSIZE - (HOVERTEXTPAD * 2 + tbb2.width);\n commonLabelRect.maxX = lx2 - HOVERARROWSIZE;\n }\n var halfHeight = tbb2.height / 2;\n var lty = outerTop - tbb2.top - halfHeight;\n var clipId = \"clip\" + fullLayout._uid + \"commonlabel\" + ya._id;\n var clipPath;\n if (lx2 < tbb2.width + 2 * HOVERTEXTPAD + HOVERARROWSIZE) {\n clipPath = \"M-\" + (HOVERARROWSIZE + HOVERTEXTPAD) + \"-\" + halfHeight + \"h-\" + (tbb2.width - HOVERTEXTPAD) + \"V\" + halfHeight + \"h\" + (tbb2.width - HOVERTEXTPAD) + \"Z\";\n var ltx = tbb2.width - lx2 + HOVERTEXTPAD;\n svgTextUtils.positionText(ltext, ltx, lty);\n if (anchor === \"end\") {\n ltext.selectAll(\"tspan\").each(function() {\n var s = d3.select(this);\n var dummy = Drawing.tester.append(\"text\").text(s.text()).call(Drawing.font, commonLabelFont);\n var dummyBB = getBoundingClientRect(gd, dummy.node());\n if (Math.round(dummyBB.width) < Math.round(tbb2.width)) {\n s.attr(\"x\", ltx - dummyBB.width);\n }\n dummy.remove();\n });\n }\n } else {\n svgTextUtils.positionText(ltext, sgn * (HOVERTEXTPAD + HOVERARROWSIZE), lty);\n clipPath = null;\n }\n var textClip = fullLayout._topclips.selectAll(\"#\" + clipId).data(clipPath ? [0] : []);\n textClip.enter().append(\"clipPath\").attr(\"id\", clipId).append(\"path\");\n textClip.exit().remove();\n textClip.select(\"path\").attr(\"d\", clipPath);\n Drawing.setClipUrl(ltext, clipPath ? clipId : null, gd);\n }\n label.attr(\"transform\", strTranslate(lx2, ly2));\n });\n if (helpers.isUnifiedHover(hovermode)) {\n container.selectAll(\"g.hovertext\").remove();\n var groupedHoverData = hoverData.filter(function(data) {\n return data.hoverinfo !== \"none\";\n });\n if (groupedHoverData.length === 0) return [];\n var hoverlabel = fullLayout.hoverlabel;\n var font = hoverlabel.font;\n var mockLayoutIn = {\n showlegend: true,\n legend: {\n title: { text: t0, font },\n font,\n bgcolor: hoverlabel.bgcolor,\n bordercolor: hoverlabel.bordercolor,\n borderwidth: 1,\n tracegroupgap: 7,\n traceorder: fullLayout.legend ? fullLayout.legend.traceorder : void 0,\n orientation: \"v\"\n }\n };\n var mockLayoutOut = {\n font\n };\n legendSupplyDefaults(mockLayoutIn, mockLayoutOut, gd._fullData);\n var mockLegend = mockLayoutOut.legend;\n mockLegend.entries = [];\n for (var j = 0; j < groupedHoverData.length; j++) {\n var pt = groupedHoverData[j];\n if (pt.hoverinfo === \"none\") continue;\n var texts = getHoverLabelText(pt, true, hovermode, fullLayout, t0);\n var text = texts[0];\n var name = texts[1];\n pt.name = name;\n if (name !== \"\") {\n pt.text = name + \" : \" + text;\n } else {\n pt.text = text;\n }\n var cd = pt.cd[pt.index];\n if (cd) {\n if (cd.mc) pt.mc = cd.mc;\n if (cd.mcc) pt.mc = cd.mcc;\n if (cd.mlc) pt.mlc = cd.mlc;\n if (cd.mlcc) pt.mlc = cd.mlcc;\n if (cd.mlw) pt.mlw = cd.mlw;\n if (cd.mrc) pt.mrc = cd.mrc;\n if (cd.dir) pt.dir = cd.dir;\n }\n pt._distinct = true;\n mockLegend.entries.push([pt]);\n }\n mockLegend.entries.sort(function(a, b) {\n return a[0].trace.index - b[0].trace.index;\n });\n mockLegend.layer = container;\n mockLegend._inHover = true;\n mockLegend._groupTitleFont = hoverlabel.grouptitlefont;\n legendDraw(gd, mockLegend);\n var legendContainer = container.select(\"g.legend\");\n var tbb = getBoundingClientRect(gd, legendContainer.node());\n var tWidth = tbb.width + 2 * HOVERTEXTPAD;\n var tHeight = tbb.height + 2 * HOVERTEXTPAD;\n var winningPoint = groupedHoverData[0];\n var avgX = (winningPoint.x0 + winningPoint.x1) / 2;\n var avgY = (winningPoint.y0 + winningPoint.y1) / 2;\n var pointWon = !(Registry.traceIs(winningPoint.trace, \"bar-like\") || Registry.traceIs(winningPoint.trace, \"box-violin\"));\n var lyBottom, lyTop;\n if (axLetter === \"y\") {\n if (pointWon) {\n lyTop = avgY - HOVERTEXTPAD;\n lyBottom = avgY + HOVERTEXTPAD;\n } else {\n lyTop = Math.min.apply(null, groupedHoverData.map(function(c) {\n return Math.min(c.y0, c.y1);\n }));\n lyBottom = Math.max.apply(null, groupedHoverData.map(function(c) {\n return Math.max(c.y0, c.y1);\n }));\n }\n } else {\n lyTop = lyBottom = Lib.mean(groupedHoverData.map(function(c) {\n return (c.y0 + c.y1) / 2;\n })) - tHeight / 2;\n }\n var lxRight, lxLeft;\n if (axLetter === \"x\") {\n if (pointWon) {\n lxRight = avgX + HOVERTEXTPAD;\n lxLeft = avgX - HOVERTEXTPAD;\n } else {\n lxRight = Math.max.apply(null, groupedHoverData.map(function(c) {\n return Math.max(c.x0, c.x1);\n }));\n lxLeft = Math.min.apply(null, groupedHoverData.map(function(c) {\n return Math.min(c.x0, c.x1);\n }));\n }\n } else {\n lxRight = lxLeft = Lib.mean(groupedHoverData.map(function(c) {\n return (c.x0 + c.x1) / 2;\n })) - tWidth / 2;\n }\n var xOffset = xa._offset;\n var yOffset = ya._offset;\n lyBottom += yOffset;\n lxRight += xOffset;\n lxLeft += xOffset - tWidth;\n lyTop += yOffset - tHeight;\n var lx, ly;\n if (lxRight + tWidth < outerWidth && lxRight >= 0) {\n lx = lxRight;\n } else if (lxLeft + tWidth < outerWidth && lxLeft >= 0) {\n lx = lxLeft;\n } else if (xOffset + tWidth < outerWidth) {\n lx = xOffset;\n } else {\n if (lxRight - avgX < avgX - lxLeft + tWidth) {\n lx = outerWidth - tWidth;\n } else {\n lx = 0;\n }\n }\n lx += HOVERTEXTPAD;\n if (lyBottom + tHeight < outerHeight && lyBottom >= 0) {\n ly = lyBottom;\n } else if (lyTop + tHeight < outerHeight && lyTop >= 0) {\n ly = lyTop;\n } else if (yOffset + tHeight < outerHeight) {\n ly = yOffset;\n } else {\n if (lyBottom - avgY < avgY - lyTop + tHeight) {\n ly = outerHeight - tHeight;\n } else {\n ly = 0;\n }\n }\n ly += HOVERTEXTPAD;\n legendContainer.attr(\"transform\", strTranslate(lx - 1, ly - 1));\n return legendContainer;\n }\n var hoverLabels = container.selectAll(\"g.hovertext\").data(hoverData, function(d) {\n return hoverDataKey(d);\n });\n hoverLabels.enter().append(\"g\").classed(\"hovertext\", true).each(function() {\n var g = d3.select(this);\n g.append(\"rect\").call(Color.fill, Color.addOpacity(bgColor, 0.8));\n g.append(\"text\").classed(\"name\", true);\n g.append(\"path\").style(\"stroke-width\", \"1px\");\n g.append(\"text\").classed(\"nums\", true).call(Drawing.font, {\n weight: fontWeight,\n style: fontStyle,\n variant: fontVariant,\n textcase: fontTextcase,\n lineposition: fontLineposition,\n shadow: fontShadow,\n family: fontFamily,\n size: fontSize\n });\n });\n hoverLabels.exit().remove();\n hoverLabels.each(function(d) {\n var g = d3.select(this).attr(\"transform\", \"\");\n var dColor = d.color;\n if (Array.isArray(dColor)) {\n dColor = dColor[d.eventData[0].pointNumber];\n }\n var color0 = d.bgcolor || dColor;\n var numsColor = Color.combine(\n Color.opacity(color0) ? color0 : Color.defaultLine,\n bgColor\n );\n var nameColor = Color.combine(\n Color.opacity(dColor) ? dColor : Color.defaultLine,\n bgColor\n );\n var contrastColor = d.borderColor || Color.contrast(numsColor);\n var texts2 = getHoverLabelText(d, showCommonLabel, hovermode, fullLayout, t0, g);\n var text2 = texts2[0];\n var name2 = texts2[1];\n var tx = g.select(\"text.nums\").call(Drawing.font, {\n family: d.fontFamily || fontFamily,\n size: d.fontSize || fontSize,\n color: d.fontColor || contrastColor,\n weight: d.fontWeight || fontWeight,\n style: d.fontStyle || fontStyle,\n variant: d.fontVariant || fontVariant,\n textcase: d.fontTextcase || fontTextcase,\n lineposition: d.fontLineposition || fontLineposition,\n shadow: d.fontShadow || fontShadow\n }).text(text2).attr(\"data-notex\", 1).call(svgTextUtils.positionText, 0, 0).call(svgTextUtils.convertToTspans, gd);\n var tx2 = g.select(\"text.name\");\n var tx2width = 0;\n var tx2height = 0;\n if (name2 && name2 !== text2) {\n tx2.call(Drawing.font, {\n family: d.fontFamily || fontFamily,\n size: d.fontSize || fontSize,\n color: nameColor,\n weight: d.fontWeight || fontWeight,\n style: d.fontStyle || fontStyle,\n variant: d.fontVariant || fontVariant,\n textcase: d.fontTextcase || fontTextcase,\n lineposition: d.fontLineposition || fontLineposition,\n shadow: d.fontShadow || fontShadow\n }).text(name2).attr(\"data-notex\", 1).call(svgTextUtils.positionText, 0, 0).call(svgTextUtils.convertToTspans, gd);\n var t2bb = getBoundingClientRect(gd, tx2.node());\n tx2width = t2bb.width + 2 * HOVERTEXTPAD;\n tx2height = t2bb.height + 2 * HOVERTEXTPAD;\n } else {\n tx2.remove();\n g.select(\"rect\").remove();\n }\n g.select(\"path\").style({\n fill: numsColor,\n stroke: contrastColor\n });\n var htx = d.xa._offset + (d.x0 + d.x1) / 2;\n var hty = d.ya._offset + (d.y0 + d.y1) / 2;\n var dx = Math.abs(d.x1 - d.x0);\n var dy = Math.abs(d.y1 - d.y0);\n var tbb2 = getBoundingClientRect(gd, tx.node());\n var tbbWidth = tbb2.width / fullLayout._invScaleX;\n var tbbHeight = tbb2.height / fullLayout._invScaleY;\n d.ty0 = (outerTop - tbb2.top) / fullLayout._invScaleY;\n d.bx = tbbWidth + 2 * HOVERTEXTPAD;\n d.by = Math.max(tbbHeight + 2 * HOVERTEXTPAD, tx2height);\n d.anchor = \"start\";\n d.txwidth = tbbWidth;\n d.tx2width = tx2width;\n d.offset = 0;\n var txTotalWidth = (tbbWidth + HOVERARROWSIZE + HOVERTEXTPAD + tx2width) * fullLayout._invScaleX;\n var anchorStartOK, anchorEndOK;\n if (rotateLabels) {\n d.pos = htx;\n anchorStartOK = hty + dy / 2 + txTotalWidth <= outerHeight;\n anchorEndOK = hty - dy / 2 - txTotalWidth >= 0;\n if ((d.idealAlign === \"top\" || !anchorStartOK) && anchorEndOK) {\n hty -= dy / 2;\n d.anchor = \"end\";\n } else if (anchorStartOK) {\n hty += dy / 2;\n d.anchor = \"start\";\n } else {\n d.anchor = \"middle\";\n }\n d.crossPos = hty;\n } else {\n d.pos = hty;\n anchorStartOK = htx + dx / 2 + txTotalWidth <= outerWidth;\n anchorEndOK = htx - dx / 2 - txTotalWidth >= 0;\n if ((d.idealAlign === \"left\" || !anchorStartOK) && anchorEndOK) {\n htx -= dx / 2;\n d.anchor = \"end\";\n } else if (anchorStartOK) {\n htx += dx / 2;\n d.anchor = \"start\";\n } else {\n d.anchor = \"middle\";\n var txHalfWidth = txTotalWidth / 2;\n var overflowR = htx + txHalfWidth - outerWidth;\n var overflowL = htx - txHalfWidth;\n if (overflowR > 0) htx -= overflowR;\n if (overflowL < 0) htx += -overflowL;\n }\n d.crossPos = htx;\n }\n tx.attr(\"text-anchor\", d.anchor);\n if (tx2width) tx2.attr(\"text-anchor\", d.anchor);\n g.attr(\"transform\", strTranslate(htx, hty) + (rotateLabels ? strRotate(YANGLE) : \"\"));\n });\n return {\n hoverLabels,\n commonLabelBoundingBox: commonLabelRect\n };\n }\n function getHoverLabelText(d, showCommonLabel, hovermode, fullLayout, t0, g) {\n var name = \"\";\n var text = \"\";\n if (d.nameOverride !== void 0) d.name = d.nameOverride;\n if (d.name) {\n if (d.trace._meta) {\n d.name = Lib.templateString(d.name, d.trace._meta);\n }\n name = plainText(d.name, d.nameLength);\n }\n var h0 = hovermode.charAt(0);\n var h1 = h0 === \"x\" ? \"y\" : \"x\";\n if (d.zLabel !== void 0) {\n if (d.xLabel !== void 0) text += \"x: \" + d.xLabel + \"
\";\n if (d.yLabel !== void 0) text += \"y: \" + d.yLabel + \"
\";\n if (d.trace.type !== \"choropleth\" && d.trace.type !== \"choroplethmapbox\" && d.trace.type !== \"choroplethmap\") {\n text += (text ? \"z: \" : \"\") + d.zLabel;\n }\n } else if (showCommonLabel && d[h0 + \"Label\"] === t0) {\n text = d[h1 + \"Label\"] || \"\";\n } else if (d.xLabel === void 0) {\n if (d.yLabel !== void 0 && d.trace.type !== \"scattercarpet\") {\n text = d.yLabel;\n }\n } else if (d.yLabel === void 0) text = d.xLabel;\n else text = \"(\" + d.xLabel + \", \" + d.yLabel + \")\";\n if ((d.text || d.text === 0) && !Array.isArray(d.text)) {\n text += (text ? \"
\" : \"\") + d.text;\n }\n if (d.extraText !== void 0) text += (text ? \"
\" : \"\") + d.extraText;\n if (g && text === \"\" && !d.hovertemplate) {\n if (name === \"\") g.remove();\n text = name;\n }\n var hovertemplate = d.hovertemplate || false;\n if (hovertemplate) {\n var labels = d.hovertemplateLabels || d;\n if (d[h0 + \"Label\"] !== t0) {\n labels[h0 + \"other\"] = labels[h0 + \"Val\"];\n labels[h0 + \"otherLabel\"] = labels[h0 + \"Label\"];\n }\n text = Lib.hovertemplateString(\n hovertemplate,\n labels,\n fullLayout._d3locale,\n d.eventData[0] || {},\n d.trace._meta\n );\n text = text.replace(EXTRA_STRING_REGEX, function(match, extra) {\n name = plainText(extra, d.nameLength);\n return \"\";\n });\n }\n return [text, name];\n }\n function hoverAvoidOverlaps(hoverLabels, rotateLabels, fullLayout, commonLabelBoundingBox) {\n var axKey = rotateLabels ? \"xa\" : \"ya\";\n var crossAxKey = rotateLabels ? \"ya\" : \"xa\";\n var nummoves = 0;\n var axSign = 1;\n var nLabels = hoverLabels.size();\n var pointgroups = new Array(nLabels);\n var k = 0;\n var axisLabelMinX = commonLabelBoundingBox.minX;\n var axisLabelMaxX = commonLabelBoundingBox.maxX;\n var axisLabelMinY = commonLabelBoundingBox.minY;\n var axisLabelMaxY = commonLabelBoundingBox.maxY;\n var pX = function(x) {\n return x * fullLayout._invScaleX;\n };\n var pY = function(y) {\n return y * fullLayout._invScaleY;\n };\n hoverLabels.each(function(d) {\n var ax = d[axKey];\n var crossAx = d[crossAxKey];\n var axIsX = ax._id.charAt(0) === \"x\";\n var rng = ax.range;\n if (k === 0 && rng && rng[0] > rng[1] !== axIsX) {\n axSign = -1;\n }\n var pmin = 0;\n var pmax = axIsX ? fullLayout.width : fullLayout.height;\n if (fullLayout.hovermode === \"x\" || fullLayout.hovermode === \"y\") {\n var offsets = getHoverLabelOffsets(d, rotateLabels);\n var anchor = d.anchor;\n var horzSign = anchor === \"end\" ? -1 : 1;\n var labelMin;\n var labelMax;\n if (anchor === \"middle\") {\n labelMin = d.crossPos + (axIsX ? pY(offsets.y - d.by / 2) : pX(d.bx / 2 + d.tx2width / 2));\n labelMax = labelMin + (axIsX ? pY(d.by) : pX(d.bx));\n } else {\n if (axIsX) {\n labelMin = d.crossPos + pY(HOVERARROWSIZE + offsets.y) - pY(d.by / 2 - HOVERARROWSIZE);\n labelMax = labelMin + pY(d.by);\n } else {\n var startX = pX(horzSign * HOVERARROWSIZE + offsets.x);\n var endX = startX + pX(horzSign * d.bx);\n labelMin = d.crossPos + Math.min(startX, endX);\n labelMax = d.crossPos + Math.max(startX, endX);\n }\n }\n if (axIsX) {\n if (axisLabelMinY !== void 0 && axisLabelMaxY !== void 0 && Math.min(labelMax, axisLabelMaxY) - Math.max(labelMin, axisLabelMinY) > 1) {\n if (crossAx.side === \"left\") {\n pmin = crossAx._mainLinePosition;\n pmax = fullLayout.width;\n } else {\n pmax = crossAx._mainLinePosition;\n }\n }\n } else {\n if (axisLabelMinX !== void 0 && axisLabelMaxX !== void 0 && Math.min(labelMax, axisLabelMaxX) - Math.max(labelMin, axisLabelMinX) > 1) {\n if (crossAx.side === \"top\") {\n pmin = crossAx._mainLinePosition;\n pmax = fullLayout.height;\n } else {\n pmax = crossAx._mainLinePosition;\n }\n }\n }\n }\n pointgroups[k++] = [{\n datum: d,\n traceIndex: d.trace.index,\n dp: 0,\n pos: d.pos,\n posref: d.posref,\n size: d.by * (axIsX ? YFACTOR : 1) / 2,\n pmin,\n pmax\n }];\n });\n pointgroups.sort(function(a, b) {\n return a[0].posref - b[0].posref || // for equal positions, sort trace indices increasing or decreasing\n // depending on whether the axis is reversed or not... so stacked\n // traces will generally keep their order even if one trace adds\n // nothing to the stack.\n axSign * (b[0].traceIndex - a[0].traceIndex);\n });\n var donepositioning, topOverlap, bottomOverlap, i, j, pti, sumdp;\n function constrainGroup(grp2) {\n var minPt = grp2[0];\n var maxPt = grp2[grp2.length - 1];\n topOverlap = minPt.pmin - minPt.pos - minPt.dp + minPt.size;\n bottomOverlap = maxPt.pos + maxPt.dp + maxPt.size - minPt.pmax;\n if (topOverlap > 0.01) {\n for (j = grp2.length - 1; j >= 0; j--) grp2[j].dp += topOverlap;\n donepositioning = false;\n }\n if (bottomOverlap < 0.01) return;\n if (topOverlap < -0.01) {\n for (j = grp2.length - 1; j >= 0; j--) grp2[j].dp -= bottomOverlap;\n donepositioning = false;\n }\n if (!donepositioning) return;\n var deleteCount = 0;\n for (i = 0; i < grp2.length; i++) {\n pti = grp2[i];\n if (pti.pos + pti.dp + pti.size > minPt.pmax) deleteCount++;\n }\n for (i = grp2.length - 1; i >= 0; i--) {\n if (deleteCount <= 0) break;\n pti = grp2[i];\n if (pti.pos > minPt.pmax - 1) {\n pti.del = true;\n deleteCount--;\n }\n }\n for (i = 0; i < grp2.length; i++) {\n if (deleteCount <= 0) break;\n pti = grp2[i];\n if (pti.pos < minPt.pmin + 1) {\n pti.del = true;\n deleteCount--;\n bottomOverlap = pti.size * 2;\n for (j = grp2.length - 1; j >= 0; j--) grp2[j].dp -= bottomOverlap;\n }\n }\n for (i = grp2.length - 1; i >= 0; i--) {\n if (deleteCount <= 0) break;\n pti = grp2[i];\n if (pti.pos + pti.dp + pti.size > minPt.pmax) {\n pti.del = true;\n deleteCount--;\n }\n }\n }\n while (!donepositioning && nummoves <= nLabels) {\n nummoves++;\n donepositioning = true;\n i = 0;\n while (i < pointgroups.length - 1) {\n var g0 = pointgroups[i];\n var g1 = pointgroups[i + 1];\n var p0 = g0[g0.length - 1];\n var p1 = g1[0];\n topOverlap = p0.pos + p0.dp + p0.size - p1.pos - p1.dp + p1.size;\n if (topOverlap > 0.01) {\n for (j = g1.length - 1; j >= 0; j--) g1[j].dp += topOverlap;\n g0.push.apply(g0, g1);\n pointgroups.splice(i + 1, 1);\n sumdp = 0;\n for (j = g0.length - 1; j >= 0; j--) sumdp += g0[j].dp;\n bottomOverlap = sumdp / g0.length;\n for (j = g0.length - 1; j >= 0; j--) g0[j].dp -= bottomOverlap;\n donepositioning = false;\n } else i++;\n }\n pointgroups.forEach(constrainGroup);\n }\n for (i = pointgroups.length - 1; i >= 0; i--) {\n var grp = pointgroups[i];\n for (j = grp.length - 1; j >= 0; j--) {\n var pt = grp[j];\n var hoverPt = pt.datum;\n hoverPt.offset = pt.dp;\n hoverPt.del = pt.del;\n }\n }\n }\n function getHoverLabelOffsets(hoverLabel, rotateLabels) {\n var offsetX = 0;\n var offsetY = hoverLabel.offset;\n if (rotateLabels) {\n offsetY *= -YSHIFTY;\n offsetX = hoverLabel.offset * YSHIFTX;\n }\n return {\n x: offsetX,\n y: offsetY\n };\n }\n function getTextShiftX(hoverLabel) {\n var alignShift = { start: 1, end: -1, middle: 0 }[hoverLabel.anchor];\n var textShiftX = alignShift * (HOVERARROWSIZE + HOVERTEXTPAD);\n var text2ShiftX = textShiftX + alignShift * (hoverLabel.txwidth + HOVERTEXTPAD);\n var isMiddle = hoverLabel.anchor === \"middle\";\n if (isMiddle) {\n textShiftX -= hoverLabel.tx2width / 2;\n text2ShiftX += hoverLabel.txwidth / 2 + HOVERTEXTPAD;\n }\n return {\n alignShift,\n textShiftX,\n text2ShiftX\n };\n }\n function alignHoverText(hoverLabels, rotateLabels, scaleX, scaleY) {\n var pX = function(x) {\n return x * scaleX;\n };\n var pY = function(y) {\n return y * scaleY;\n };\n hoverLabels.each(function(d) {\n var g = d3.select(this);\n if (d.del) return g.remove();\n var tx = g.select(\"text.nums\");\n var anchor = d.anchor;\n var horzSign = anchor === \"end\" ? -1 : 1;\n var shiftX = getTextShiftX(d);\n var offsets = getHoverLabelOffsets(d, rotateLabels);\n var offsetX = offsets.x;\n var offsetY = offsets.y;\n var isMiddle = anchor === \"middle\";\n g.select(\"path\").attr(\"d\", isMiddle ? (\n // middle aligned: rect centered on data\n \"M-\" + pX(d.bx / 2 + d.tx2width / 2) + \",\" + pY(offsetY - d.by / 2) + \"h\" + pX(d.bx) + \"v\" + pY(d.by) + \"h-\" + pX(d.bx) + \"Z\"\n ) : (\n // left or right aligned: side rect with arrow to data\n \"M0,0L\" + pX(horzSign * HOVERARROWSIZE + offsetX) + \",\" + pY(HOVERARROWSIZE + offsetY) + \"v\" + pY(d.by / 2 - HOVERARROWSIZE) + \"h\" + pX(horzSign * d.bx) + \"v-\" + pY(d.by) + \"H\" + pX(horzSign * HOVERARROWSIZE + offsetX) + \"V\" + pY(offsetY - HOVERARROWSIZE) + \"Z\"\n ));\n var posX = offsetX + shiftX.textShiftX;\n var posY = offsetY + d.ty0 - d.by / 2 + HOVERTEXTPAD;\n var textAlign = d.textAlign || \"auto\";\n if (textAlign !== \"auto\") {\n if (textAlign === \"left\" && anchor !== \"start\") {\n tx.attr(\"text-anchor\", \"start\");\n posX = isMiddle ? -d.bx / 2 - d.tx2width / 2 + HOVERTEXTPAD : -d.bx - HOVERTEXTPAD;\n } else if (textAlign === \"right\" && anchor !== \"end\") {\n tx.attr(\"text-anchor\", \"end\");\n posX = isMiddle ? d.bx / 2 - d.tx2width / 2 - HOVERTEXTPAD : d.bx + HOVERTEXTPAD;\n }\n }\n tx.call(svgTextUtils.positionText, pX(posX), pY(posY));\n if (d.tx2width) {\n g.select(\"text.name\").call(\n svgTextUtils.positionText,\n pX(shiftX.text2ShiftX + shiftX.alignShift * HOVERTEXTPAD + offsetX),\n pY(offsetY + d.ty0 - d.by / 2 + HOVERTEXTPAD)\n );\n g.select(\"rect\").call(\n Drawing.setRect,\n pX(shiftX.text2ShiftX + (shiftX.alignShift - 1) * d.tx2width / 2 + offsetX),\n pY(offsetY - d.by / 2 - 1),\n pX(d.tx2width),\n pY(d.by + 2)\n );\n }\n });\n }\n function cleanPoint(d, hovermode) {\n var index = d.index;\n var trace = d.trace || {};\n var cd0 = d.cd[0];\n var cd = d.cd[index] || {};\n function pass(v) {\n return v || isNumeric(v) && v === 0;\n }\n var getVal = Array.isArray(index) ? function(calcKey, traceKey) {\n var v = Lib.castOption(cd0, index, calcKey);\n return pass(v) ? v : Lib.extractOption({}, trace, \"\", traceKey);\n } : function(calcKey, traceKey) {\n return Lib.extractOption(cd, trace, calcKey, traceKey);\n };\n function fill(key, calcKey, traceKey) {\n var val = getVal(calcKey, traceKey);\n if (pass(val)) d[key] = val;\n }\n fill(\"hoverinfo\", \"hi\", \"hoverinfo\");\n fill(\"bgcolor\", \"hbg\", \"hoverlabel.bgcolor\");\n fill(\"borderColor\", \"hbc\", \"hoverlabel.bordercolor\");\n fill(\"fontFamily\", \"htf\", \"hoverlabel.font.family\");\n fill(\"fontSize\", \"hts\", \"hoverlabel.font.size\");\n fill(\"fontColor\", \"htc\", \"hoverlabel.font.color\");\n fill(\"fontWeight\", \"htw\", \"hoverlabel.font.weight\");\n fill(\"fontStyle\", \"hty\", \"hoverlabel.font.style\");\n fill(\"fontVariant\", \"htv\", \"hoverlabel.font.variant\");\n fill(\"nameLength\", \"hnl\", \"hoverlabel.namelength\");\n fill(\"textAlign\", \"hta\", \"hoverlabel.align\");\n d.posref = hovermode === \"y\" || hovermode === \"closest\" && trace.orientation === \"h\" ? d.xa._offset + (d.x0 + d.x1) / 2 : d.ya._offset + (d.y0 + d.y1) / 2;\n d.x0 = Lib.constrain(d.x0, 0, d.xa._length);\n d.x1 = Lib.constrain(d.x1, 0, d.xa._length);\n d.y0 = Lib.constrain(d.y0, 0, d.ya._length);\n d.y1 = Lib.constrain(d.y1, 0, d.ya._length);\n if (d.xLabelVal !== void 0) {\n d.xLabel = \"xLabel\" in d ? d.xLabel : Axes.hoverLabelText(d.xa, d.xLabelVal, trace.xhoverformat);\n d.xVal = d.xa.c2d(d.xLabelVal);\n }\n if (d.yLabelVal !== void 0) {\n d.yLabel = \"yLabel\" in d ? d.yLabel : Axes.hoverLabelText(d.ya, d.yLabelVal, trace.yhoverformat);\n d.yVal = d.ya.c2d(d.yLabelVal);\n }\n if (d.zLabelVal !== void 0 && d.zLabel === void 0) {\n d.zLabel = String(d.zLabelVal);\n }\n if (!isNaN(d.xerr) && !(d.xa.type === \"log\" && d.xerr <= 0)) {\n var xeText = Axes.tickText(d.xa, d.xa.c2l(d.xerr), \"hover\").text;\n if (d.xerrneg !== void 0) {\n d.xLabel += \" +\" + xeText + \" / -\" + Axes.tickText(d.xa, d.xa.c2l(d.xerrneg), \"hover\").text;\n } else d.xLabel += \" \\xB1 \" + xeText;\n if (hovermode === \"x\") d.distance += 1;\n }\n if (!isNaN(d.yerr) && !(d.ya.type === \"log\" && d.yerr <= 0)) {\n var yeText = Axes.tickText(d.ya, d.ya.c2l(d.yerr), \"hover\").text;\n if (d.yerrneg !== void 0) {\n d.yLabel += \" +\" + yeText + \" / -\" + Axes.tickText(d.ya, d.ya.c2l(d.yerrneg), \"hover\").text;\n } else d.yLabel += \" \\xB1 \" + yeText;\n if (hovermode === \"y\") d.distance += 1;\n }\n var infomode = d.hoverinfo || d.trace.hoverinfo;\n if (infomode && infomode !== \"all\") {\n infomode = Array.isArray(infomode) ? infomode : infomode.split(\"+\");\n if (infomode.indexOf(\"x\") === -1) d.xLabel = void 0;\n if (infomode.indexOf(\"y\") === -1) d.yLabel = void 0;\n if (infomode.indexOf(\"z\") === -1) d.zLabel = void 0;\n if (infomode.indexOf(\"text\") === -1) d.text = void 0;\n if (infomode.indexOf(\"name\") === -1) d.name = void 0;\n }\n return d;\n }\n function createSpikelines(gd, closestPoints, opts) {\n var container = opts.container;\n var fullLayout = opts.fullLayout;\n var gs = fullLayout._size;\n var evt = opts.event;\n var showY = !!closestPoints.hLinePoint;\n var showX = !!closestPoints.vLinePoint;\n var xa, ya;\n container.selectAll(\".spikeline\").remove();\n if (!(showX || showY)) return;\n var contrastColor = Color.combine(fullLayout.plot_bgcolor, fullLayout.paper_bgcolor);\n if (showY) {\n var hLinePoint = closestPoints.hLinePoint;\n var hLinePointX, hLinePointY;\n xa = hLinePoint && hLinePoint.xa;\n ya = hLinePoint && hLinePoint.ya;\n var ySnap = ya.spikesnap;\n if (ySnap === \"cursor\") {\n hLinePointX = evt.pointerX;\n hLinePointY = evt.pointerY;\n } else {\n hLinePointX = xa._offset + hLinePoint.x;\n hLinePointY = ya._offset + hLinePoint.y;\n }\n var dfltHLineColor = tinycolor.readability(hLinePoint.color, contrastColor) < 1.5 ? Color.contrast(contrastColor) : hLinePoint.color;\n var yMode = ya.spikemode;\n var yThickness = ya.spikethickness;\n var yColor = ya.spikecolor || dfltHLineColor;\n var xEdge = Axes.getPxPosition(gd, ya);\n var xBase, xEndSpike;\n if (yMode.indexOf(\"toaxis\") !== -1 || yMode.indexOf(\"across\") !== -1) {\n if (yMode.indexOf(\"toaxis\") !== -1) {\n xBase = xEdge;\n xEndSpike = hLinePointX;\n }\n if (yMode.indexOf(\"across\") !== -1) {\n var xAcross0 = ya._counterDomainMin;\n var xAcross1 = ya._counterDomainMax;\n if (ya.anchor === \"free\") {\n xAcross0 = Math.min(xAcross0, ya.position);\n xAcross1 = Math.max(xAcross1, ya.position);\n }\n xBase = gs.l + xAcross0 * gs.w;\n xEndSpike = gs.l + xAcross1 * gs.w;\n }\n container.insert(\"line\", \":first-child\").attr({\n x1: xBase,\n x2: xEndSpike,\n y1: hLinePointY,\n y2: hLinePointY,\n \"stroke-width\": yThickness,\n stroke: yColor,\n \"stroke-dasharray\": Drawing.dashStyle(ya.spikedash, yThickness)\n }).classed(\"spikeline\", true).classed(\"crisp\", true);\n container.insert(\"line\", \":first-child\").attr({\n x1: xBase,\n x2: xEndSpike,\n y1: hLinePointY,\n y2: hLinePointY,\n \"stroke-width\": yThickness + 2,\n stroke: contrastColor\n }).classed(\"spikeline\", true).classed(\"crisp\", true);\n }\n if (yMode.indexOf(\"marker\") !== -1) {\n container.insert(\"circle\", \":first-child\").attr({\n cx: xEdge + (ya.side !== \"right\" ? yThickness : -yThickness),\n cy: hLinePointY,\n r: yThickness,\n fill: yColor\n }).classed(\"spikeline\", true);\n }\n }\n if (showX) {\n var vLinePoint = closestPoints.vLinePoint;\n var vLinePointX, vLinePointY;\n xa = vLinePoint && vLinePoint.xa;\n ya = vLinePoint && vLinePoint.ya;\n var xSnap = xa.spikesnap;\n if (xSnap === \"cursor\") {\n vLinePointX = evt.pointerX;\n vLinePointY = evt.pointerY;\n } else {\n vLinePointX = xa._offset + vLinePoint.x;\n vLinePointY = ya._offset + vLinePoint.y;\n }\n var dfltVLineColor = tinycolor.readability(vLinePoint.color, contrastColor) < 1.5 ? Color.contrast(contrastColor) : vLinePoint.color;\n var xMode = xa.spikemode;\n var xThickness = xa.spikethickness;\n var xColor = xa.spikecolor || dfltVLineColor;\n var yEdge = Axes.getPxPosition(gd, xa);\n var yBase, yEndSpike;\n if (xMode.indexOf(\"toaxis\") !== -1 || xMode.indexOf(\"across\") !== -1) {\n if (xMode.indexOf(\"toaxis\") !== -1) {\n yBase = yEdge;\n yEndSpike = vLinePointY;\n }\n if (xMode.indexOf(\"across\") !== -1) {\n var yAcross0 = xa._counterDomainMin;\n var yAcross1 = xa._counterDomainMax;\n if (xa.anchor === \"free\") {\n yAcross0 = Math.min(yAcross0, xa.position);\n yAcross1 = Math.max(yAcross1, xa.position);\n }\n yBase = gs.t + (1 - yAcross1) * gs.h;\n yEndSpike = gs.t + (1 - yAcross0) * gs.h;\n }\n container.insert(\"line\", \":first-child\").attr({\n x1: vLinePointX,\n x2: vLinePointX,\n y1: yBase,\n y2: yEndSpike,\n \"stroke-width\": xThickness,\n stroke: xColor,\n \"stroke-dasharray\": Drawing.dashStyle(xa.spikedash, xThickness)\n }).classed(\"spikeline\", true).classed(\"crisp\", true);\n container.insert(\"line\", \":first-child\").attr({\n x1: vLinePointX,\n x2: vLinePointX,\n y1: yBase,\n y2: yEndSpike,\n \"stroke-width\": xThickness + 2,\n stroke: contrastColor\n }).classed(\"spikeline\", true).classed(\"crisp\", true);\n }\n if (xMode.indexOf(\"marker\") !== -1) {\n container.insert(\"circle\", \":first-child\").attr({\n cx: vLinePointX,\n cy: yEdge - (xa.side !== \"top\" ? xThickness : -xThickness),\n r: xThickness,\n fill: xColor\n }).classed(\"spikeline\", true);\n }\n }\n }\n function hoverChanged(gd, evt, oldhoverdata) {\n if (!oldhoverdata || oldhoverdata.length !== gd._hoverdata.length) return true;\n for (var i = oldhoverdata.length - 1; i >= 0; i--) {\n var oldPt = oldhoverdata[i];\n var newPt = gd._hoverdata[i];\n if (oldPt.curveNumber !== newPt.curveNumber || String(oldPt.pointNumber) !== String(newPt.pointNumber) || String(oldPt.pointNumbers) !== String(newPt.pointNumbers)) {\n return true;\n }\n }\n return false;\n }\n function spikesChanged(gd, oldspikepoints) {\n if (!oldspikepoints) return true;\n if (oldspikepoints.vLinePoint !== gd._spikepoints.vLinePoint || oldspikepoints.hLinePoint !== gd._spikepoints.hLinePoint) return true;\n return false;\n }\n function plainText(s, len) {\n return svgTextUtils.plainText(s || \"\", {\n len,\n allowedTags: [\"br\", \"sub\", \"sup\", \"b\", \"i\", \"em\", \"s\", \"u\"]\n });\n }\n function orderRangePoints(hoverData, hovermode) {\n var axLetter = hovermode.charAt(0);\n var first = [];\n var second = [];\n var last = [];\n for (var i = 0; i < hoverData.length; i++) {\n var d = hoverData[i];\n if (Registry.traceIs(d.trace, \"bar-like\") || Registry.traceIs(d.trace, \"box-violin\")) {\n last.push(d);\n } else if (d.trace[axLetter + \"period\"]) {\n second.push(d);\n } else {\n first.push(d);\n }\n }\n return first.concat(second).concat(last);\n }\n function getCoord(axLetter, winningPoint, fullLayout) {\n var ax = winningPoint[axLetter + \"a\"];\n var val = winningPoint[axLetter + \"Val\"];\n var cd0 = winningPoint.cd[0];\n if (ax.type === \"category\" || ax.type === \"multicategory\") val = ax._categoriesMap[val];\n else if (ax.type === \"date\") {\n var periodalignment = winningPoint.trace[axLetter + \"periodalignment\"];\n if (periodalignment) {\n var d = winningPoint.cd[winningPoint.index];\n var start = d[axLetter + \"Start\"];\n if (start === void 0) start = d[axLetter];\n var end = d[axLetter + \"End\"];\n if (end === void 0) end = d[axLetter];\n var diff = end - start;\n if (periodalignment === \"end\") {\n val += diff;\n } else if (periodalignment === \"middle\") {\n val += diff / 2;\n }\n }\n val = ax.d2c(val);\n }\n if (cd0 && cd0.t && cd0.t.posLetter === ax._id) {\n if (fullLayout.boxmode === \"group\" || fullLayout.violinmode === \"group\") {\n val += cd0.t.dPos;\n }\n }\n return val;\n }\n function getTopOffset(gd) {\n return gd.offsetTop + gd.clientTop;\n }\n function getLeftOffset(gd) {\n return gd.offsetLeft + gd.clientLeft;\n }\n function getBoundingClientRect(gd, node) {\n var fullLayout = gd._fullLayout;\n var rect = node.getBoundingClientRect();\n var x0 = rect.left;\n var y0 = rect.top;\n var x1 = x0 + rect.width;\n var y1 = y0 + rect.height;\n var A = Lib.apply3DTransform(fullLayout._invTransform)(x0, y0);\n var B = Lib.apply3DTransform(fullLayout._invTransform)(x1, y1);\n var Ax = A[0];\n var Ay = A[1];\n var Bx = B[0];\n var By = B[1];\n return {\n x: Ax,\n y: Ay,\n width: Bx - Ax,\n height: By - Ay,\n top: Math.min(Ay, By),\n left: Math.min(Ax, Bx),\n right: Math.max(Ax, Bx),\n bottom: Math.max(Ay, By)\n };\n }\n }\n });\n\n // src/components/fx/hoverlabel_defaults.js\n var require_hoverlabel_defaults = __commonJS({\n \"src/components/fx/hoverlabel_defaults.js\"(exports, module) {\n \"use strict\";\n var Lib = require_lib();\n var Color = require_color();\n var isUnifiedHover = require_helpers2().isUnifiedHover;\n module.exports = function handleHoverLabelDefaults(contIn, contOut, coerce, opts) {\n opts = opts || {};\n var hasLegend = contOut.legend;\n function inheritFontAttr(attr) {\n if (!opts.font[attr]) {\n opts.font[attr] = hasLegend ? contOut.legend.font[attr] : contOut.font[attr];\n }\n }\n if (contOut && isUnifiedHover(contOut.hovermode)) {\n if (!opts.font) opts.font = {};\n inheritFontAttr(\"size\");\n inheritFontAttr(\"family\");\n inheritFontAttr(\"color\");\n inheritFontAttr(\"weight\");\n inheritFontAttr(\"style\");\n inheritFontAttr(\"variant\");\n if (hasLegend) {\n if (!opts.bgcolor) opts.bgcolor = Color.combine(contOut.legend.bgcolor, contOut.paper_bgcolor);\n if (!opts.bordercolor) opts.bordercolor = contOut.legend.bordercolor;\n } else {\n if (!opts.bgcolor) opts.bgcolor = contOut.paper_bgcolor;\n }\n }\n coerce(\"hoverlabel.bgcolor\", opts.bgcolor);\n coerce(\"hoverlabel.bordercolor\", opts.bordercolor);\n coerce(\"hoverlabel.namelength\", opts.namelength);\n Lib.coerceFont(coerce, \"hoverlabel.font\", opts.font);\n coerce(\"hoverlabel.align\", opts.align);\n };\n }\n });\n\n // src/components/fx/layout_global_defaults.js\n var require_layout_global_defaults = __commonJS({\n \"src/components/fx/layout_global_defaults.js\"(exports, module) {\n \"use strict\";\n var Lib = require_lib();\n var handleHoverLabelDefaults = require_hoverlabel_defaults();\n var layoutAttributes = require_layout_attributes();\n module.exports = function supplyLayoutGlobalDefaults(layoutIn, layoutOut) {\n function coerce(attr, dflt) {\n return Lib.coerce(layoutIn, layoutOut, layoutAttributes, attr, dflt);\n }\n handleHoverLabelDefaults(layoutIn, layoutOut, coerce);\n };\n }\n });\n\n // src/components/fx/defaults.js\n var require_defaults4 = __commonJS({\n \"src/components/fx/defaults.js\"(exports, module) {\n \"use strict\";\n var Lib = require_lib();\n var attributes = require_attributes();\n var handleHoverLabelDefaults = require_hoverlabel_defaults();\n module.exports = function supplyDefaults(traceIn, traceOut, defaultColor, layout) {\n function coerce(attr, dflt) {\n return Lib.coerce(traceIn, traceOut, attributes, attr, dflt);\n }\n var opts = Lib.extendFlat({}, layout.hoverlabel);\n if (traceOut.hovertemplate) opts.namelength = -1;\n handleHoverLabelDefaults(traceIn, traceOut, coerce, opts);\n };\n }\n });\n\n // src/components/fx/hovermode_defaults.js\n var require_hovermode_defaults = __commonJS({\n \"src/components/fx/hovermode_defaults.js\"(exports, module) {\n \"use strict\";\n var Lib = require_lib();\n var layoutAttributes = require_layout_attributes();\n module.exports = function handleHoverModeDefaults(layoutIn, layoutOut) {\n function coerce(attr, dflt) {\n if (layoutOut[attr] !== void 0) return layoutOut[attr];\n return Lib.coerce(layoutIn, layoutOut, layoutAttributes, attr, dflt);\n }\n coerce(\"clickmode\");\n coerce(\"hoversubplots\");\n return coerce(\"hovermode\");\n };\n }\n });\n\n // src/components/fx/layout_defaults.js\n var require_layout_defaults2 = __commonJS({\n \"src/components/fx/layout_defaults.js\"(exports, module) {\n \"use strict\";\n var Lib = require_lib();\n var layoutAttributes = require_layout_attributes();\n var handleHoverModeDefaults = require_hovermode_defaults();\n var handleHoverLabelDefaults = require_hoverlabel_defaults();\n module.exports = function supplyLayoutDefaults(layoutIn, layoutOut) {\n function coerce(attr, dflt) {\n return Lib.coerce(layoutIn, layoutOut, layoutAttributes, attr, dflt);\n }\n var hoverMode = handleHoverModeDefaults(layoutIn, layoutOut);\n if (hoverMode) {\n coerce(\"hoverdistance\");\n coerce(\"spikedistance\");\n }\n var dragMode = coerce(\"dragmode\");\n if (dragMode === \"select\") coerce(\"selectdirection\");\n var hasMapbox = layoutOut._has(\"mapbox\");\n var hasMap = layoutOut._has(\"map\");\n var hasGeo = layoutOut._has(\"geo\");\n var len = layoutOut._basePlotModules.length;\n if (layoutOut.dragmode === \"zoom\" && ((hasMapbox || hasMap || hasGeo) && len === 1 || (hasMapbox || hasMap) && hasGeo && len === 2)) {\n layoutOut.dragmode = \"pan\";\n }\n handleHoverLabelDefaults(layoutIn, layoutOut, coerce);\n Lib.coerceFont(coerce, \"hoverlabel.grouptitlefont\", layoutOut.hoverlabel.font);\n };\n }\n });\n\n // src/components/fx/calc.js\n var require_calc2 = __commonJS({\n \"src/components/fx/calc.js\"(exports, module) {\n \"use strict\";\n var Lib = require_lib();\n var Registry = require_registry();\n module.exports = function calc(gd) {\n var calcdata = gd.calcdata;\n var fullLayout = gd._fullLayout;\n function makeCoerceHoverInfo(trace2) {\n return function(val) {\n return Lib.coerceHoverinfo({ hoverinfo: val }, { _module: trace2._module }, fullLayout);\n };\n }\n for (var i = 0; i < calcdata.length; i++) {\n var cd = calcdata[i];\n var trace = cd[0].trace;\n if (Registry.traceIs(trace, \"pie-like\")) continue;\n var fillFn = Registry.traceIs(trace, \"2dMap\") ? paste : Lib.fillArray;\n fillFn(trace.hoverinfo, cd, \"hi\", makeCoerceHoverInfo(trace));\n if (trace.hovertemplate) fillFn(trace.hovertemplate, cd, \"ht\");\n if (!trace.hoverlabel) continue;\n fillFn(trace.hoverlabel.bgcolor, cd, \"hbg\");\n fillFn(trace.hoverlabel.bordercolor, cd, \"hbc\");\n fillFn(trace.hoverlabel.font.size, cd, \"hts\");\n fillFn(trace.hoverlabel.font.color, cd, \"htc\");\n fillFn(trace.hoverlabel.font.family, cd, \"htf\");\n fillFn(trace.hoverlabel.font.weight, cd, \"htw\");\n fillFn(trace.hoverlabel.font.style, cd, \"hty\");\n fillFn(trace.hoverlabel.font.variant, cd, \"htv\");\n fillFn(trace.hoverlabel.namelength, cd, \"hnl\");\n fillFn(trace.hoverlabel.align, cd, \"hta\");\n }\n };\n function paste(traceAttr, cd, cdAttr, fn) {\n fn = fn || Lib.identity;\n if (Array.isArray(traceAttr)) {\n cd[0][cdAttr] = fn(traceAttr);\n }\n }\n }\n });\n\n // src/components/fx/click.js\n var require_click = __commonJS({\n \"src/components/fx/click.js\"(exports, module) {\n \"use strict\";\n var Registry = require_registry();\n var hover = require_hover().hover;\n module.exports = function click(gd, evt, subplot) {\n var annotationsDone = Registry.getComponentMethod(\"annotations\", \"onClick\")(gd, gd._hoverdata);\n if (subplot !== void 0) {\n hover(gd, evt, subplot, true);\n }\n function emitClick() {\n gd.emit(\"plotly_click\", { points: gd._hoverdata, event: evt });\n }\n if (gd._hoverdata && evt && evt.target) {\n if (annotationsDone && annotationsDone.then) {\n annotationsDone.then(emitClick);\n } else emitClick();\n if (evt.stopImmediatePropagation) evt.stopImmediatePropagation();\n }\n };\n }\n });\n\n // src/components/fx/index.js\n var require_fx = __commonJS({\n \"src/components/fx/index.js\"(exports, module) {\n \"use strict\";\n var d3 = require_d3();\n var Lib = require_lib();\n var dragElement = require_dragelement();\n var helpers = require_helpers2();\n var layoutAttributes = require_layout_attributes();\n var hoverModule = require_hover();\n module.exports = {\n moduleType: \"component\",\n name: \"fx\",\n constants: require_constants(),\n schema: {\n layout: layoutAttributes\n },\n attributes: require_attributes(),\n layoutAttributes,\n supplyLayoutGlobalDefaults: require_layout_global_defaults(),\n supplyDefaults: require_defaults4(),\n supplyLayoutDefaults: require_layout_defaults2(),\n calc: require_calc2(),\n getDistanceFunction: helpers.getDistanceFunction,\n getClosest: helpers.getClosest,\n inbox: helpers.inbox,\n quadrature: helpers.quadrature,\n appendArrayPointValue: helpers.appendArrayPointValue,\n castHoverOption,\n castHoverinfo,\n hover: hoverModule.hover,\n unhover: dragElement.unhover,\n loneHover: hoverModule.loneHover,\n loneUnhover,\n click: require_click()\n };\n function loneUnhover(containerOrSelection) {\n var selection = Lib.isD3Selection(containerOrSelection) ? containerOrSelection : d3.select(containerOrSelection);\n selection.selectAll(\"g.hovertext\").remove();\n selection.selectAll(\".spikeline\").remove();\n }\n function castHoverOption(trace, ptNumber, attr) {\n return Lib.castOption(trace, ptNumber, \"hoverlabel.\" + attr);\n }\n function castHoverinfo(trace, fullLayout, ptNumber) {\n function _coerce(val) {\n return Lib.coerceHoverinfo({ hoverinfo: val }, { _module: trace._module }, fullLayout);\n }\n return Lib.castOption(trace, ptNumber, \"hoverinfo\", _coerce);\n }\n }\n });\n\n // src/components/dragelement/helpers.js\n var require_helpers5 = __commonJS({\n \"src/components/dragelement/helpers.js\"(exports) {\n \"use strict\";\n exports.selectMode = function(dragmode) {\n return dragmode === \"lasso\" || dragmode === \"select\";\n };\n exports.drawMode = function(dragmode) {\n return dragmode === \"drawclosedpath\" || dragmode === \"drawopenpath\" || dragmode === \"drawline\" || dragmode === \"drawrect\" || dragmode === \"drawcircle\";\n };\n exports.openMode = function(dragmode) {\n return dragmode === \"drawline\" || dragmode === \"drawopenpath\";\n };\n exports.rectMode = function(dragmode) {\n return dragmode === \"select\" || dragmode === \"drawline\" || dragmode === \"drawrect\" || dragmode === \"drawcircle\";\n };\n exports.freeMode = function(dragmode) {\n return dragmode === \"lasso\" || dragmode === \"drawclosedpath\" || dragmode === \"drawopenpath\";\n };\n exports.selectingOrDrawing = function(dragmode) {\n return exports.freeMode(dragmode) || exports.rectMode(dragmode);\n };\n }\n });\n\n // src/lib/clear_gl_canvases.js\n var require_clear_gl_canvases = __commonJS({\n \"src/lib/clear_gl_canvases.js\"(exports, module) {\n \"use strict\";\n module.exports = function clearGlCanvases(gd) {\n var fullLayout = gd._fullLayout;\n if (fullLayout._glcanvas && fullLayout._glcanvas.size()) {\n fullLayout._glcanvas.each(function(d) {\n if (d.regl) d.regl.clear({ color: true, depth: true });\n });\n }\n };\n }\n });\n\n // src/fonts/ploticon.js\n var require_ploticon = __commonJS({\n \"src/fonts/ploticon.js\"(exports, module) {\n \"use strict\";\n module.exports = {\n undo: {\n width: 857.1,\n height: 1e3,\n path: \"m857 350q0-87-34-166t-91-137-137-92-166-34q-96 0-183 41t-147 114q-4 6-4 13t5 11l76 77q6 5 14 5 9-1 13-7 41-53 100-82t126-29q58 0 110 23t92 61 61 91 22 111-22 111-61 91-92 61-110 23q-55 0-105-20t-90-57l77-77q17-16 8-38-10-23-33-23h-250q-15 0-25 11t-11 25v250q0 24 22 33 22 10 39-8l72-72q60 57 137 88t159 31q87 0 166-34t137-92 91-137 34-166z\",\n transform: \"matrix(1 0 0 -1 0 850)\"\n },\n home: {\n width: 928.6,\n height: 1e3,\n path: \"m786 296v-267q0-15-11-26t-25-10h-214v214h-143v-214h-214q-15 0-25 10t-11 26v267q0 1 0 2t0 2l321 264 321-264q1-1 1-4z m124 39l-34-41q-5-5-12-6h-2q-7 0-12 3l-386 322-386-322q-7-4-13-4-7 2-12 7l-35 41q-4 5-3 13t6 12l401 334q18 15 42 15t43-15l136-114v109q0 8 5 13t13 5h107q8 0 13-5t5-13v-227l122-102q5-5 6-12t-4-13z\",\n transform: \"matrix(1 0 0 -1 0 850)\"\n },\n \"camera-retro\": {\n width: 1e3,\n height: 1e3,\n path: \"m518 386q0 8-5 13t-13 5q-37 0-63-27t-26-63q0-8 5-13t13-5 12 5 5 13q0 23 16 38t38 16q8 0 13 5t5 13z m125-73q0-59-42-101t-101-42-101 42-42 101 42 101 101 42 101-42 42-101z m-572-320h858v71h-858v-71z m643 320q0 89-62 152t-152 62-151-62-63-152 63-151 151-63 152 63 62 151z m-571 358h214v72h-214v-72z m-72-107h858v143h-462l-36-71h-360v-72z m929 143v-714q0-30-21-51t-50-21h-858q-29 0-50 21t-21 51v714q0 30 21 51t50 21h858q29 0 50-21t21-51z\",\n transform: \"matrix(1 0 0 -1 0 850)\"\n },\n zoombox: {\n width: 1e3,\n height: 1e3,\n path: \"m1000-25l-250 251c40 63 63 138 63 218 0 224-182 406-407 406-224 0-406-182-406-406s183-406 407-406c80 0 155 22 218 62l250-250 125 125z m-812 250l0 438 437 0 0-438-437 0z m62 375l313 0 0-312-313 0 0 312z\",\n transform: \"matrix(1 0 0 -1 0 850)\"\n },\n pan: {\n width: 1e3,\n height: 1e3,\n path: \"m1000 350l-187 188 0-125-250 0 0 250 125 0-188 187-187-187 125 0 0-250-250 0 0 125-188-188 186-187 0 125 252 0 0-250-125 0 187-188 188 188-125 0 0 250 250 0 0-126 187 188z\",\n transform: \"matrix(1 0 0 -1 0 850)\"\n },\n zoom_plus: {\n width: 875,\n height: 1e3,\n path: \"m1 787l0-875 875 0 0 875-875 0z m687-500l-187 0 0-187-125 0 0 187-188 0 0 125 188 0 0 187 125 0 0-187 187 0 0-125z\",\n transform: \"matrix(1 0 0 -1 0 850)\"\n },\n zoom_minus: {\n width: 875,\n height: 1e3,\n path: \"m0 788l0-876 875 0 0 876-875 0z m688-500l-500 0 0 125 500 0 0-125z\",\n transform: \"matrix(1 0 0 -1 0 850)\"\n },\n autoscale: {\n width: 1e3,\n height: 1e3,\n path: \"m250 850l-187 0-63 0 0-62 0-188 63 0 0 188 187 0 0 62z m688 0l-188 0 0-62 188 0 0-188 62 0 0 188 0 62-62 0z m-875-938l0 188-63 0 0-188 0-62 63 0 187 0 0 62-187 0z m875 188l0-188-188 0 0-62 188 0 62 0 0 62 0 188-62 0z m-125 188l-1 0-93-94-156 156 156 156 92-93 2 0 0 250-250 0 0-2 93-92-156-156-156 156 94 92 0 2-250 0 0-250 0 0 93 93 157-156-157-156-93 94 0 0 0-250 250 0 0 0-94 93 156 157 156-157-93-93 0 0 250 0 0 250z\",\n transform: \"matrix(1 0 0 -1 0 850)\"\n },\n tooltip_basic: {\n width: 1500,\n height: 1e3,\n path: \"m375 725l0 0-375-375 375-374 0-1 1125 0 0 750-1125 0z\",\n transform: \"matrix(1 0 0 -1 0 850)\"\n },\n tooltip_compare: {\n width: 1125,\n height: 1e3,\n path: \"m187 786l0 2-187-188 188-187 0 0 937 0 0 373-938 0z m0-499l0 1-187-188 188-188 0 0 937 0 0 376-938-1z\",\n transform: \"matrix(1 0 0 -1 0 850)\"\n },\n plotlylogo: {\n width: 1542,\n height: 1e3,\n path: \"m0-10h182v-140h-182v140z m228 146h183v-286h-183v286z m225 714h182v-1000h-182v1000z m225-285h182v-715h-182v715z m225 142h183v-857h-183v857z m231-428h182v-429h-182v429z m225-291h183v-138h-183v138z\",\n transform: \"matrix(1 0 0 -1 0 850)\"\n },\n \"z-axis\": {\n width: 1e3,\n height: 1e3,\n path: \"m833 5l-17 108v41l-130-65 130-66c0 0 0 38 0 39 0-1 36-14 39-25 4-15-6-22-16-30-15-12-39-16-56-20-90-22-187-23-279-23-261 0-341 34-353 59 3 60 228 110 228 110-140-8-351-35-351-116 0-120 293-142 474-142 155 0 477 22 477 142 0 50-74 79-163 96z m-374 94c-58-5-99-21-99-40 0-24 65-43 144-43 79 0 143 19 143 43 0 19-42 34-98 40v216h87l-132 135-133-135h88v-216z m167 515h-136v1c16 16 31 34 46 52l84 109v54h-230v-71h124v-1c-16-17-28-32-44-51l-89-114v-51h245v72z\",\n transform: \"matrix(1 0 0 -1 0 850)\"\n },\n \"3d_rotate\": {\n width: 1e3,\n height: 1e3,\n path: \"m922 660c-5 4-9 7-14 11-359 263-580-31-580-31l-102 28 58-400c0 1 1 1 2 2 118 108 351 249 351 249s-62 27-100 42c88 83 222 183 347 122 16-8 30-17 44-27-2 1-4 2-6 4z m36-329c0 0 64 229-88 296-62 27-124 14-175-11 157-78 225-208 249-266 8-19 11-31 11-31 2 5 6 15 11 32-5-13-8-20-8-20z m-775-239c70-31 117-50 198-32-121 80-199 346-199 346l-96-15-58-12c0 0 55-226 155-287z m603 133l-317-139c0 0 4-4 19-14 7-5 24-15 24-15s-177-147-389 4c235-287 536-112 536-112l31-22 100 299-4-1z m-298-153c6-4 14-9 24-15 0 0-17 10-24 15z\",\n transform: \"matrix(1 0 0 -1 0 850)\"\n },\n camera: {\n width: 1e3,\n height: 1e3,\n path: \"m500 450c-83 0-150-67-150-150 0-83 67-150 150-150 83 0 150 67 150 150 0 83-67 150-150 150z m400 150h-120c-16 0-34 13-39 29l-31 93c-6 15-23 28-40 28h-340c-16 0-34-13-39-28l-31-94c-6-15-23-28-40-28h-120c-55 0-100-45-100-100v-450c0-55 45-100 100-100h800c55 0 100 45 100 100v450c0 55-45 100-100 100z m-400-550c-138 0-250 112-250 250 0 138 112 250 250 250 138 0 250-112 250-250 0-138-112-250-250-250z m365 380c-19 0-35 16-35 35 0 19 16 35 35 35 19 0 35-16 35-35 0-19-16-35-35-35z\",\n transform: \"matrix(1 0 0 -1 0 850)\"\n },\n movie: {\n width: 1e3,\n height: 1e3,\n path: \"m938 413l-188-125c0 37-17 71-44 94 64 38 107 107 107 187 0 121-98 219-219 219-121 0-219-98-219-219 0-61 25-117 66-156h-115c30 33 49 76 49 125 0 103-84 187-187 187s-188-84-188-187c0-57 26-107 65-141-38-22-65-62-65-109v-250c0-70 56-126 125-126h500c69 0 125 56 125 126l188-126c34 0 62 28 62 63v375c0 35-28 63-62 63z m-750 0c-69 0-125 56-125 125s56 125 125 125 125-56 125-125-56-125-125-125z m406-1c-87 0-157 70-157 157 0 86 70 156 157 156s156-70 156-156-70-157-156-157z\",\n transform: \"matrix(1 0 0 -1 0 850)\"\n },\n question: {\n width: 857.1,\n height: 1e3,\n path: \"m500 82v107q0 8-5 13t-13 5h-107q-8 0-13-5t-5-13v-107q0-8 5-13t13-5h107q8 0 13 5t5 13z m143 375q0 49-31 91t-77 65-95 23q-136 0-207-119-9-14 4-24l74-55q4-4 10-4 9 0 14 7 30 38 48 51 19 14 48 14 27 0 48-15t21-33q0-21-11-34t-38-25q-35-16-65-48t-29-70v-20q0-8 5-13t13-5h107q8 0 13 5t5 13q0 10 12 27t30 28q18 10 28 16t25 19 25 27 16 34 7 45z m214-107q0-117-57-215t-156-156-215-58-216 58-155 156-58 215 58 215 155 156 216 58 215-58 156-156 57-215z\",\n transform: \"matrix(1 0 0 -1 0 850)\"\n },\n disk: {\n width: 857.1,\n height: 1e3,\n path: \"m214-7h429v214h-429v-214z m500 0h72v500q0 8-6 21t-11 20l-157 156q-5 6-19 12t-22 5v-232q0-22-15-38t-38-16h-322q-22 0-37 16t-16 38v232h-72v-714h72v232q0 22 16 38t37 16h465q22 0 38-16t15-38v-232z m-214 518v178q0 8-5 13t-13 5h-107q-7 0-13-5t-5-13v-178q0-8 5-13t13-5h107q7 0 13 5t5 13z m357-18v-518q0-22-15-38t-38-16h-750q-23 0-38 16t-16 38v750q0 22 16 38t38 16h517q23 0 50-12t42-26l156-157q16-15 27-42t11-49z\",\n transform: \"matrix(1 0 0 -1 0 850)\"\n },\n drawopenpath: {\n width: 70,\n height: 70,\n path: \"M33.21,85.65a7.31,7.31,0,0,1-2.59-.48c-8.16-3.11-9.27-19.8-9.88-41.3-.1-3.58-.19-6.68-.35-9-.15-2.1-.67-3.48-1.43-3.79-2.13-.88-7.91,2.32-12,5.86L3,32.38c1.87-1.64,11.55-9.66,18.27-6.9,2.13.87,4.75,3.14,5.17,9,.17,2.43.26,5.59.36,9.25a224.17,224.17,0,0,0,1.5,23.4c1.54,10.76,4,12.22,4.48,12.4.84.32,2.79-.46,5.76-3.59L43,80.07C41.53,81.57,37.68,85.64,33.21,85.65ZM74.81,69a11.34,11.34,0,0,0,6.09-6.72L87.26,44.5,74.72,32,56.9,38.35c-2.37.86-5.57,3.42-6.61,6L38.65,72.14l8.42,8.43ZM55,46.27a7.91,7.91,0,0,1,3.64-3.17l14.8-5.3,8,8L76.11,60.6l-.06.19a6.37,6.37,0,0,1-3,3.43L48.25,74.59,44.62,71Zm16.57,7.82A6.9,6.9,0,1,0,64.64,61,6.91,6.91,0,0,0,71.54,54.09Zm-4.05,0a2.85,2.85,0,1,1-2.85-2.85A2.86,2.86,0,0,1,67.49,54.09Zm-4.13,5.22L60.5,56.45,44.26,72.7l2.86,2.86ZM97.83,35.67,84.14,22l-8.57,8.57L89.26,44.24Zm-13.69-8,8,8-2.85,2.85-8-8Z\",\n transform: \"matrix(1 0 0 1 -15 -15)\"\n },\n drawclosedpath: {\n width: 90,\n height: 90,\n path: \"M88.41,21.12a26.56,26.56,0,0,0-36.18,0l-2.07,2-2.07-2a26.57,26.57,0,0,0-36.18,0,23.74,23.74,0,0,0,0,34.8L48,90.12a3.22,3.22,0,0,0,4.42,0l36-34.21a23.73,23.73,0,0,0,0-34.79ZM84,51.24,50.16,83.35,16.35,51.25a17.28,17.28,0,0,1,0-25.47,20,20,0,0,1,27.3,0l4.29,4.07a3.23,3.23,0,0,0,4.44,0l4.29-4.07a20,20,0,0,1,27.3,0,17.27,17.27,0,0,1,0,25.46ZM66.76,47.68h-33v6.91h33ZM53.35,35H46.44V68h6.91Z\",\n transform: \"matrix(1 0 0 1 -5 -5)\"\n },\n lasso: {\n width: 1031,\n height: 1e3,\n path: \"m1018 538c-36 207-290 336-568 286-277-48-473-256-436-463 10-57 36-108 76-151-13-66 11-137 68-183 34-28 75-41 114-42l-55-70 0 0c-2-1-3-2-4-3-10-14-8-34 5-45 14-11 34-8 45 4 1 1 2 3 2 5l0 0 113 140c16 11 31 24 45 40 4 3 6 7 8 11 48-3 100 0 151 9 278 48 473 255 436 462z m-624-379c-80 14-149 48-197 96 42 42 109 47 156 9 33-26 47-66 41-105z m-187-74c-19 16-33 37-39 60 50-32 109-55 174-68-42-25-95-24-135 8z m360 75c-34-7-69-9-102-8 8 62-16 128-68 170-73 59-175 54-244-5-9 20-16 40-20 61-28 159 121 317 333 354s407-60 434-217c28-159-121-318-333-355z\",\n transform: \"matrix(1 0 0 -1 0 850)\"\n },\n selectbox: {\n width: 1e3,\n height: 1e3,\n path: \"m0 850l0-143 143 0 0 143-143 0z m286 0l0-143 143 0 0 143-143 0z m285 0l0-143 143 0 0 143-143 0z m286 0l0-143 143 0 0 143-143 0z m-857-286l0-143 143 0 0 143-143 0z m857 0l0-143 143 0 0 143-143 0z m-857-285l0-143 143 0 0 143-143 0z m857 0l0-143 143 0 0 143-143 0z m-857-286l0-143 143 0 0 143-143 0z m286 0l0-143 143 0 0 143-143 0z m285 0l0-143 143 0 0 143-143 0z m286 0l0-143 143 0 0 143-143 0z\",\n transform: \"matrix(1 0 0 -1 0 850)\"\n },\n drawline: {\n width: 70,\n height: 70,\n path: \"M60.64,62.3a11.29,11.29,0,0,0,6.09-6.72l6.35-17.72L60.54,25.31l-17.82,6.4c-2.36.86-5.57,3.41-6.6,6L24.48,65.5l8.42,8.42ZM40.79,39.63a7.89,7.89,0,0,1,3.65-3.17l14.79-5.31,8,8L61.94,54l-.06.19a6.44,6.44,0,0,1-3,3.43L34.07,68l-3.62-3.63Zm16.57,7.81a6.9,6.9,0,1,0-6.89,6.9A6.9,6.9,0,0,0,57.36,47.44Zm-4,0a2.86,2.86,0,1,1-2.85-2.85A2.86,2.86,0,0,1,53.32,47.44Zm-4.13,5.22L46.33,49.8,30.08,66.05l2.86,2.86ZM83.65,29,70,15.34,61.4,23.9,75.09,37.59ZM70,21.06l8,8-2.84,2.85-8-8ZM87,80.49H10.67V87H87Z\",\n transform: \"matrix(1 0 0 1 -15 -15)\"\n },\n drawrect: {\n width: 80,\n height: 80,\n path: \"M78,22V79H21V22H78m9-9H12V88H87V13ZM68,46.22H31V54H68ZM53,32H45.22V69H53Z\",\n transform: \"matrix(1 0 0 1 -10 -10)\"\n },\n drawcircle: {\n width: 80,\n height: 80,\n path: \"M50,84.72C26.84,84.72,8,69.28,8,50.3S26.84,15.87,50,15.87,92,31.31,92,50.3,73.16,84.72,50,84.72Zm0-60.59c-18.6,0-33.74,11.74-33.74,26.17S31.4,76.46,50,76.46,83.74,64.72,83.74,50.3,68.6,24.13,50,24.13Zm17.15,22h-34v7.11h34Zm-13.8-13H46.24v34h7.11Z\",\n transform: \"matrix(1 0 0 1 -10 -10)\"\n },\n eraseshape: {\n width: 80,\n height: 80,\n path: \"M82.77,78H31.85L6,49.57,31.85,21.14H82.77a8.72,8.72,0,0,1,8.65,8.77V69.24A8.72,8.72,0,0,1,82.77,78ZM35.46,69.84H82.77a.57.57,0,0,0,.49-.6V29.91a.57.57,0,0,0-.49-.61H35.46L17,49.57Zm32.68-34.7-24,24,5,5,24-24Zm-19,.53-5,5,24,24,5-5Z\",\n transform: \"matrix(1 0 0 1 -10 -10)\"\n },\n spikeline: {\n width: 1e3,\n height: 1e3,\n path: \"M512 409c0-57-46-104-103-104-57 0-104 47-104 104 0 57 47 103 104 103 57 0 103-46 103-103z m-327-39l92 0 0 92-92 0z m-185 0l92 0 0 92-92 0z m370-186l92 0 0 93-92 0z m0-184l92 0 0 92-92 0z\",\n transform: \"matrix(1.5 0 0 -1.5 0 850)\"\n },\n pencil: {\n width: 1792,\n height: 1792,\n path: \"M491 1536l91-91-235-235-91 91v107h128v128h107zm523-928q0-22-22-22-10 0-17 7l-542 542q-7 7-7 17 0 22 22 22 10 0 17-7l542-542q7-7 7-17zm-54-192l416 416-832 832h-416v-416zm683 96q0 53-37 90l-166 166-416-416 166-165q36-38 90-38 53 0 91 38l235 234q37 39 37 91z\",\n transform: \"matrix(1 0 0 1 0 1)\"\n },\n newplotlylogo: {\n name: \"newplotlylogo\",\n svg: [\n \"\",\n \" plotly-logomark\",\n \" \",\n \" \",\n \" \",\n \" \",\n \" \",\n \" \",\n \" \",\n \" \",\n \" \",\n \" \",\n \" \",\n \" \",\n \" \",\n \"\"\n ].join(\"\")\n }\n };\n }\n });\n\n // src/components/shapes/draw_newshape/constants.js\n var require_constants4 = __commonJS({\n \"src/components/shapes/draw_newshape/constants.js\"(exports, module) {\n \"use strict\";\n var CIRCLE_SIDES = 32;\n module.exports = {\n CIRCLE_SIDES,\n i000: 0,\n i090: CIRCLE_SIDES / 4,\n i180: CIRCLE_SIDES / 2,\n i270: CIRCLE_SIDES / 4 * 3,\n cos45: Math.cos(Math.PI / 4),\n sin45: Math.sin(Math.PI / 4),\n SQRT2: Math.sqrt(2)\n };\n }\n });\n\n // src/components/selections/helpers.js\n var require_helpers6 = __commonJS({\n \"src/components/selections/helpers.js\"(exports, module) {\n \"use strict\";\n var strTranslate = require_lib().strTranslate;\n function p2r(ax, v) {\n switch (ax.type) {\n case \"log\":\n return ax.p2d(v);\n case \"date\":\n return ax.p2r(v, 0, ax.calendar);\n default:\n return ax.p2r(v);\n }\n }\n function r2p(ax, v) {\n switch (ax.type) {\n case \"log\":\n return ax.d2p(v);\n case \"date\":\n return ax.r2p(v, 0, ax.calendar);\n default:\n return ax.r2p(v);\n }\n }\n function axValue(ax) {\n var index = ax._id.charAt(0) === \"y\" ? 1 : 0;\n return function(v) {\n return p2r(ax, v[index]);\n };\n }\n function getTransform(plotinfo) {\n return strTranslate(\n plotinfo.xaxis._offset,\n plotinfo.yaxis._offset\n );\n }\n module.exports = {\n p2r,\n r2p,\n axValue,\n getTransform\n };\n }\n });\n\n // src/components/shapes/draw_newshape/helpers.js\n var require_helpers7 = __commonJS({\n \"src/components/shapes/draw_newshape/helpers.js\"(exports) {\n \"use strict\";\n var parseSvgPath = require_parse_svg_path();\n var constants = require_constants4();\n var CIRCLE_SIDES = constants.CIRCLE_SIDES;\n var SQRT2 = constants.SQRT2;\n var cartesianHelpers = require_helpers6();\n var p2r = cartesianHelpers.p2r;\n var r2p = cartesianHelpers.r2p;\n var iC = [0, 3, 4, 5, 6, 1, 2];\n var iQS = [0, 3, 4, 1, 2];\n exports.writePaths = function(polygons) {\n var nI = polygons.length;\n if (!nI) return \"M0,0Z\";\n var str = \"\";\n for (var i = 0; i < nI; i++) {\n var nJ = polygons[i].length;\n for (var j = 0; j < nJ; j++) {\n var w = polygons[i][j][0];\n if (w === \"Z\") {\n str += \"Z\";\n } else {\n var nK = polygons[i][j].length;\n for (var k = 0; k < nK; k++) {\n var realK = k;\n if (w === \"Q\" || w === \"S\") {\n realK = iQS[k];\n } else if (w === \"C\") {\n realK = iC[k];\n }\n str += polygons[i][j][realK];\n if (k > 0 && k < nK - 1) {\n str += \",\";\n }\n }\n }\n }\n }\n return str;\n };\n exports.readPaths = function(str, gd, plotinfo, isActiveShape) {\n var cmd = parseSvgPath(str);\n var polys = [];\n var n = -1;\n var newPoly = function() {\n n++;\n polys[n] = [];\n };\n var k;\n var x = 0;\n var y = 0;\n var initX;\n var initY;\n var recStart = function() {\n initX = x;\n initY = y;\n };\n recStart();\n for (var i = 0; i < cmd.length; i++) {\n var newPos = [];\n var x1, x2, y1, y2;\n var c = cmd[i][0];\n var w = c;\n switch (c) {\n case \"M\":\n newPoly();\n x = +cmd[i][1];\n y = +cmd[i][2];\n newPos.push([w, x, y]);\n recStart();\n break;\n case \"Q\":\n case \"S\":\n x1 = +cmd[i][1];\n y1 = +cmd[i][2];\n x = +cmd[i][3];\n y = +cmd[i][4];\n newPos.push([w, x, y, x1, y1]);\n break;\n case \"C\":\n x1 = +cmd[i][1];\n y1 = +cmd[i][2];\n x2 = +cmd[i][3];\n y2 = +cmd[i][4];\n x = +cmd[i][5];\n y = +cmd[i][6];\n newPos.push([w, x, y, x1, y1, x2, y2]);\n break;\n case \"T\":\n case \"L\":\n x = +cmd[i][1];\n y = +cmd[i][2];\n newPos.push([w, x, y]);\n break;\n case \"H\":\n w = \"L\";\n x = +cmd[i][1];\n newPos.push([w, x, y]);\n break;\n case \"V\":\n w = \"L\";\n y = +cmd[i][1];\n newPos.push([w, x, y]);\n break;\n case \"A\":\n w = \"L\";\n var rx = +cmd[i][1];\n var ry = +cmd[i][2];\n if (!+cmd[i][4]) {\n rx = -rx;\n ry = -ry;\n }\n var cenX = x - rx;\n var cenY = y;\n for (k = 1; k <= CIRCLE_SIDES / 2; k++) {\n var t = 2 * Math.PI * k / CIRCLE_SIDES;\n newPos.push([\n w,\n cenX + rx * Math.cos(t),\n cenY + ry * Math.sin(t)\n ]);\n }\n break;\n case \"Z\":\n if (x !== initX || y !== initY) {\n x = initX;\n y = initY;\n newPos.push([w, x, y]);\n }\n break;\n }\n var domain = (plotinfo || {}).domain;\n var size = gd._fullLayout._size;\n var xPixelSized = plotinfo && plotinfo.xsizemode === \"pixel\";\n var yPixelSized = plotinfo && plotinfo.ysizemode === \"pixel\";\n var noOffset = isActiveShape === false;\n for (var j = 0; j < newPos.length; j++) {\n for (k = 0; k + 2 < 7; k += 2) {\n var _x = newPos[j][k + 1];\n var _y = newPos[j][k + 2];\n if (_x === void 0 || _y === void 0) continue;\n x = _x;\n y = _y;\n if (plotinfo) {\n if (plotinfo.xaxis && plotinfo.xaxis.p2r) {\n if (noOffset) _x -= plotinfo.xaxis._offset;\n if (xPixelSized) {\n _x = r2p(plotinfo.xaxis, plotinfo.xanchor) + _x;\n } else {\n _x = p2r(plotinfo.xaxis, _x);\n }\n } else {\n if (noOffset) _x -= size.l;\n if (domain) _x = domain.x[0] + _x / size.w;\n else _x = _x / size.w;\n }\n if (plotinfo.yaxis && plotinfo.yaxis.p2r) {\n if (noOffset) _y -= plotinfo.yaxis._offset;\n if (yPixelSized) {\n _y = r2p(plotinfo.yaxis, plotinfo.yanchor) - _y;\n } else {\n _y = p2r(plotinfo.yaxis, _y);\n }\n } else {\n if (noOffset) _y -= size.t;\n if (domain) _y = domain.y[1] - _y / size.h;\n else _y = 1 - _y / size.h;\n }\n }\n newPos[j][k + 1] = _x;\n newPos[j][k + 2] = _y;\n }\n polys[n].push(\n newPos[j].slice()\n );\n }\n }\n return polys;\n };\n function almostEq(a, b) {\n return Math.abs(a - b) <= 1e-6;\n }\n function dist(a, b) {\n var dx = b[1] - a[1];\n var dy = b[2] - a[2];\n return Math.sqrt(\n dx * dx + dy * dy\n );\n }\n exports.pointsOnRectangle = function(cell) {\n var len = cell.length;\n if (len !== 5) return false;\n for (var j = 1; j < 3; j++) {\n var e01 = cell[0][j] - cell[1][j];\n var e32 = cell[3][j] - cell[2][j];\n if (!almostEq(e01, e32)) return false;\n var e03 = cell[0][j] - cell[3][j];\n var e12 = cell[1][j] - cell[2][j];\n if (!almostEq(e03, e12)) return false;\n }\n if (!almostEq(cell[0][1], cell[1][1]) && !almostEq(cell[0][1], cell[3][1])) return false;\n return !!(dist(cell[0], cell[1]) * dist(cell[0], cell[3]));\n };\n exports.pointsOnEllipse = function(cell) {\n var len = cell.length;\n if (len !== CIRCLE_SIDES + 1) return false;\n len = CIRCLE_SIDES;\n for (var i = 0; i < len; i++) {\n var k = (len * 2 - i) % len;\n var k2 = (len / 2 + k) % len;\n var i2 = (len / 2 + i) % len;\n if (!almostEq(\n dist(cell[i], cell[i2]),\n dist(cell[k], cell[k2])\n )) return false;\n }\n return true;\n };\n exports.handleEllipse = function(isEllipse, start, end) {\n if (!isEllipse) return [start, end];\n var pos = exports.ellipseOver({\n x0: start[0],\n y0: start[1],\n x1: end[0],\n y1: end[1]\n });\n var cx = (pos.x1 + pos.x0) / 2;\n var cy = (pos.y1 + pos.y0) / 2;\n var rx = (pos.x1 - pos.x0) / 2;\n var ry = (pos.y1 - pos.y0) / 2;\n if (!rx) rx = ry = ry / SQRT2;\n if (!ry) ry = rx = rx / SQRT2;\n var cell = [];\n for (var i = 0; i < CIRCLE_SIDES; i++) {\n var t = i * 2 * Math.PI / CIRCLE_SIDES;\n cell.push([\n cx + rx * Math.cos(t),\n cy + ry * Math.sin(t)\n ]);\n }\n return cell;\n };\n exports.ellipseOver = function(pos) {\n var x0 = pos.x0;\n var y0 = pos.y0;\n var x1 = pos.x1;\n var y1 = pos.y1;\n var dx = x1 - x0;\n var dy = y1 - y0;\n x0 -= dx;\n y0 -= dy;\n var cx = (x0 + x1) / 2;\n var cy = (y0 + y1) / 2;\n var scale = SQRT2;\n dx *= scale;\n dy *= scale;\n return {\n x0: cx - dx,\n y0: cy - dy,\n x1: cx + dx,\n y1: cy + dy\n };\n };\n exports.fixDatesForPaths = function(polygons, xaxis, yaxis) {\n var xIsDate = xaxis.type === \"date\";\n var yIsDate = yaxis.type === \"date\";\n if (!xIsDate && !yIsDate) return polygons;\n for (var i = 0; i < polygons.length; i++) {\n for (var j = 0; j < polygons[i].length; j++) {\n for (var k = 0; k + 2 < polygons[i][j].length; k += 2) {\n if (xIsDate) polygons[i][j][k + 1] = polygons[i][j][k + 1].replace(\" \", \"_\");\n if (yIsDate) polygons[i][j][k + 2] = polygons[i][j][k + 2].replace(\" \", \"_\");\n }\n }\n }\n return polygons;\n };\n }\n });\n\n // src/components/shapes/draw_newshape/newshapes.js\n var require_newshapes = __commonJS({\n \"src/components/shapes/draw_newshape/newshapes.js\"(exports, module) {\n \"use strict\";\n var dragHelpers = require_helpers5();\n var drawMode = dragHelpers.drawMode;\n var openMode = dragHelpers.openMode;\n var constants = require_constants4();\n var i000 = constants.i000;\n var i090 = constants.i090;\n var i180 = constants.i180;\n var i270 = constants.i270;\n var cos45 = constants.cos45;\n var sin45 = constants.sin45;\n var cartesianHelpers = require_helpers6();\n var p2r = cartesianHelpers.p2r;\n var r2p = cartesianHelpers.r2p;\n var handleOutline = require_handle_outline();\n var clearOutline = handleOutline.clearOutline;\n var helpers = require_helpers7();\n var readPaths = helpers.readPaths;\n var writePaths = helpers.writePaths;\n var ellipseOver = helpers.ellipseOver;\n var fixDatesForPaths = helpers.fixDatesForPaths;\n function newShapes(outlines, dragOptions) {\n if (!outlines.length) return;\n var e = outlines[0][0];\n if (!e) return;\n var gd = dragOptions.gd;\n var isActiveShape = dragOptions.isActiveShape;\n var dragmode = dragOptions.dragmode;\n var shapes = (gd.layout || {}).shapes || [];\n if (!drawMode(dragmode) && isActiveShape !== void 0) {\n var id = gd._fullLayout._activeShapeIndex;\n if (id < shapes.length) {\n switch (gd._fullLayout.shapes[id].type) {\n case \"rect\":\n dragmode = \"drawrect\";\n break;\n case \"circle\":\n dragmode = \"drawcircle\";\n break;\n case \"line\":\n dragmode = \"drawline\";\n break;\n case \"path\":\n var path = shapes[id].path || \"\";\n if (path[path.length - 1] === \"Z\") {\n dragmode = \"drawclosedpath\";\n } else {\n dragmode = \"drawopenpath\";\n }\n break;\n }\n }\n }\n var newShape = createShapeObj(outlines, dragOptions, dragmode);\n clearOutline(gd);\n var editHelpers = dragOptions.editHelpers;\n var modifyItem = (editHelpers || {}).modifyItem;\n var allShapes = [];\n for (var q = 0; q < shapes.length; q++) {\n var beforeEdit = gd._fullLayout.shapes[q];\n allShapes[q] = beforeEdit._input;\n if (isActiveShape !== void 0 && q === gd._fullLayout._activeShapeIndex) {\n var afterEdit = newShape;\n switch (beforeEdit.type) {\n case \"line\":\n case \"rect\":\n case \"circle\":\n modifyItem(\"x0\", afterEdit.x0 - (beforeEdit.x0shift || 0));\n modifyItem(\"x1\", afterEdit.x1 - (beforeEdit.x1shift || 0));\n modifyItem(\"y0\", afterEdit.y0 - (beforeEdit.y0shift || 0));\n modifyItem(\"y1\", afterEdit.y1 - (beforeEdit.y1shift || 0));\n break;\n case \"path\":\n modifyItem(\"path\", afterEdit.path);\n break;\n }\n }\n }\n if (isActiveShape === void 0) {\n allShapes.push(newShape);\n return allShapes;\n }\n return editHelpers ? editHelpers.getUpdateObj() : {};\n }\n function createShapeObj(outlines, dragOptions, dragmode) {\n var e = outlines[0][0];\n var gd = dragOptions.gd;\n var d = e.getAttribute(\"d\");\n var newStyle = gd._fullLayout.newshape;\n var plotinfo = dragOptions.plotinfo;\n var isActiveShape = dragOptions.isActiveShape;\n var xaxis = plotinfo.xaxis;\n var yaxis = plotinfo.yaxis;\n var xPaper = !!plotinfo.domain || !plotinfo.xaxis;\n var yPaper = !!plotinfo.domain || !plotinfo.yaxis;\n var isOpenMode = openMode(dragmode);\n var polygons = readPaths(d, gd, plotinfo, isActiveShape);\n var newShape = {\n editable: true,\n visible: newStyle.visible,\n name: newStyle.name,\n showlegend: newStyle.showlegend,\n legend: newStyle.legend,\n legendwidth: newStyle.legendwidth,\n legendgroup: newStyle.legendgroup,\n legendgrouptitle: {\n text: newStyle.legendgrouptitle.text,\n font: newStyle.legendgrouptitle.font\n },\n legendrank: newStyle.legendrank,\n label: newStyle.label,\n xref: xPaper ? \"paper\" : xaxis._id,\n yref: yPaper ? \"paper\" : yaxis._id,\n layer: newStyle.layer,\n opacity: newStyle.opacity,\n line: {\n color: newStyle.line.color,\n width: newStyle.line.width,\n dash: newStyle.line.dash\n }\n };\n if (!isOpenMode) {\n newShape.fillcolor = newStyle.fillcolor;\n newShape.fillrule = newStyle.fillrule;\n }\n var cell;\n if (polygons.length === 1) cell = polygons[0];\n if (cell && cell.length === 5 && // ensure we only have 4 corners for a rect\n dragmode === \"drawrect\") {\n newShape.type = \"rect\";\n newShape.x0 = cell[0][1];\n newShape.y0 = cell[0][2];\n newShape.x1 = cell[2][1];\n newShape.y1 = cell[2][2];\n } else if (cell && dragmode === \"drawline\") {\n newShape.type = \"line\";\n newShape.x0 = cell[0][1];\n newShape.y0 = cell[0][2];\n newShape.x1 = cell[1][1];\n newShape.y1 = cell[1][2];\n } else if (cell && dragmode === \"drawcircle\") {\n newShape.type = \"circle\";\n var xA = cell[i000][1];\n var xB = cell[i090][1];\n var xC = cell[i180][1];\n var xD = cell[i270][1];\n var yA = cell[i000][2];\n var yB = cell[i090][2];\n var yC = cell[i180][2];\n var yD = cell[i270][2];\n var xDateOrLog = plotinfo.xaxis && (plotinfo.xaxis.type === \"date\" || plotinfo.xaxis.type === \"log\");\n var yDateOrLog = plotinfo.yaxis && (plotinfo.yaxis.type === \"date\" || plotinfo.yaxis.type === \"log\");\n if (xDateOrLog) {\n xA = r2p(plotinfo.xaxis, xA);\n xB = r2p(plotinfo.xaxis, xB);\n xC = r2p(plotinfo.xaxis, xC);\n xD = r2p(plotinfo.xaxis, xD);\n }\n if (yDateOrLog) {\n yA = r2p(plotinfo.yaxis, yA);\n yB = r2p(plotinfo.yaxis, yB);\n yC = r2p(plotinfo.yaxis, yC);\n yD = r2p(plotinfo.yaxis, yD);\n }\n var x0 = (xB + xD) / 2;\n var y0 = (yA + yC) / 2;\n var rx = (xD - xB + xC - xA) / 2;\n var ry = (yD - yB + yC - yA) / 2;\n var pos = ellipseOver({\n x0,\n y0,\n x1: x0 + rx * cos45,\n y1: y0 + ry * sin45\n });\n if (xDateOrLog) {\n pos.x0 = p2r(plotinfo.xaxis, pos.x0);\n pos.x1 = p2r(plotinfo.xaxis, pos.x1);\n }\n if (yDateOrLog) {\n pos.y0 = p2r(plotinfo.yaxis, pos.y0);\n pos.y1 = p2r(plotinfo.yaxis, pos.y1);\n }\n newShape.x0 = pos.x0;\n newShape.y0 = pos.y0;\n newShape.x1 = pos.x1;\n newShape.y1 = pos.y1;\n } else {\n newShape.type = \"path\";\n if (xaxis && yaxis) fixDatesForPaths(polygons, xaxis, yaxis);\n newShape.path = writePaths(polygons);\n cell = null;\n }\n return newShape;\n }\n module.exports = {\n newShapes,\n createShapeObj\n };\n }\n });\n\n // src/components/selections/draw_newselection/newselections.js\n var require_newselections = __commonJS({\n \"src/components/selections/draw_newselection/newselections.js\"(exports, module) {\n \"use strict\";\n var dragHelpers = require_helpers5();\n var selectMode = dragHelpers.selectMode;\n var handleOutline = require_handle_outline();\n var clearOutline = handleOutline.clearOutline;\n var helpers = require_helpers7();\n var readPaths = helpers.readPaths;\n var writePaths = helpers.writePaths;\n var fixDatesForPaths = helpers.fixDatesForPaths;\n module.exports = function newSelections(outlines, dragOptions) {\n if (!outlines.length) return;\n var e = outlines[0][0];\n if (!e) return;\n var d = e.getAttribute(\"d\");\n var gd = dragOptions.gd;\n var newStyle = gd._fullLayout.newselection;\n var plotinfo = dragOptions.plotinfo;\n var xaxis = plotinfo.xaxis;\n var yaxis = plotinfo.yaxis;\n var isActiveSelection = dragOptions.isActiveSelection;\n var dragmode = dragOptions.dragmode;\n var selections = (gd.layout || {}).selections || [];\n if (!selectMode(dragmode) && isActiveSelection !== void 0) {\n var id = gd._fullLayout._activeSelectionIndex;\n if (id < selections.length) {\n switch (gd._fullLayout.selections[id].type) {\n case \"rect\":\n dragmode = \"select\";\n break;\n case \"path\":\n dragmode = \"lasso\";\n break;\n }\n }\n }\n var polygons = readPaths(d, gd, plotinfo, isActiveSelection);\n var newSelection = {\n xref: xaxis._id,\n yref: yaxis._id,\n opacity: newStyle.opacity,\n line: {\n color: newStyle.line.color,\n width: newStyle.line.width,\n dash: newStyle.line.dash\n }\n };\n var cell;\n if (polygons.length === 1) cell = polygons[0];\n if (cell && cell.length === 5 && // ensure we only have 4 corners for a rect\n dragmode === \"select\") {\n newSelection.type = \"rect\";\n newSelection.x0 = cell[0][1];\n newSelection.y0 = cell[0][2];\n newSelection.x1 = cell[2][1];\n newSelection.y1 = cell[2][2];\n } else {\n newSelection.type = \"path\";\n if (xaxis && yaxis) fixDatesForPaths(polygons, xaxis, yaxis);\n newSelection.path = writePaths(polygons);\n cell = null;\n }\n clearOutline(gd);\n var editHelpers = dragOptions.editHelpers;\n var modifyItem = (editHelpers || {}).modifyItem;\n var allSelections = [];\n for (var q = 0; q < selections.length; q++) {\n var beforeEdit = gd._fullLayout.selections[q];\n if (!beforeEdit) {\n allSelections[q] = beforeEdit;\n continue;\n }\n allSelections[q] = beforeEdit._input;\n if (isActiveSelection !== void 0 && q === gd._fullLayout._activeSelectionIndex) {\n var afterEdit = newSelection;\n switch (beforeEdit.type) {\n case \"rect\":\n modifyItem(\"x0\", afterEdit.x0);\n modifyItem(\"x1\", afterEdit.x1);\n modifyItem(\"y0\", afterEdit.y0);\n modifyItem(\"y1\", afterEdit.y1);\n break;\n case \"path\":\n modifyItem(\"path\", afterEdit.path);\n break;\n }\n }\n }\n if (isActiveSelection === void 0) {\n allSelections.push(newSelection);\n return allSelections;\n }\n return editHelpers ? editHelpers.getUpdateObj() : {};\n };\n }\n });\n\n // src/components/shapes/constants.js\n var require_constants5 = __commonJS({\n \"src/components/shapes/constants.js\"(exports, module) {\n \"use strict\";\n module.exports = {\n segmentRE: /[MLHVQCTSZ][^MLHVQCTSZ]*/g,\n paramRE: /[^\\s,]+/g,\n // which numbers in each path segment are x (or y) values\n // drawn is which param is a drawn point, as opposed to a\n // control point (which doesn't count toward autorange.\n // TODO: this means curved paths could extend beyond the\n // autorange bounds. This is a bit tricky to get right\n // unless we revert to bounding boxes, but perhaps there's\n // a calculation we could do...)\n paramIsX: {\n M: { 0: true, drawn: 0 },\n L: { 0: true, drawn: 0 },\n H: { 0: true, drawn: 0 },\n V: {},\n Q: { 0: true, 2: true, drawn: 2 },\n C: { 0: true, 2: true, 4: true, drawn: 4 },\n T: { 0: true, drawn: 0 },\n S: { 0: true, 2: true, drawn: 2 },\n // A: {0: true, 5: true},\n Z: {}\n },\n paramIsY: {\n M: { 1: true, drawn: 1 },\n L: { 1: true, drawn: 1 },\n H: {},\n V: { 0: true, drawn: 0 },\n Q: { 1: true, 3: true, drawn: 3 },\n C: { 1: true, 3: true, 5: true, drawn: 5 },\n T: { 1: true, drawn: 1 },\n S: { 1: true, 3: true, drawn: 5 },\n // A: {1: true, 6: true},\n Z: {}\n },\n numParams: {\n M: 2,\n L: 2,\n H: 1,\n V: 1,\n Q: 4,\n C: 6,\n T: 2,\n S: 4,\n // A: 7,\n Z: 0\n }\n };\n }\n });\n\n // src/components/shapes/helpers.js\n var require_helpers8 = __commonJS({\n \"src/components/shapes/helpers.js\"(exports) {\n \"use strict\";\n var constants = require_constants5();\n var Lib = require_lib();\n var Axes = require_axes();\n exports.rangeToShapePosition = function(ax) {\n return ax.type === \"log\" ? ax.r2d : function(v) {\n return v;\n };\n };\n exports.shapePositionToRange = function(ax) {\n return ax.type === \"log\" ? ax.d2r : function(v) {\n return v;\n };\n };\n exports.decodeDate = function(convertToPx) {\n return function(v) {\n if (v.replace) v = v.replace(\"_\", \" \");\n return convertToPx(v);\n };\n };\n exports.encodeDate = function(convertToDate) {\n return function(v) {\n return convertToDate(v).replace(\" \", \"_\");\n };\n };\n exports.extractPathCoords = function(path, paramsToUse, isRaw) {\n var extractedCoordinates = [];\n var segments = path.match(constants.segmentRE);\n segments.forEach(function(segment) {\n var relevantParamIdx = paramsToUse[segment.charAt(0)].drawn;\n if (relevantParamIdx === void 0) return;\n var params = segment.substr(1).match(constants.paramRE);\n if (!params || params.length < relevantParamIdx) return;\n var str = params[relevantParamIdx];\n var pos = isRaw ? str : Lib.cleanNumber(str);\n extractedCoordinates.push(pos);\n });\n return extractedCoordinates;\n };\n exports.getDataToPixel = function(gd, axis, shift, isVertical, refType) {\n var gs = gd._fullLayout._size;\n var dataToPixel;\n if (axis) {\n if (refType === \"domain\") {\n dataToPixel = function(v) {\n return axis._length * (isVertical ? 1 - v : v) + axis._offset;\n };\n } else {\n var d2r = exports.shapePositionToRange(axis);\n dataToPixel = function(v) {\n var shiftPixels = getPixelShift(axis, shift);\n return axis._offset + axis.r2p(d2r(v, true)) + shiftPixels;\n };\n if (axis.type === \"date\") dataToPixel = exports.decodeDate(dataToPixel);\n }\n } else if (isVertical) {\n dataToPixel = function(v) {\n return gs.t + gs.h * (1 - v);\n };\n } else {\n dataToPixel = function(v) {\n return gs.l + gs.w * v;\n };\n }\n return dataToPixel;\n };\n exports.getPixelToData = function(gd, axis, isVertical, opt) {\n var gs = gd._fullLayout._size;\n var pixelToData;\n if (axis) {\n if (opt === \"domain\") {\n pixelToData = function(p) {\n var q = (p - axis._offset) / axis._length;\n return isVertical ? 1 - q : q;\n };\n } else {\n var r2d = exports.rangeToShapePosition(axis);\n pixelToData = function(p) {\n return r2d(axis.p2r(p - axis._offset));\n };\n }\n } else if (isVertical) {\n pixelToData = function(p) {\n return 1 - (p - gs.t) / gs.h;\n };\n } else {\n pixelToData = function(p) {\n return (p - gs.l) / gs.w;\n };\n }\n return pixelToData;\n };\n exports.roundPositionForSharpStrokeRendering = function(pos, strokeWidth) {\n var strokeWidthIsOdd = Math.round(strokeWidth % 2) === 1;\n var posValAsInt = Math.round(pos);\n return strokeWidthIsOdd ? posValAsInt + 0.5 : posValAsInt;\n };\n exports.makeShapesOptionsAndPlotinfo = function(gd, index) {\n var options = gd._fullLayout.shapes[index] || {};\n var plotinfo = gd._fullLayout._plots[options.xref + options.yref];\n var hasPlotinfo = !!plotinfo;\n if (hasPlotinfo) {\n plotinfo._hadPlotinfo = true;\n } else {\n plotinfo = {};\n if (options.xref && options.xref !== \"paper\") plotinfo.xaxis = gd._fullLayout[options.xref + \"axis\"];\n if (options.yref && options.yref !== \"paper\") plotinfo.yaxis = gd._fullLayout[options.yref + \"axis\"];\n }\n plotinfo.xsizemode = options.xsizemode;\n plotinfo.ysizemode = options.ysizemode;\n plotinfo.xanchor = options.xanchor;\n plotinfo.yanchor = options.yanchor;\n return {\n options,\n plotinfo\n };\n };\n exports.makeSelectionsOptionsAndPlotinfo = function(gd, index) {\n var options = gd._fullLayout.selections[index] || {};\n var plotinfo = gd._fullLayout._plots[options.xref + options.yref];\n var hasPlotinfo = !!plotinfo;\n if (hasPlotinfo) {\n plotinfo._hadPlotinfo = true;\n } else {\n plotinfo = {};\n if (options.xref) plotinfo.xaxis = gd._fullLayout[options.xref + \"axis\"];\n if (options.yref) plotinfo.yaxis = gd._fullLayout[options.yref + \"axis\"];\n }\n return {\n options,\n plotinfo\n };\n };\n exports.getPathString = function(gd, options) {\n var type = options.type;\n var xRefType = Axes.getRefType(options.xref);\n var yRefType = Axes.getRefType(options.yref);\n var xa = Axes.getFromId(gd, options.xref);\n var ya = Axes.getFromId(gd, options.yref);\n var gs = gd._fullLayout._size;\n var x2r, x2p, y2r, y2p;\n var xShiftStart = getPixelShift(xa, options.x0shift);\n var xShiftEnd = getPixelShift(xa, options.x1shift);\n var yShiftStart = getPixelShift(ya, options.y0shift);\n var yShiftEnd = getPixelShift(ya, options.y1shift);\n var x0, x1, y0, y1;\n if (xa) {\n if (xRefType === \"domain\") {\n x2p = function(v) {\n return xa._offset + xa._length * v;\n };\n } else {\n x2r = exports.shapePositionToRange(xa);\n x2p = function(v) {\n return xa._offset + xa.r2p(x2r(v, true));\n };\n }\n } else {\n x2p = function(v) {\n return gs.l + gs.w * v;\n };\n }\n if (ya) {\n if (yRefType === \"domain\") {\n y2p = function(v) {\n return ya._offset + ya._length * (1 - v);\n };\n } else {\n y2r = exports.shapePositionToRange(ya);\n y2p = function(v) {\n return ya._offset + ya.r2p(y2r(v, true));\n };\n }\n } else {\n y2p = function(v) {\n return gs.t + gs.h * (1 - v);\n };\n }\n if (type === \"path\") {\n if (xa && xa.type === \"date\") x2p = exports.decodeDate(x2p);\n if (ya && ya.type === \"date\") y2p = exports.decodeDate(y2p);\n return convertPath(options, x2p, y2p);\n }\n if (options.xsizemode === \"pixel\") {\n var xAnchorPos = x2p(options.xanchor);\n x0 = xAnchorPos + options.x0 + xShiftStart;\n x1 = xAnchorPos + options.x1 + xShiftEnd;\n } else {\n x0 = x2p(options.x0) + xShiftStart;\n x1 = x2p(options.x1) + xShiftEnd;\n }\n if (options.ysizemode === \"pixel\") {\n var yAnchorPos = y2p(options.yanchor);\n y0 = yAnchorPos - options.y0 + yShiftStart;\n y1 = yAnchorPos - options.y1 + yShiftEnd;\n } else {\n y0 = y2p(options.y0) + yShiftStart;\n y1 = y2p(options.y1) + yShiftEnd;\n }\n if (type === \"line\") return \"M\" + x0 + \",\" + y0 + \"L\" + x1 + \",\" + y1;\n if (type === \"rect\") return \"M\" + x0 + \",\" + y0 + \"H\" + x1 + \"V\" + y1 + \"H\" + x0 + \"Z\";\n var cx = (x0 + x1) / 2;\n var cy = (y0 + y1) / 2;\n var rx = Math.abs(cx - x0);\n var ry = Math.abs(cy - y0);\n var rArc = \"A\" + rx + \",\" + ry;\n var rightPt = cx + rx + \",\" + cy;\n var topPt = cx + \",\" + (cy - ry);\n return \"M\" + rightPt + rArc + \" 0 1,1 \" + topPt + rArc + \" 0 0,1 \" + rightPt + \"Z\";\n };\n function convertPath(options, x2p, y2p) {\n var pathIn = options.path;\n var xSizemode = options.xsizemode;\n var ySizemode = options.ysizemode;\n var xAnchor = options.xanchor;\n var yAnchor = options.yanchor;\n return pathIn.replace(constants.segmentRE, function(segment) {\n var paramNumber = 0;\n var segmentType = segment.charAt(0);\n var xParams = constants.paramIsX[segmentType];\n var yParams = constants.paramIsY[segmentType];\n var nParams = constants.numParams[segmentType];\n var paramString = segment.substr(1).replace(constants.paramRE, function(param) {\n if (xParams[paramNumber]) {\n if (xSizemode === \"pixel\") param = x2p(xAnchor) + Number(param);\n else param = x2p(param);\n } else if (yParams[paramNumber]) {\n if (ySizemode === \"pixel\") param = y2p(yAnchor) - Number(param);\n else param = y2p(param);\n }\n paramNumber++;\n if (paramNumber > nParams) param = \"X\";\n return param;\n });\n if (paramNumber > nParams) {\n paramString = paramString.replace(/[\\s,]*X.*/, \"\");\n Lib.log(\"Ignoring extra params in segment \" + segment);\n }\n return segmentType + paramString;\n });\n }\n function getPixelShift(axis, shift) {\n shift = shift || 0;\n var shiftPixels = 0;\n if (shift && axis && (axis.type === \"category\" || axis.type === \"multicategory\")) {\n shiftPixels = (axis.r2p(1) - axis.r2p(0)) * shift;\n }\n return shiftPixels;\n }\n }\n });\n\n // src/components/shapes/display_labels.js\n var require_display_labels = __commonJS({\n \"src/components/shapes/display_labels.js\"(exports, module) {\n \"use strict\";\n var Lib = require_lib();\n var Axes = require_axes();\n var svgTextUtils = require_svg_text_utils();\n var Drawing = require_drawing();\n var readPaths = require_helpers7().readPaths;\n var helpers = require_helpers8();\n var getPathString = helpers.getPathString;\n var shapeLabelTexttemplateVars = require_label_texttemplate();\n var FROM_TL = require_alignment().FROM_TL;\n module.exports = function drawLabel(gd, index, options, shapeGroup) {\n shapeGroup.selectAll(\".shape-label\").remove();\n if (!(options.label.text || options.label.texttemplate)) return;\n var text;\n if (options.label.texttemplate) {\n var templateValues = {};\n if (options.type !== \"path\") {\n var _xa = Axes.getFromId(gd, options.xref);\n var _ya = Axes.getFromId(gd, options.yref);\n for (var key in shapeLabelTexttemplateVars) {\n var val = shapeLabelTexttemplateVars[key](options, _xa, _ya);\n if (val !== void 0) templateValues[key] = val;\n }\n }\n text = Lib.texttemplateStringForShapes(\n options.label.texttemplate,\n {},\n gd._fullLayout._d3locale,\n templateValues\n );\n } else {\n text = options.label.text;\n }\n var labelGroupAttrs = {\n \"data-index\": index\n };\n var font = options.label.font;\n var labelTextAttrs = {\n \"data-notex\": 1\n };\n var labelGroup = shapeGroup.append(\"g\").attr(labelGroupAttrs).classed(\"shape-label\", true);\n var labelText = labelGroup.append(\"text\").attr(labelTextAttrs).classed(\"shape-label-text\", true).text(text);\n var shapex0, shapex1, shapey0, shapey1;\n if (options.path) {\n var d = getPathString(gd, options);\n var polygons = readPaths(d, gd);\n shapex0 = Infinity;\n shapey0 = Infinity;\n shapex1 = -Infinity;\n shapey1 = -Infinity;\n for (var i = 0; i < polygons.length; i++) {\n for (var j = 0; j < polygons[i].length; j++) {\n var p = polygons[i][j];\n for (var k = 1; k < p.length; k += 2) {\n var _x = p[k];\n var _y = p[k + 1];\n shapex0 = Math.min(shapex0, _x);\n shapex1 = Math.max(shapex1, _x);\n shapey0 = Math.min(shapey0, _y);\n shapey1 = Math.max(shapey1, _y);\n }\n }\n }\n } else {\n var xa = Axes.getFromId(gd, options.xref);\n var xShiftStart = options.x0shift;\n var xShiftEnd = options.x1shift;\n var xRefType = Axes.getRefType(options.xref);\n var ya = Axes.getFromId(gd, options.yref);\n var yShiftStart = options.y0shift;\n var yShiftEnd = options.y1shift;\n var yRefType = Axes.getRefType(options.yref);\n var x2p = function(v, shift) {\n var dataToPixel = helpers.getDataToPixel(gd, xa, shift, false, xRefType);\n return dataToPixel(v);\n };\n var y2p = function(v, shift) {\n var dataToPixel = helpers.getDataToPixel(gd, ya, shift, true, yRefType);\n return dataToPixel(v);\n };\n shapex0 = x2p(options.x0, xShiftStart);\n shapex1 = x2p(options.x1, xShiftEnd);\n shapey0 = y2p(options.y0, yShiftStart);\n shapey1 = y2p(options.y1, yShiftEnd);\n }\n var textangle = options.label.textangle;\n if (textangle === \"auto\") {\n if (options.type === \"line\") {\n textangle = calcTextAngle(shapex0, shapey0, shapex1, shapey1);\n } else {\n textangle = 0;\n }\n }\n labelText.call(function(s) {\n s.call(Drawing.font, font).attr({});\n svgTextUtils.convertToTspans(s, gd);\n return s;\n });\n var textBB = Drawing.bBox(labelText.node());\n var textPos = calcTextPosition(shapex0, shapey0, shapex1, shapey1, options, textangle, textBB);\n var textx = textPos.textx;\n var texty = textPos.texty;\n var xanchor = textPos.xanchor;\n labelText.attr({\n \"text-anchor\": {\n left: \"start\",\n center: \"middle\",\n right: \"end\"\n }[xanchor],\n y: texty,\n x: textx,\n transform: \"rotate(\" + textangle + \",\" + textx + \",\" + texty + \")\"\n }).call(svgTextUtils.positionText, textx, texty);\n };\n function calcTextAngle(shapex0, shapey0, shapex1, shapey1) {\n var dy, dx;\n dx = Math.abs(shapex1 - shapex0);\n if (shapex1 >= shapex0) {\n dy = shapey0 - shapey1;\n } else {\n dy = shapey1 - shapey0;\n }\n return -180 / Math.PI * Math.atan2(dy, dx);\n }\n function calcTextPosition(shapex0, shapey0, shapex1, shapey1, shapeOptions, actualTextAngle, textBB) {\n var textPosition = shapeOptions.label.textposition;\n var textAngle = shapeOptions.label.textangle;\n var textPadding = shapeOptions.label.padding;\n var shapeType = shapeOptions.type;\n var textAngleRad = Math.PI / 180 * actualTextAngle;\n var sinA = Math.sin(textAngleRad);\n var cosA = Math.cos(textAngleRad);\n var xanchor = shapeOptions.label.xanchor;\n var yanchor = shapeOptions.label.yanchor;\n var textx, texty, paddingX, paddingY;\n if (shapeType === \"line\") {\n if (textPosition === \"start\") {\n textx = shapex0;\n texty = shapey0;\n } else if (textPosition === \"end\") {\n textx = shapex1;\n texty = shapey1;\n } else {\n textx = (shapex0 + shapex1) / 2;\n texty = (shapey0 + shapey1) / 2;\n }\n if (xanchor === \"auto\") {\n if (textPosition === \"start\") {\n if (textAngle === \"auto\") {\n if (shapex1 > shapex0) xanchor = \"left\";\n else if (shapex1 < shapex0) xanchor = \"right\";\n else xanchor = \"center\";\n } else {\n if (shapex1 > shapex0) xanchor = \"right\";\n else if (shapex1 < shapex0) xanchor = \"left\";\n else xanchor = \"center\";\n }\n } else if (textPosition === \"end\") {\n if (textAngle === \"auto\") {\n if (shapex1 > shapex0) xanchor = \"right\";\n else if (shapex1 < shapex0) xanchor = \"left\";\n else xanchor = \"center\";\n } else {\n if (shapex1 > shapex0) xanchor = \"left\";\n else if (shapex1 < shapex0) xanchor = \"right\";\n else xanchor = \"center\";\n }\n } else {\n xanchor = \"center\";\n }\n }\n var paddingConstantsX = { left: 1, center: 0, right: -1 };\n var paddingConstantsY = { bottom: -1, middle: 0, top: 1 };\n if (textAngle === \"auto\") {\n var paddingDirection = paddingConstantsY[yanchor];\n paddingX = -textPadding * sinA * paddingDirection;\n paddingY = textPadding * cosA * paddingDirection;\n } else {\n var paddingDirectionX = paddingConstantsX[xanchor];\n var paddingDirectionY = paddingConstantsY[yanchor];\n paddingX = textPadding * paddingDirectionX;\n paddingY = textPadding * paddingDirectionY;\n }\n textx = textx + paddingX;\n texty = texty + paddingY;\n } else {\n paddingX = textPadding + 3;\n if (textPosition.indexOf(\"right\") !== -1) {\n textx = Math.max(shapex0, shapex1) - paddingX;\n if (xanchor === \"auto\") xanchor = \"right\";\n } else if (textPosition.indexOf(\"left\") !== -1) {\n textx = Math.min(shapex0, shapex1) + paddingX;\n if (xanchor === \"auto\") xanchor = \"left\";\n } else {\n textx = (shapex0 + shapex1) / 2;\n if (xanchor === \"auto\") xanchor = \"center\";\n }\n if (textPosition.indexOf(\"top\") !== -1) {\n texty = Math.min(shapey0, shapey1);\n } else if (textPosition.indexOf(\"bottom\") !== -1) {\n texty = Math.max(shapey0, shapey1);\n } else {\n texty = (shapey0 + shapey1) / 2;\n }\n paddingY = textPadding;\n if (yanchor === \"bottom\") {\n texty = texty - paddingY;\n } else if (yanchor === \"top\") {\n texty = texty + paddingY;\n }\n }\n var shiftFraction = FROM_TL[yanchor];\n var baselineAdjust = shapeOptions.label.font.size;\n var textHeight = textBB.height;\n var xshift = (textHeight * shiftFraction - baselineAdjust) * sinA;\n var yshift = -(textHeight * shiftFraction - baselineAdjust) * cosA;\n return { textx: textx + xshift, texty: texty + yshift, xanchor };\n }\n }\n });\n\n // src/components/shapes/display_outlines.js\n var require_display_outlines = __commonJS({\n \"src/components/shapes/display_outlines.js\"(exports, module) {\n \"use strict\";\n var Lib = require_lib();\n var strTranslate = Lib.strTranslate;\n var dragElement = require_dragelement();\n var dragHelpers = require_helpers5();\n var drawMode = dragHelpers.drawMode;\n var selectMode = dragHelpers.selectMode;\n var Registry = require_registry();\n var Color = require_color();\n var constants = require_constants4();\n var i000 = constants.i000;\n var i090 = constants.i090;\n var i180 = constants.i180;\n var i270 = constants.i270;\n var handleOutline = require_handle_outline();\n var clearOutlineControllers = handleOutline.clearOutlineControllers;\n var helpers = require_helpers7();\n var pointsOnRectangle = helpers.pointsOnRectangle;\n var pointsOnEllipse = helpers.pointsOnEllipse;\n var writePaths = helpers.writePaths;\n var newShapes = require_newshapes().newShapes;\n var createShapeObj = require_newshapes().createShapeObj;\n var newSelections = require_newselections();\n var drawLabel = require_display_labels();\n module.exports = function displayOutlines(polygons, outlines, dragOptions, nCalls) {\n if (!nCalls) nCalls = 0;\n var gd = dragOptions.gd;\n function redraw() {\n displayOutlines(polygons, outlines, dragOptions, nCalls++);\n if (pointsOnEllipse(polygons[0]) || dragOptions.hasText) {\n update({ redrawing: true });\n }\n }\n function update(opts) {\n var updateObject = {};\n if (dragOptions.isActiveShape !== void 0) {\n dragOptions.isActiveShape = false;\n updateObject = newShapes(outlines, dragOptions);\n }\n if (dragOptions.isActiveSelection !== void 0) {\n dragOptions.isActiveSelection = false;\n updateObject = newSelections(outlines, dragOptions);\n gd._fullLayout._reselect = true;\n }\n if (Object.keys(updateObject).length) {\n Registry.call((opts || {}).redrawing ? \"relayout\" : \"_guiRelayout\", gd, updateObject);\n }\n }\n var fullLayout = gd._fullLayout;\n var zoomLayer = fullLayout._zoomlayer;\n var dragmode = dragOptions.dragmode;\n var isDrawMode = drawMode(dragmode);\n var isSelectMode = selectMode(dragmode);\n if (isDrawMode || isSelectMode) {\n gd._fullLayout._outlining = true;\n }\n clearOutlineControllers(gd);\n outlines.attr(\"d\", writePaths(polygons));\n var vertexDragOptions;\n var groupDragOptions;\n var indexI;\n var indexJ;\n var copyPolygons;\n if (!nCalls && (dragOptions.isActiveShape || dragOptions.isActiveSelection)) {\n copyPolygons = recordPositions([], polygons);\n var g = zoomLayer.append(\"g\").attr(\"class\", \"outline-controllers\");\n addVertexControllers(g);\n addGroupControllers();\n }\n if (isDrawMode && dragOptions.hasText) {\n var shapeGroup = zoomLayer.select(\".label-temp\");\n var shapeOptions = createShapeObj(outlines, dragOptions, dragOptions.dragmode);\n drawLabel(gd, \"label-temp\", shapeOptions, shapeGroup);\n }\n function startDragVertex(evt) {\n indexI = +evt.srcElement.getAttribute(\"data-i\");\n indexJ = +evt.srcElement.getAttribute(\"data-j\");\n vertexDragOptions[indexI][indexJ].moveFn = moveVertexController;\n }\n function moveVertexController(dx, dy) {\n if (!polygons.length) return;\n var x0 = copyPolygons[indexI][indexJ][1];\n var y0 = copyPolygons[indexI][indexJ][2];\n var cell = polygons[indexI];\n var len = cell.length;\n if (pointsOnRectangle(cell)) {\n var _dx = dx;\n var _dy = dy;\n if (dragOptions.isActiveSelection) {\n var nextPoint = getNextPoint(cell, indexJ);\n if (nextPoint[1] === cell[indexJ][1]) {\n _dy = 0;\n } else {\n _dx = 0;\n }\n }\n for (var q = 0; q < len; q++) {\n if (q === indexJ) continue;\n var pos = cell[q];\n if (pos[1] === cell[indexJ][1]) {\n pos[1] = x0 + _dx;\n }\n if (pos[2] === cell[indexJ][2]) {\n pos[2] = y0 + _dy;\n }\n }\n cell[indexJ][1] = x0 + _dx;\n cell[indexJ][2] = y0 + _dy;\n if (!pointsOnRectangle(cell)) {\n for (var j = 0; j < len; j++) {\n for (var k = 0; k < cell[j].length; k++) {\n cell[j][k] = copyPolygons[indexI][j][k];\n }\n }\n }\n } else {\n cell[indexJ][1] = x0 + dx;\n cell[indexJ][2] = y0 + dy;\n }\n redraw();\n }\n function endDragVertexController() {\n update();\n }\n function removeVertex() {\n if (!polygons.length) return;\n if (!polygons[indexI]) return;\n if (!polygons[indexI].length) return;\n var newPolygon = [];\n for (var j = 0; j < polygons[indexI].length; j++) {\n if (j !== indexJ) {\n newPolygon.push(\n polygons[indexI][j]\n );\n }\n }\n if (newPolygon.length > 1 && !(newPolygon.length === 2 && newPolygon[1][0] === \"Z\")) {\n if (indexJ === 0) {\n newPolygon[0][0] = \"M\";\n }\n polygons[indexI] = newPolygon;\n redraw();\n update();\n }\n }\n function clickVertexController(numClicks, evt) {\n if (numClicks === 2) {\n indexI = +evt.srcElement.getAttribute(\"data-i\");\n indexJ = +evt.srcElement.getAttribute(\"data-j\");\n var cell = polygons[indexI];\n if (!pointsOnRectangle(cell) && !pointsOnEllipse(cell)) {\n removeVertex();\n }\n }\n }\n function addVertexControllers(g2) {\n vertexDragOptions = [];\n for (var i = 0; i < polygons.length; i++) {\n var cell = polygons[i];\n var onRect = pointsOnRectangle(cell);\n var onEllipse = !onRect && pointsOnEllipse(cell);\n vertexDragOptions[i] = [];\n var len = cell.length;\n for (var j = 0; j < len; j++) {\n if (cell[j][0] === \"Z\") continue;\n if (onEllipse && j !== i000 && j !== i090 && j !== i180 && j !== i270) {\n continue;\n }\n var rectSelection = onRect && dragOptions.isActiveSelection;\n var nextPoint;\n if (rectSelection) nextPoint = getNextPoint(cell, j);\n var x = cell[j][1];\n var y = cell[j][2];\n var vertex = g2.append(rectSelection ? \"rect\" : \"circle\").attr(\"data-i\", i).attr(\"data-j\", j).style({\n fill: Color.background,\n stroke: Color.defaultLine,\n \"stroke-width\": 1,\n \"shape-rendering\": \"crispEdges\"\n });\n if (rectSelection) {\n var dx = nextPoint[1] - x;\n var dy = nextPoint[2] - y;\n var width = dy ? 5 : Math.max(Math.min(25, Math.abs(dx) - 5), 5);\n var height = dx ? 5 : Math.max(Math.min(25, Math.abs(dy) - 5), 5);\n vertex.classed(dy ? \"cursor-ew-resize\" : \"cursor-ns-resize\", true).attr(\"width\", width).attr(\"height\", height).attr(\"x\", x - width / 2).attr(\"y\", y - height / 2).attr(\"transform\", strTranslate(dx / 2, dy / 2));\n } else {\n vertex.classed(\"cursor-grab\", true).attr(\"r\", 5).attr(\"cx\", x).attr(\"cy\", y);\n }\n vertexDragOptions[i][j] = {\n element: vertex.node(),\n gd,\n prepFn: startDragVertex,\n doneFn: endDragVertexController,\n clickFn: clickVertexController\n };\n dragElement.init(vertexDragOptions[i][j]);\n }\n }\n }\n function moveGroup(dx, dy) {\n if (!polygons.length) return;\n for (var i = 0; i < polygons.length; i++) {\n for (var j = 0; j < polygons[i].length; j++) {\n for (var k = 0; k + 2 < polygons[i][j].length; k += 2) {\n polygons[i][j][k + 1] = copyPolygons[i][j][k + 1] + dx;\n polygons[i][j][k + 2] = copyPolygons[i][j][k + 2] + dy;\n }\n }\n }\n }\n function moveGroupController(dx, dy) {\n moveGroup(dx, dy);\n redraw();\n }\n function startDragGroupController(evt) {\n indexI = +evt.srcElement.getAttribute(\"data-i\");\n if (!indexI) indexI = 0;\n groupDragOptions[indexI].moveFn = moveGroupController;\n }\n function endDragGroupController() {\n update();\n }\n function clickGroupController(numClicks) {\n if (numClicks === 2) {\n eraseActiveSelection(gd);\n }\n }\n function addGroupControllers() {\n groupDragOptions = [];\n if (!polygons.length) return;\n var i = 0;\n groupDragOptions[i] = {\n element: outlines[0][0],\n gd,\n prepFn: startDragGroupController,\n doneFn: endDragGroupController,\n clickFn: clickGroupController\n };\n dragElement.init(groupDragOptions[i]);\n }\n };\n function recordPositions(polygonsOut, polygonsIn) {\n for (var i = 0; i < polygonsIn.length; i++) {\n var cell = polygonsIn[i];\n polygonsOut[i] = [];\n for (var j = 0; j < cell.length; j++) {\n polygonsOut[i][j] = [];\n for (var k = 0; k < cell[j].length; k++) {\n polygonsOut[i][j][k] = cell[j][k];\n }\n }\n }\n return polygonsOut;\n }\n function getNextPoint(cell, j) {\n var x = cell[j][1];\n var y = cell[j][2];\n var len = cell.length;\n var nextJ, nextX, nextY;\n nextJ = (j + 1) % len;\n nextX = cell[nextJ][1];\n nextY = cell[nextJ][2];\n if (nextX === x && nextY === y) {\n nextJ = (j + 2) % len;\n nextX = cell[nextJ][1];\n nextY = cell[nextJ][2];\n }\n return [nextJ, nextX, nextY];\n }\n function eraseActiveSelection(gd) {\n if (!selectMode(gd._fullLayout.dragmode)) return;\n clearOutlineControllers(gd);\n var id = gd._fullLayout._activeSelectionIndex;\n var selections = (gd.layout || {}).selections || [];\n if (id < selections.length) {\n var list = [];\n for (var q = 0; q < selections.length; q++) {\n if (q !== id) {\n list.push(selections[q]);\n }\n }\n delete gd._fullLayout._activeSelectionIndex;\n var erasedSelection = gd._fullLayout.selections[id];\n gd._fullLayout._deselect = {\n xref: erasedSelection.xref,\n yref: erasedSelection.yref\n };\n Registry.call(\"_guiRelayout\", gd, {\n selections: list\n });\n }\n }\n }\n });\n\n // src/components/shapes/draw.js\n var require_draw2 = __commonJS({\n \"src/components/shapes/draw.js\"(exports, module) {\n \"use strict\";\n var d3 = require_d3();\n var Registry = require_registry();\n var Lib = require_lib();\n var Axes = require_axes();\n var readPaths = require_helpers7().readPaths;\n var displayOutlines = require_display_outlines();\n var drawLabel = require_display_labels();\n var clearOutlineControllers = require_handle_outline().clearOutlineControllers;\n var Color = require_color();\n var Drawing = require_drawing();\n var arrayEditor = require_plot_template().arrayEditor;\n var dragElement = require_dragelement();\n var setCursor = require_setcursor();\n var constants = require_constants5();\n var helpers = require_helpers8();\n var getPathString = helpers.getPathString;\n module.exports = {\n draw,\n drawOne,\n eraseActiveShape,\n drawLabel\n };\n function draw(gd) {\n var fullLayout = gd._fullLayout;\n fullLayout._shapeUpperLayer.selectAll(\"path\").remove();\n fullLayout._shapeLowerLayer.selectAll(\"path\").remove();\n fullLayout._shapeUpperLayer.selectAll(\"text\").remove();\n fullLayout._shapeLowerLayer.selectAll(\"text\").remove();\n for (var k in fullLayout._plots) {\n var shapelayer = fullLayout._plots[k].shapelayer;\n if (shapelayer) {\n shapelayer.selectAll(\"path\").remove();\n shapelayer.selectAll(\"text\").remove();\n }\n }\n for (var i = 0; i < fullLayout.shapes.length; i++) {\n if (fullLayout.shapes[i].visible === true) {\n drawOne(gd, i);\n }\n }\n }\n function shouldSkipEdits(gd) {\n return !!gd._fullLayout._outlining;\n }\n function couldHaveActiveShape(gd) {\n return !gd._context.edits.shapePosition;\n }\n function drawOne(gd, index) {\n gd._fullLayout._paperdiv.selectAll('.shapelayer [data-index=\"' + index + '\"]').remove();\n var o = helpers.makeShapesOptionsAndPlotinfo(gd, index);\n var options = o.options;\n var plotinfo = o.plotinfo;\n if (!options._input || options.visible !== true) return;\n if (options.layer === \"above\") {\n drawShape(gd._fullLayout._shapeUpperLayer);\n } else if (options.xref === \"paper\" || options.yref === \"paper\") {\n drawShape(gd._fullLayout._shapeLowerLayer);\n } else if (options.layer === \"between\") {\n drawShape(plotinfo.shapelayerBetween);\n } else {\n if (plotinfo._hadPlotinfo) {\n var mainPlot = plotinfo.mainplotinfo || plotinfo;\n drawShape(mainPlot.shapelayer);\n } else {\n drawShape(gd._fullLayout._shapeLowerLayer);\n }\n }\n function drawShape(shapeLayer) {\n var d = getPathString(gd, options);\n var attrs = {\n \"data-index\": index,\n \"fill-rule\": options.fillrule,\n d\n };\n var opacity = options.opacity;\n var fillColor = options.fillcolor;\n var lineColor = options.line.width ? options.line.color : \"rgba(0,0,0,0)\";\n var lineWidth = options.line.width;\n var lineDash = options.line.dash;\n if (!lineWidth && options.editable === true) {\n lineWidth = 5;\n lineDash = \"solid\";\n }\n var isOpen = d[d.length - 1] !== \"Z\";\n var isActiveShape = couldHaveActiveShape(gd) && options.editable && gd._fullLayout._activeShapeIndex === index;\n if (isActiveShape) {\n fillColor = isOpen ? \"rgba(0,0,0,0)\" : gd._fullLayout.activeshape.fillcolor;\n opacity = gd._fullLayout.activeshape.opacity;\n }\n var shapeGroup = shapeLayer.append(\"g\").classed(\"shape-group\", true).attr({ \"data-index\": index });\n var path = shapeGroup.append(\"path\").attr(attrs).style(\"opacity\", opacity).call(Color.stroke, lineColor).call(Color.fill, fillColor).call(Drawing.dashLine, lineDash, lineWidth);\n setClipPath(shapeGroup, gd, options);\n drawLabel(gd, index, options, shapeGroup);\n var editHelpers;\n if (isActiveShape || gd._context.edits.shapePosition) editHelpers = arrayEditor(gd.layout, \"shapes\", options);\n if (isActiveShape) {\n path.style({\n cursor: \"move\"\n });\n var dragOptions = {\n element: path.node(),\n plotinfo,\n gd,\n editHelpers,\n hasText: options.label.text || options.label.texttemplate,\n isActiveShape: true\n // i.e. to enable controllers\n };\n var polygons = readPaths(d, gd);\n displayOutlines(polygons, path, dragOptions);\n } else {\n if (gd._context.edits.shapePosition) {\n setupDragElement(gd, path, options, index, shapeLayer, editHelpers);\n } else if (options.editable === true) {\n path.style(\n \"pointer-events\",\n isOpen || Color.opacity(fillColor) * opacity <= 0.5 ? \"stroke\" : \"all\"\n );\n }\n }\n path.node().addEventListener(\"click\", function() {\n return activateShape(gd, path);\n });\n }\n }\n function setClipPath(shapePath, gd, shapeOptions) {\n var clipAxes = (shapeOptions.xref + shapeOptions.yref).replace(/paper/g, \"\").replace(/[xyz][1-9]* *domain/g, \"\");\n Drawing.setClipUrl(\n shapePath,\n clipAxes ? \"clip\" + gd._fullLayout._uid + clipAxes : null,\n gd\n );\n }\n function setupDragElement(gd, shapePath, shapeOptions, index, shapeLayer, editHelpers) {\n var MINWIDTH = 10;\n var MINHEIGHT = 10;\n var xPixelSized = shapeOptions.xsizemode === \"pixel\";\n var yPixelSized = shapeOptions.ysizemode === \"pixel\";\n var isLine = shapeOptions.type === \"line\";\n var isPath = shapeOptions.type === \"path\";\n var modifyItem = editHelpers.modifyItem;\n var x0, y0, x1, y1, xAnchor, yAnchor;\n var n0, s0, w0, e0, optN, optS, optW, optE;\n var pathIn;\n var shapeGroup = d3.select(shapePath.node().parentNode);\n var xa = Axes.getFromId(gd, shapeOptions.xref);\n var xRefType = Axes.getRefType(shapeOptions.xref);\n var ya = Axes.getFromId(gd, shapeOptions.yref);\n var yRefType = Axes.getRefType(shapeOptions.yref);\n var shiftXStart = shapeOptions.x0shift;\n var shiftXEnd = shapeOptions.x1shift;\n var shiftYStart = shapeOptions.y0shift;\n var shiftYEnd = shapeOptions.y1shift;\n var x2p = function(v, shift) {\n var dataToPixel = helpers.getDataToPixel(gd, xa, shift, false, xRefType);\n return dataToPixel(v);\n };\n var y2p = function(v, shift) {\n var dataToPixel = helpers.getDataToPixel(gd, ya, shift, true, yRefType);\n return dataToPixel(v);\n };\n var p2x = helpers.getPixelToData(gd, xa, false, xRefType);\n var p2y = helpers.getPixelToData(gd, ya, true, yRefType);\n var sensoryElement = obtainSensoryElement();\n var dragOptions = {\n element: sensoryElement.node(),\n gd,\n prepFn: startDrag,\n doneFn: endDrag,\n clickFn: abortDrag\n };\n var dragMode;\n dragElement.init(dragOptions);\n sensoryElement.node().onmousemove = updateDragMode;\n function obtainSensoryElement() {\n return isLine ? createLineDragHandles() : shapePath;\n }\n function createLineDragHandles() {\n var minSensoryWidth = 10;\n var sensoryWidth = Math.max(shapeOptions.line.width, minSensoryWidth);\n var g = shapeLayer.append(\"g\").attr(\"data-index\", index).attr(\"drag-helper\", true);\n g.append(\"path\").attr(\"d\", shapePath.attr(\"d\")).style({\n cursor: \"move\",\n \"stroke-width\": sensoryWidth,\n \"stroke-opacity\": \"0\"\n // ensure not visible\n });\n var circleStyle = {\n \"fill-opacity\": \"0\"\n // ensure not visible\n };\n var circleRadius = Math.max(sensoryWidth / 2, minSensoryWidth);\n g.append(\"circle\").attr({\n \"data-line-point\": \"start-point\",\n cx: xPixelSized ? x2p(shapeOptions.xanchor) + shapeOptions.x0 : x2p(shapeOptions.x0, shiftXStart),\n cy: yPixelSized ? y2p(shapeOptions.yanchor) - shapeOptions.y0 : y2p(shapeOptions.y0, shiftYStart),\n r: circleRadius\n }).style(circleStyle).classed(\"cursor-grab\", true);\n g.append(\"circle\").attr({\n \"data-line-point\": \"end-point\",\n cx: xPixelSized ? x2p(shapeOptions.xanchor) + shapeOptions.x1 : x2p(shapeOptions.x1, shiftXEnd),\n cy: yPixelSized ? y2p(shapeOptions.yanchor) - shapeOptions.y1 : y2p(shapeOptions.y1, shiftYEnd),\n r: circleRadius\n }).style(circleStyle).classed(\"cursor-grab\", true);\n return g;\n }\n function updateDragMode(evt) {\n if (shouldSkipEdits(gd)) {\n dragMode = null;\n return;\n }\n if (isLine) {\n if (evt.target.tagName === \"path\") {\n dragMode = \"move\";\n } else {\n dragMode = evt.target.attributes[\"data-line-point\"].value === \"start-point\" ? \"resize-over-start-point\" : \"resize-over-end-point\";\n }\n } else {\n var dragBBox = dragOptions.element.getBoundingClientRect();\n var w = dragBBox.right - dragBBox.left;\n var h = dragBBox.bottom - dragBBox.top;\n var x = evt.clientX - dragBBox.left;\n var y = evt.clientY - dragBBox.top;\n var cursor = !isPath && w > MINWIDTH && h > MINHEIGHT && !evt.shiftKey ? dragElement.getCursor(x / w, 1 - y / h) : \"move\";\n setCursor(shapePath, cursor);\n dragMode = cursor.split(\"-\")[0];\n }\n }\n function startDrag(evt) {\n if (shouldSkipEdits(gd)) return;\n if (xPixelSized) {\n xAnchor = x2p(shapeOptions.xanchor);\n }\n if (yPixelSized) {\n yAnchor = y2p(shapeOptions.yanchor);\n }\n if (shapeOptions.type === \"path\") {\n pathIn = shapeOptions.path;\n } else {\n x0 = xPixelSized ? shapeOptions.x0 : x2p(shapeOptions.x0);\n y0 = yPixelSized ? shapeOptions.y0 : y2p(shapeOptions.y0);\n x1 = xPixelSized ? shapeOptions.x1 : x2p(shapeOptions.x1);\n y1 = yPixelSized ? shapeOptions.y1 : y2p(shapeOptions.y1);\n }\n if (x0 < x1) {\n w0 = x0;\n optW = \"x0\";\n e0 = x1;\n optE = \"x1\";\n } else {\n w0 = x1;\n optW = \"x1\";\n e0 = x0;\n optE = \"x0\";\n }\n if (!yPixelSized && y0 < y1 || yPixelSized && y0 > y1) {\n n0 = y0;\n optN = \"y0\";\n s0 = y1;\n optS = \"y1\";\n } else {\n n0 = y1;\n optN = \"y1\";\n s0 = y0;\n optS = \"y0\";\n }\n updateDragMode(evt);\n renderVisualCues(shapeLayer, shapeOptions);\n deactivateClipPathTemporarily(shapePath, shapeOptions, gd);\n dragOptions.moveFn = dragMode === \"move\" ? moveShape : resizeShape;\n dragOptions.altKey = evt.altKey;\n }\n function endDrag() {\n if (shouldSkipEdits(gd)) return;\n setCursor(shapePath);\n removeVisualCues(shapeLayer);\n setClipPath(shapePath, gd, shapeOptions);\n Registry.call(\"_guiRelayout\", gd, editHelpers.getUpdateObj());\n }\n function abortDrag() {\n if (shouldSkipEdits(gd)) return;\n removeVisualCues(shapeLayer);\n }\n function moveShape(dx, dy) {\n if (shapeOptions.type === \"path\") {\n var noOp = function(coord) {\n return coord;\n };\n var moveX = noOp;\n var moveY = noOp;\n if (xPixelSized) {\n modifyItem(\"xanchor\", shapeOptions.xanchor = p2x(xAnchor + dx));\n } else {\n moveX = function moveX2(x) {\n return p2x(x2p(x) + dx);\n };\n if (xa && xa.type === \"date\") moveX = helpers.encodeDate(moveX);\n }\n if (yPixelSized) {\n modifyItem(\"yanchor\", shapeOptions.yanchor = p2y(yAnchor + dy));\n } else {\n moveY = function moveY2(y) {\n return p2y(y2p(y) + dy);\n };\n if (ya && ya.type === \"date\") moveY = helpers.encodeDate(moveY);\n }\n modifyItem(\"path\", shapeOptions.path = movePath(pathIn, moveX, moveY));\n } else {\n if (xPixelSized) {\n modifyItem(\"xanchor\", shapeOptions.xanchor = p2x(xAnchor + dx));\n } else {\n modifyItem(\"x0\", shapeOptions.x0 = p2x(x0 + dx));\n modifyItem(\"x1\", shapeOptions.x1 = p2x(x1 + dx));\n }\n if (yPixelSized) {\n modifyItem(\"yanchor\", shapeOptions.yanchor = p2y(yAnchor + dy));\n } else {\n modifyItem(\"y0\", shapeOptions.y0 = p2y(y0 + dy));\n modifyItem(\"y1\", shapeOptions.y1 = p2y(y1 + dy));\n }\n }\n shapePath.attr(\"d\", getPathString(gd, shapeOptions));\n renderVisualCues(shapeLayer, shapeOptions);\n drawLabel(gd, index, shapeOptions, shapeGroup);\n }\n function resizeShape(dx, dy) {\n if (isPath) {\n var noOp = function(coord) {\n return coord;\n };\n var moveX = noOp;\n var moveY = noOp;\n if (xPixelSized) {\n modifyItem(\"xanchor\", shapeOptions.xanchor = p2x(xAnchor + dx));\n } else {\n moveX = function moveX2(x) {\n return p2x(x2p(x) + dx);\n };\n if (xa && xa.type === \"date\") moveX = helpers.encodeDate(moveX);\n }\n if (yPixelSized) {\n modifyItem(\"yanchor\", shapeOptions.yanchor = p2y(yAnchor + dy));\n } else {\n moveY = function moveY2(y) {\n return p2y(y2p(y) + dy);\n };\n if (ya && ya.type === \"date\") moveY = helpers.encodeDate(moveY);\n }\n modifyItem(\"path\", shapeOptions.path = movePath(pathIn, moveX, moveY));\n } else if (isLine) {\n if (dragMode === \"resize-over-start-point\") {\n var newX0 = x0 + dx;\n var newY0 = yPixelSized ? y0 - dy : y0 + dy;\n modifyItem(\"x0\", shapeOptions.x0 = xPixelSized ? newX0 : p2x(newX0));\n modifyItem(\"y0\", shapeOptions.y0 = yPixelSized ? newY0 : p2y(newY0));\n } else if (dragMode === \"resize-over-end-point\") {\n var newX1 = x1 + dx;\n var newY1 = yPixelSized ? y1 - dy : y1 + dy;\n modifyItem(\"x1\", shapeOptions.x1 = xPixelSized ? newX1 : p2x(newX1));\n modifyItem(\"y1\", shapeOptions.y1 = yPixelSized ? newY1 : p2y(newY1));\n }\n } else {\n var has = function(str) {\n return dragMode.indexOf(str) !== -1;\n };\n var hasN = has(\"n\");\n var hasS = has(\"s\");\n var hasW = has(\"w\");\n var hasE = has(\"e\");\n var newN = hasN ? n0 + dy : n0;\n var newS = hasS ? s0 + dy : s0;\n var newW = hasW ? w0 + dx : w0;\n var newE = hasE ? e0 + dx : e0;\n if (yPixelSized) {\n if (hasN) newN = n0 - dy;\n if (hasS) newS = s0 - dy;\n }\n if (!yPixelSized && newS - newN > MINHEIGHT || yPixelSized && newN - newS > MINHEIGHT) {\n modifyItem(optN, shapeOptions[optN] = yPixelSized ? newN : p2y(newN));\n modifyItem(optS, shapeOptions[optS] = yPixelSized ? newS : p2y(newS));\n }\n if (newE - newW > MINWIDTH) {\n modifyItem(optW, shapeOptions[optW] = xPixelSized ? newW : p2x(newW));\n modifyItem(optE, shapeOptions[optE] = xPixelSized ? newE : p2x(newE));\n }\n }\n shapePath.attr(\"d\", getPathString(gd, shapeOptions));\n renderVisualCues(shapeLayer, shapeOptions);\n drawLabel(gd, index, shapeOptions, shapeGroup);\n }\n function renderVisualCues(shapeLayer2, shapeOptions2) {\n if (xPixelSized || yPixelSized) {\n renderAnchor();\n }\n function renderAnchor() {\n var isNotPath = shapeOptions2.type !== \"path\";\n var visualCues = shapeLayer2.selectAll(\".visual-cue\").data([0]);\n var strokeWidth = 1;\n visualCues.enter().append(\"path\").attr({\n fill: \"#fff\",\n \"fill-rule\": \"evenodd\",\n stroke: \"#000\",\n \"stroke-width\": strokeWidth\n }).classed(\"visual-cue\", true);\n var posX = x2p(\n xPixelSized ? shapeOptions2.xanchor : Lib.midRange(\n isNotPath ? [shapeOptions2.x0, shapeOptions2.x1] : helpers.extractPathCoords(shapeOptions2.path, constants.paramIsX)\n )\n );\n var posY = y2p(\n yPixelSized ? shapeOptions2.yanchor : Lib.midRange(\n isNotPath ? [shapeOptions2.y0, shapeOptions2.y1] : helpers.extractPathCoords(shapeOptions2.path, constants.paramIsY)\n )\n );\n posX = helpers.roundPositionForSharpStrokeRendering(posX, strokeWidth);\n posY = helpers.roundPositionForSharpStrokeRendering(posY, strokeWidth);\n if (xPixelSized && yPixelSized) {\n var crossPath = \"M\" + (posX - 1 - strokeWidth) + \",\" + (posY - 1 - strokeWidth) + \"h-8v2h8 v8h2v-8 h8v-2h-8 v-8h-2 Z\";\n visualCues.attr(\"d\", crossPath);\n } else if (xPixelSized) {\n var vBarPath = \"M\" + (posX - 1 - strokeWidth) + \",\" + (posY - 9 - strokeWidth) + \"v18 h2 v-18 Z\";\n visualCues.attr(\"d\", vBarPath);\n } else {\n var hBarPath = \"M\" + (posX - 9 - strokeWidth) + \",\" + (posY - 1 - strokeWidth) + \"h18 v2 h-18 Z\";\n visualCues.attr(\"d\", hBarPath);\n }\n }\n }\n function removeVisualCues(shapeLayer2) {\n shapeLayer2.selectAll(\".visual-cue\").remove();\n }\n function deactivateClipPathTemporarily(shapePath2, shapeOptions2, gd2) {\n var xref = shapeOptions2.xref;\n var yref = shapeOptions2.yref;\n var xa2 = Axes.getFromId(gd2, xref);\n var ya2 = Axes.getFromId(gd2, yref);\n var clipAxes = \"\";\n if (xref !== \"paper\" && !xa2.autorange) clipAxes += xref;\n if (yref !== \"paper\" && !ya2.autorange) clipAxes += yref;\n Drawing.setClipUrl(\n shapePath2,\n clipAxes ? \"clip\" + gd2._fullLayout._uid + clipAxes : null,\n gd2\n );\n }\n }\n function movePath(pathIn, moveX, moveY) {\n return pathIn.replace(constants.segmentRE, function(segment) {\n var paramNumber = 0;\n var segmentType = segment.charAt(0);\n var xParams = constants.paramIsX[segmentType];\n var yParams = constants.paramIsY[segmentType];\n var nParams = constants.numParams[segmentType];\n var paramString = segment.substr(1).replace(constants.paramRE, function(param) {\n if (paramNumber >= nParams) return param;\n if (xParams[paramNumber]) param = moveX(param);\n else if (yParams[paramNumber]) param = moveY(param);\n paramNumber++;\n return param;\n });\n return segmentType + paramString;\n });\n }\n function activateShape(gd, path) {\n if (!couldHaveActiveShape(gd)) return;\n var element = path.node();\n var id = +element.getAttribute(\"data-index\");\n if (id >= 0) {\n if (id === gd._fullLayout._activeShapeIndex) {\n deactivateShape(gd);\n return;\n }\n gd._fullLayout._activeShapeIndex = id;\n gd._fullLayout._deactivateShape = deactivateShape;\n draw(gd);\n }\n }\n function deactivateShape(gd) {\n if (!couldHaveActiveShape(gd)) return;\n var id = gd._fullLayout._activeShapeIndex;\n if (id >= 0) {\n clearOutlineControllers(gd);\n delete gd._fullLayout._activeShapeIndex;\n draw(gd);\n }\n }\n function eraseActiveShape(gd) {\n if (!couldHaveActiveShape(gd)) return;\n clearOutlineControllers(gd);\n var id = gd._fullLayout._activeShapeIndex;\n var shapes = (gd.layout || {}).shapes || [];\n if (id < shapes.length) {\n var list = [];\n for (var q = 0; q < shapes.length; q++) {\n if (q !== id) {\n list.push(shapes[q]);\n }\n }\n delete gd._fullLayout._activeShapeIndex;\n return Registry.call(\"_guiRelayout\", gd, {\n shapes: list\n });\n }\n }\n }\n });\n\n // src/components/modebar/buttons.js\n var require_buttons = __commonJS({\n \"src/components/modebar/buttons.js\"(exports, module) {\n \"use strict\";\n var Registry = require_registry();\n var Plots = require_plots();\n var axisIds = require_axis_ids();\n var Icons = require_ploticon();\n var eraseActiveShape = require_draw2().eraseActiveShape;\n var Lib = require_lib();\n var _ = Lib._;\n var modeBarButtons = module.exports = {};\n modeBarButtons.toImage = {\n name: \"toImage\",\n title: function(gd) {\n var opts = gd._context.toImageButtonOptions || {};\n var format = opts.format || \"png\";\n return format === \"png\" ? _(gd, \"Download plot as a png\") : (\n // legacy text\n _(gd, \"Download plot\")\n );\n },\n icon: Icons.camera,\n click: function(gd) {\n var toImageButtonOptions = gd._context.toImageButtonOptions;\n var opts = { format: toImageButtonOptions.format || \"png\" };\n Lib.notifier(_(gd, \"Taking snapshot - this may take a few seconds\"), \"long\");\n [\"filename\", \"width\", \"height\", \"scale\"].forEach(function(key) {\n if (key in toImageButtonOptions) {\n opts[key] = toImageButtonOptions[key];\n }\n });\n Registry.call(\"downloadImage\", gd, opts).then(function(filename) {\n Lib.notifier(_(gd, \"Snapshot succeeded\") + \" - \" + filename, \"long\");\n }).catch(function() {\n Lib.notifier(_(gd, \"Sorry, there was a problem downloading your snapshot!\"), \"long\");\n });\n }\n };\n modeBarButtons.sendDataToCloud = {\n name: \"sendDataToCloud\",\n title: function(gd) {\n return _(gd, \"Edit in Chart Studio\");\n },\n icon: Icons.disk,\n click: function(gd) {\n Plots.sendDataToCloud(gd);\n }\n };\n modeBarButtons.editInChartStudio = {\n name: \"editInChartStudio\",\n title: function(gd) {\n return _(gd, \"Edit in Chart Studio\");\n },\n icon: Icons.pencil,\n click: function(gd) {\n Plots.sendDataToCloud(gd);\n }\n };\n modeBarButtons.zoom2d = {\n name: \"zoom2d\",\n _cat: \"zoom\",\n title: function(gd) {\n return _(gd, \"Zoom\");\n },\n attr: \"dragmode\",\n val: \"zoom\",\n icon: Icons.zoombox,\n click: handleCartesian\n };\n modeBarButtons.pan2d = {\n name: \"pan2d\",\n _cat: \"pan\",\n title: function(gd) {\n return _(gd, \"Pan\");\n },\n attr: \"dragmode\",\n val: \"pan\",\n icon: Icons.pan,\n click: handleCartesian\n };\n modeBarButtons.select2d = {\n name: \"select2d\",\n _cat: \"select\",\n title: function(gd) {\n return _(gd, \"Box Select\");\n },\n attr: \"dragmode\",\n val: \"select\",\n icon: Icons.selectbox,\n click: handleCartesian\n };\n modeBarButtons.lasso2d = {\n name: \"lasso2d\",\n _cat: \"lasso\",\n title: function(gd) {\n return _(gd, \"Lasso Select\");\n },\n attr: \"dragmode\",\n val: \"lasso\",\n icon: Icons.lasso,\n click: handleCartesian\n };\n modeBarButtons.drawclosedpath = {\n name: \"drawclosedpath\",\n title: function(gd) {\n return _(gd, \"Draw closed freeform\");\n },\n attr: \"dragmode\",\n val: \"drawclosedpath\",\n icon: Icons.drawclosedpath,\n click: handleCartesian\n };\n modeBarButtons.drawopenpath = {\n name: \"drawopenpath\",\n title: function(gd) {\n return _(gd, \"Draw open freeform\");\n },\n attr: \"dragmode\",\n val: \"drawopenpath\",\n icon: Icons.drawopenpath,\n click: handleCartesian\n };\n modeBarButtons.drawline = {\n name: \"drawline\",\n title: function(gd) {\n return _(gd, \"Draw line\");\n },\n attr: \"dragmode\",\n val: \"drawline\",\n icon: Icons.drawline,\n click: handleCartesian\n };\n modeBarButtons.drawrect = {\n name: \"drawrect\",\n title: function(gd) {\n return _(gd, \"Draw rectangle\");\n },\n attr: \"dragmode\",\n val: \"drawrect\",\n icon: Icons.drawrect,\n click: handleCartesian\n };\n modeBarButtons.drawcircle = {\n name: \"drawcircle\",\n title: function(gd) {\n return _(gd, \"Draw circle\");\n },\n attr: \"dragmode\",\n val: \"drawcircle\",\n icon: Icons.drawcircle,\n click: handleCartesian\n };\n modeBarButtons.eraseshape = {\n name: \"eraseshape\",\n title: function(gd) {\n return _(gd, \"Erase active shape\");\n },\n icon: Icons.eraseshape,\n click: eraseActiveShape\n };\n modeBarButtons.zoomIn2d = {\n name: \"zoomIn2d\",\n _cat: \"zoomin\",\n title: function(gd) {\n return _(gd, \"Zoom in\");\n },\n attr: \"zoom\",\n val: \"in\",\n icon: Icons.zoom_plus,\n click: handleCartesian\n };\n modeBarButtons.zoomOut2d = {\n name: \"zoomOut2d\",\n _cat: \"zoomout\",\n title: function(gd) {\n return _(gd, \"Zoom out\");\n },\n attr: \"zoom\",\n val: \"out\",\n icon: Icons.zoom_minus,\n click: handleCartesian\n };\n modeBarButtons.autoScale2d = {\n name: \"autoScale2d\",\n _cat: \"autoscale\",\n title: function(gd) {\n return _(gd, \"Autoscale\");\n },\n attr: \"zoom\",\n val: \"auto\",\n icon: Icons.autoscale,\n click: handleCartesian\n };\n modeBarButtons.resetScale2d = {\n name: \"resetScale2d\",\n _cat: \"resetscale\",\n title: function(gd) {\n return _(gd, \"Reset axes\");\n },\n attr: \"zoom\",\n val: \"reset\",\n icon: Icons.home,\n click: handleCartesian\n };\n modeBarButtons.hoverClosestCartesian = {\n name: \"hoverClosestCartesian\",\n _cat: \"hoverclosest\",\n title: function(gd) {\n return _(gd, \"Show closest data on hover\");\n },\n attr: \"hovermode\",\n val: \"closest\",\n icon: Icons.tooltip_basic,\n gravity: \"ne\",\n click: handleCartesian\n };\n modeBarButtons.hoverCompareCartesian = {\n name: \"hoverCompareCartesian\",\n _cat: \"hoverCompare\",\n title: function(gd) {\n return _(gd, \"Compare data on hover\");\n },\n attr: \"hovermode\",\n val: function(gd) {\n return gd._fullLayout._isHoriz ? \"y\" : \"x\";\n },\n icon: Icons.tooltip_compare,\n gravity: \"ne\",\n click: handleCartesian\n };\n function handleCartesian(gd, ev) {\n var button = ev.currentTarget;\n var astr = button.getAttribute(\"data-attr\");\n var val = button.getAttribute(\"data-val\") || true;\n var fullLayout = gd._fullLayout;\n var aobj = {};\n var axList = axisIds.list(gd, null, true);\n var allSpikesEnabled = fullLayout._cartesianSpikesEnabled;\n var ax, i;\n if (astr === \"zoom\") {\n var mag = val === \"in\" ? 0.5 : 2;\n var r0 = (1 + mag) / 2;\n var r1 = (1 - mag) / 2;\n var axName;\n for (i = 0; i < axList.length; i++) {\n ax = axList[i];\n if (!ax.fixedrange) {\n axName = ax._name;\n if (val === \"auto\") {\n aobj[axName + \".autorange\"] = true;\n } else if (val === \"reset\") {\n if (ax._rangeInitial0 === void 0 && ax._rangeInitial1 === void 0) {\n aobj[axName + \".autorange\"] = true;\n } else if (ax._rangeInitial0 === void 0) {\n aobj[axName + \".autorange\"] = ax._autorangeInitial;\n aobj[axName + \".range\"] = [null, ax._rangeInitial1];\n } else if (ax._rangeInitial1 === void 0) {\n aobj[axName + \".range\"] = [ax._rangeInitial0, null];\n aobj[axName + \".autorange\"] = ax._autorangeInitial;\n } else {\n aobj[axName + \".range\"] = [ax._rangeInitial0, ax._rangeInitial1];\n }\n if (ax._showSpikeInitial !== void 0) {\n aobj[axName + \".showspikes\"] = ax._showSpikeInitial;\n if (allSpikesEnabled === \"on\" && !ax._showSpikeInitial) {\n allSpikesEnabled = \"off\";\n }\n }\n } else {\n var rangeNow = [\n ax.r2l(ax.range[0]),\n ax.r2l(ax.range[1])\n ];\n var rangeNew = [\n r0 * rangeNow[0] + r1 * rangeNow[1],\n r0 * rangeNow[1] + r1 * rangeNow[0]\n ];\n aobj[axName + \".range[0]\"] = ax.l2r(rangeNew[0]);\n aobj[axName + \".range[1]\"] = ax.l2r(rangeNew[1]);\n }\n }\n }\n } else {\n if (astr === \"hovermode\" && (val === \"x\" || val === \"y\")) {\n val = fullLayout._isHoriz ? \"y\" : \"x\";\n button.setAttribute(\"data-val\", val);\n }\n aobj[astr] = val;\n }\n fullLayout._cartesianSpikesEnabled = allSpikesEnabled;\n Registry.call(\"_guiRelayout\", gd, aobj);\n }\n modeBarButtons.zoom3d = {\n name: \"zoom3d\",\n _cat: \"zoom\",\n title: function(gd) {\n return _(gd, \"Zoom\");\n },\n attr: \"scene.dragmode\",\n val: \"zoom\",\n icon: Icons.zoombox,\n click: handleDrag3d\n };\n modeBarButtons.pan3d = {\n name: \"pan3d\",\n _cat: \"pan\",\n title: function(gd) {\n return _(gd, \"Pan\");\n },\n attr: \"scene.dragmode\",\n val: \"pan\",\n icon: Icons.pan,\n click: handleDrag3d\n };\n modeBarButtons.orbitRotation = {\n name: \"orbitRotation\",\n title: function(gd) {\n return _(gd, \"Orbital rotation\");\n },\n attr: \"scene.dragmode\",\n val: \"orbit\",\n icon: Icons[\"3d_rotate\"],\n click: handleDrag3d\n };\n modeBarButtons.tableRotation = {\n name: \"tableRotation\",\n title: function(gd) {\n return _(gd, \"Turntable rotation\");\n },\n attr: \"scene.dragmode\",\n val: \"turntable\",\n icon: Icons[\"z-axis\"],\n click: handleDrag3d\n };\n function handleDrag3d(gd, ev) {\n var button = ev.currentTarget;\n var attr = button.getAttribute(\"data-attr\");\n var val = button.getAttribute(\"data-val\") || true;\n var sceneIds = gd._fullLayout._subplots.gl3d || [];\n var layoutUpdate = {};\n var parts = attr.split(\".\");\n for (var i = 0; i < sceneIds.length; i++) {\n layoutUpdate[sceneIds[i] + \".\" + parts[1]] = val;\n }\n var val2d = val === \"pan\" ? val : \"zoom\";\n layoutUpdate.dragmode = val2d;\n Registry.call(\"_guiRelayout\", gd, layoutUpdate);\n }\n modeBarButtons.resetCameraDefault3d = {\n name: \"resetCameraDefault3d\",\n _cat: \"resetCameraDefault\",\n title: function(gd) {\n return _(gd, \"Reset camera to default\");\n },\n attr: \"resetDefault\",\n icon: Icons.home,\n click: handleCamera3d\n };\n modeBarButtons.resetCameraLastSave3d = {\n name: \"resetCameraLastSave3d\",\n _cat: \"resetCameraLastSave\",\n title: function(gd) {\n return _(gd, \"Reset camera to last save\");\n },\n attr: \"resetLastSave\",\n icon: Icons.movie,\n click: handleCamera3d\n };\n function handleCamera3d(gd, ev) {\n var button = ev.currentTarget;\n var attr = button.getAttribute(\"data-attr\");\n var resetLastSave = attr === \"resetLastSave\";\n var resetDefault = attr === \"resetDefault\";\n var fullLayout = gd._fullLayout;\n var sceneIds = fullLayout._subplots.gl3d || [];\n var aobj = {};\n for (var i = 0; i < sceneIds.length; i++) {\n var sceneId = sceneIds[i];\n var camera = sceneId + \".camera\";\n var aspectratio = sceneId + \".aspectratio\";\n var aspectmode = sceneId + \".aspectmode\";\n var scene = fullLayout[sceneId]._scene;\n var didUpdate;\n if (resetLastSave) {\n aobj[camera + \".up\"] = scene.viewInitial.up;\n aobj[camera + \".eye\"] = scene.viewInitial.eye;\n aobj[camera + \".center\"] = scene.viewInitial.center;\n didUpdate = true;\n } else if (resetDefault) {\n aobj[camera + \".up\"] = null;\n aobj[camera + \".eye\"] = null;\n aobj[camera + \".center\"] = null;\n didUpdate = true;\n }\n if (didUpdate) {\n aobj[aspectratio + \".x\"] = scene.viewInitial.aspectratio.x;\n aobj[aspectratio + \".y\"] = scene.viewInitial.aspectratio.y;\n aobj[aspectratio + \".z\"] = scene.viewInitial.aspectratio.z;\n aobj[aspectmode] = scene.viewInitial.aspectmode;\n }\n }\n Registry.call(\"_guiRelayout\", gd, aobj);\n }\n modeBarButtons.hoverClosest3d = {\n name: \"hoverClosest3d\",\n _cat: \"hoverclosest\",\n title: function(gd) {\n return _(gd, \"Toggle show closest data on hover\");\n },\n attr: \"hovermode\",\n val: null,\n toggle: true,\n icon: Icons.tooltip_basic,\n gravity: \"ne\",\n click: handleHover3d\n };\n function getNextHover3d(gd, ev) {\n var button = ev.currentTarget;\n var val = button._previousVal;\n var fullLayout = gd._fullLayout;\n var sceneIds = fullLayout._subplots.gl3d || [];\n var axes = [\"xaxis\", \"yaxis\", \"zaxis\"];\n var currentSpikes = {};\n var layoutUpdate = {};\n if (val) {\n layoutUpdate = val;\n button._previousVal = null;\n } else {\n for (var i = 0; i < sceneIds.length; i++) {\n var sceneId = sceneIds[i];\n var sceneLayout = fullLayout[sceneId];\n var hovermodeAStr = sceneId + \".hovermode\";\n currentSpikes[hovermodeAStr] = sceneLayout.hovermode;\n layoutUpdate[hovermodeAStr] = false;\n for (var j = 0; j < 3; j++) {\n var axis = axes[j];\n var spikeAStr = sceneId + \".\" + axis + \".showspikes\";\n layoutUpdate[spikeAStr] = false;\n currentSpikes[spikeAStr] = sceneLayout[axis].showspikes;\n }\n }\n button._previousVal = currentSpikes;\n }\n return layoutUpdate;\n }\n function handleHover3d(gd, ev) {\n var layoutUpdate = getNextHover3d(gd, ev);\n Registry.call(\"_guiRelayout\", gd, layoutUpdate);\n }\n modeBarButtons.zoomInGeo = {\n name: \"zoomInGeo\",\n _cat: \"zoomin\",\n title: function(gd) {\n return _(gd, \"Zoom in\");\n },\n attr: \"zoom\",\n val: \"in\",\n icon: Icons.zoom_plus,\n click: handleGeo\n };\n modeBarButtons.zoomOutGeo = {\n name: \"zoomOutGeo\",\n _cat: \"zoomout\",\n title: function(gd) {\n return _(gd, \"Zoom out\");\n },\n attr: \"zoom\",\n val: \"out\",\n icon: Icons.zoom_minus,\n click: handleGeo\n };\n modeBarButtons.resetGeo = {\n name: \"resetGeo\",\n _cat: \"reset\",\n title: function(gd) {\n return _(gd, \"Reset\");\n },\n attr: \"reset\",\n val: null,\n icon: Icons.autoscale,\n click: handleGeo\n };\n modeBarButtons.hoverClosestGeo = {\n name: \"hoverClosestGeo\",\n _cat: \"hoverclosest\",\n title: function(gd) {\n return _(gd, \"Toggle show closest data on hover\");\n },\n attr: \"hovermode\",\n val: null,\n toggle: true,\n icon: Icons.tooltip_basic,\n gravity: \"ne\",\n click: toggleHover\n };\n function handleGeo(gd, ev) {\n var button = ev.currentTarget;\n var attr = button.getAttribute(\"data-attr\");\n var val = button.getAttribute(\"data-val\") || true;\n var fullLayout = gd._fullLayout;\n var geoIds = fullLayout._subplots.geo || [];\n for (var i = 0; i < geoIds.length; i++) {\n var id = geoIds[i];\n var geoLayout = fullLayout[id];\n if (attr === \"zoom\") {\n var scale = geoLayout.projection.scale;\n var newScale = val === \"in\" ? 2 * scale : 0.5 * scale;\n Registry.call(\"_guiRelayout\", gd, id + \".projection.scale\", newScale);\n }\n }\n if (attr === \"reset\") {\n resetView(gd, \"geo\");\n }\n }\n modeBarButtons.hoverClosestPie = {\n name: \"hoverClosestPie\",\n _cat: \"hoverclosest\",\n title: function(gd) {\n return _(gd, \"Toggle show closest data on hover\");\n },\n attr: \"hovermode\",\n val: \"closest\",\n icon: Icons.tooltip_basic,\n gravity: \"ne\",\n click: toggleHover\n };\n function getNextHover(gd) {\n var fullLayout = gd._fullLayout;\n if (fullLayout.hovermode) return false;\n if (fullLayout._has(\"cartesian\")) {\n return fullLayout._isHoriz ? \"y\" : \"x\";\n }\n return \"closest\";\n }\n function toggleHover(gd) {\n var newHover = getNextHover(gd);\n Registry.call(\"_guiRelayout\", gd, \"hovermode\", newHover);\n }\n modeBarButtons.resetViewSankey = {\n name: \"resetSankeyGroup\",\n title: function(gd) {\n return _(gd, \"Reset view\");\n },\n icon: Icons.home,\n click: function(gd) {\n var aObj = {\n \"node.groups\": [],\n \"node.x\": [],\n \"node.y\": []\n };\n for (var i = 0; i < gd._fullData.length; i++) {\n var viewInitial = gd._fullData[i]._viewInitial;\n aObj[\"node.groups\"].push(viewInitial.node.groups.slice());\n aObj[\"node.x\"].push(viewInitial.node.x.slice());\n aObj[\"node.y\"].push(viewInitial.node.y.slice());\n }\n Registry.call(\"restyle\", gd, aObj);\n }\n };\n modeBarButtons.toggleHover = {\n name: \"toggleHover\",\n title: function(gd) {\n return _(gd, \"Toggle show closest data on hover\");\n },\n attr: \"hovermode\",\n val: null,\n toggle: true,\n icon: Icons.tooltip_basic,\n gravity: \"ne\",\n click: function(gd, ev) {\n var layoutUpdate = getNextHover3d(gd, ev);\n layoutUpdate.hovermode = getNextHover(gd);\n Registry.call(\"_guiRelayout\", gd, layoutUpdate);\n }\n };\n modeBarButtons.resetViews = {\n name: \"resetViews\",\n title: function(gd) {\n return _(gd, \"Reset views\");\n },\n icon: Icons.home,\n click: function(gd, ev) {\n var button = ev.currentTarget;\n button.setAttribute(\"data-attr\", \"zoom\");\n button.setAttribute(\"data-val\", \"reset\");\n handleCartesian(gd, ev);\n button.setAttribute(\"data-attr\", \"resetLastSave\");\n handleCamera3d(gd, ev);\n resetView(gd, \"geo\");\n resetView(gd, \"mapbox\");\n resetView(gd, \"map\");\n }\n };\n modeBarButtons.toggleSpikelines = {\n name: \"toggleSpikelines\",\n title: function(gd) {\n return _(gd, \"Toggle Spike Lines\");\n },\n icon: Icons.spikeline,\n attr: \"_cartesianSpikesEnabled\",\n val: \"on\",\n click: function(gd) {\n var fullLayout = gd._fullLayout;\n var allSpikesEnabled = fullLayout._cartesianSpikesEnabled;\n fullLayout._cartesianSpikesEnabled = allSpikesEnabled === \"on\" ? \"off\" : \"on\";\n Registry.call(\"_guiRelayout\", gd, setSpikelineVisibility(gd));\n }\n };\n function setSpikelineVisibility(gd) {\n var fullLayout = gd._fullLayout;\n var areSpikesOn = fullLayout._cartesianSpikesEnabled === \"on\";\n var axList = axisIds.list(gd, null, true);\n var aobj = {};\n for (var i = 0; i < axList.length; i++) {\n var ax = axList[i];\n aobj[ax._name + \".showspikes\"] = areSpikesOn ? true : ax._showSpikeInitial;\n }\n return aobj;\n }\n modeBarButtons.resetViewMapbox = {\n name: \"resetViewMapbox\",\n _cat: \"resetView\",\n title: function(gd) {\n return _(gd, \"Reset view\");\n },\n attr: \"reset\",\n icon: Icons.home,\n click: function(gd) {\n resetView(gd, \"mapbox\");\n }\n };\n modeBarButtons.resetViewMap = {\n name: \"resetViewMap\",\n _cat: \"resetView\",\n title: function(gd) {\n return _(gd, \"Reset view\");\n },\n attr: \"reset\",\n icon: Icons.home,\n click: function(gd) {\n resetView(gd, \"map\");\n }\n };\n modeBarButtons.zoomInMapbox = {\n name: \"zoomInMapbox\",\n _cat: \"zoomin\",\n title: function(gd) {\n return _(gd, \"Zoom in\");\n },\n attr: \"zoom\",\n val: \"in\",\n icon: Icons.zoom_plus,\n click: handleMapboxZoom\n };\n modeBarButtons.zoomInMap = {\n name: \"zoomInMap\",\n _cat: \"zoomin\",\n title: function(gd) {\n return _(gd, \"Zoom in\");\n },\n attr: \"zoom\",\n val: \"in\",\n icon: Icons.zoom_plus,\n click: handleMapZoom\n };\n modeBarButtons.zoomOutMapbox = {\n name: \"zoomOutMapbox\",\n _cat: \"zoomout\",\n title: function(gd) {\n return _(gd, \"Zoom out\");\n },\n attr: \"zoom\",\n val: \"out\",\n icon: Icons.zoom_minus,\n click: handleMapboxZoom\n };\n modeBarButtons.zoomOutMap = {\n name: \"zoomOutMap\",\n _cat: \"zoomout\",\n title: function(gd) {\n return _(gd, \"Zoom out\");\n },\n attr: \"zoom\",\n val: \"out\",\n icon: Icons.zoom_minus,\n click: handleMapZoom\n };\n function handleMapboxZoom(gd, ev) {\n _handleMapZoom(gd, ev, \"mapbox\");\n }\n function handleMapZoom(gd, ev) {\n _handleMapZoom(gd, ev, \"map\");\n }\n function _handleMapZoom(gd, ev, mapType) {\n var button = ev.currentTarget;\n var val = button.getAttribute(\"data-val\");\n var fullLayout = gd._fullLayout;\n var subplotIds = fullLayout._subplots[mapType] || [];\n var scalar = 1.05;\n var aObj = {};\n for (var i = 0; i < subplotIds.length; i++) {\n var id = subplotIds[i];\n var current = fullLayout[id].zoom;\n var next = val === \"in\" ? scalar * current : current / scalar;\n aObj[id + \".zoom\"] = next;\n }\n Registry.call(\"_guiRelayout\", gd, aObj);\n }\n function resetView(gd, subplotType) {\n var fullLayout = gd._fullLayout;\n var subplotIds = fullLayout._subplots[subplotType] || [];\n var aObj = {};\n for (var i = 0; i < subplotIds.length; i++) {\n var id = subplotIds[i];\n var subplotObj = fullLayout[id]._subplot;\n var viewInitial = subplotObj.viewInitial;\n var viewKeys = Object.keys(viewInitial);\n for (var j = 0; j < viewKeys.length; j++) {\n var key = viewKeys[j];\n aObj[id + \".\" + key] = viewInitial[key];\n }\n }\n Registry.call(\"_guiRelayout\", gd, aObj);\n }\n }\n });\n\n // src/components/modebar/constants.js\n var require_constants6 = __commonJS({\n \"src/components/modebar/constants.js\"(exports, module) {\n \"use strict\";\n var modeBarButtons = require_buttons();\n var buttonList = Object.keys(modeBarButtons);\n var DRAW_MODES = [\n \"drawline\",\n \"drawopenpath\",\n \"drawclosedpath\",\n \"drawcircle\",\n \"drawrect\",\n \"eraseshape\"\n ];\n var backButtons = [\n \"v1hovermode\",\n \"hoverclosest\",\n \"hovercompare\",\n \"togglehover\",\n \"togglespikelines\"\n ].concat(DRAW_MODES);\n var foreButtons = [];\n var addToForeButtons = function(b) {\n if (backButtons.indexOf(b._cat || b.name) !== -1) return;\n var name = b.name;\n var _cat = (b._cat || b.name).toLowerCase();\n if (foreButtons.indexOf(name) === -1) foreButtons.push(name);\n if (foreButtons.indexOf(_cat) === -1) foreButtons.push(_cat);\n };\n buttonList.forEach(function(k) {\n addToForeButtons(modeBarButtons[k]);\n });\n foreButtons.sort();\n module.exports = {\n DRAW_MODES,\n backButtons,\n foreButtons\n };\n }\n });\n\n // src/components/modebar/attributes.js\n var require_attributes10 = __commonJS({\n \"src/components/modebar/attributes.js\"(exports, module) {\n \"use strict\";\n var constants = require_constants6();\n module.exports = {\n editType: \"modebar\",\n orientation: {\n valType: \"enumerated\",\n values: [\"v\", \"h\"],\n dflt: \"h\",\n editType: \"modebar\"\n },\n bgcolor: {\n valType: \"color\",\n editType: \"modebar\"\n },\n color: {\n valType: \"color\",\n editType: \"modebar\"\n },\n activecolor: {\n valType: \"color\",\n editType: \"modebar\"\n },\n uirevision: {\n valType: \"any\",\n editType: \"none\"\n },\n add: {\n valType: \"string\",\n arrayOk: true,\n dflt: \"\",\n editType: \"modebar\"\n },\n remove: {\n valType: \"string\",\n arrayOk: true,\n dflt: \"\",\n editType: \"modebar\"\n }\n };\n }\n });\n\n // src/components/modebar/defaults.js\n var require_defaults5 = __commonJS({\n \"src/components/modebar/defaults.js\"(exports, module) {\n \"use strict\";\n var Lib = require_lib();\n var Color = require_color();\n var Template = require_plot_template();\n var attributes = require_attributes10();\n module.exports = function supplyLayoutDefaults(layoutIn, layoutOut) {\n var containerIn = layoutIn.modebar || {};\n var containerOut = Template.newContainer(layoutOut, \"modebar\");\n function coerce(attr, dflt) {\n return Lib.coerce(containerIn, containerOut, attributes, attr, dflt);\n }\n coerce(\"orientation\");\n coerce(\"bgcolor\", Color.addOpacity(layoutOut.paper_bgcolor, 0.5));\n var defaultColor = Color.contrast(Color.rgb(layoutOut.modebar.bgcolor));\n coerce(\"color\", Color.addOpacity(defaultColor, 0.3));\n coerce(\"activecolor\", Color.addOpacity(defaultColor, 0.7));\n coerce(\"uirevision\", layoutOut.uirevision);\n coerce(\"add\");\n coerce(\"remove\");\n };\n }\n });\n\n // src/components/modebar/modebar.js\n var require_modebar = __commonJS({\n \"src/components/modebar/modebar.js\"(exports, module) {\n \"use strict\";\n var d3 = require_d3();\n var isNumeric = require_fast_isnumeric();\n var Lib = require_lib();\n var Icons = require_ploticon();\n var version = require_version().version;\n var Parser = new DOMParser();\n function ModeBar(opts) {\n this.container = opts.container;\n this.element = document.createElement(\"div\");\n this.update(opts.graphInfo, opts.buttons);\n this.container.appendChild(this.element);\n }\n var proto = ModeBar.prototype;\n proto.update = function(graphInfo, buttons) {\n this.graphInfo = graphInfo;\n var context = this.graphInfo._context;\n var fullLayout = this.graphInfo._fullLayout;\n var modeBarId = \"modebar-\" + fullLayout._uid;\n this.element.setAttribute(\"id\", modeBarId);\n this._uid = modeBarId;\n this.element.className = \"modebar\";\n if (context.displayModeBar === \"hover\") this.element.className += \" modebar--hover ease-bg\";\n if (fullLayout.modebar.orientation === \"v\") {\n this.element.className += \" vertical\";\n buttons = buttons.reverse();\n }\n var style = fullLayout.modebar;\n var groupSelector = \"#\" + modeBarId + \" .modebar-group\";\n document.querySelectorAll(groupSelector).forEach(function(group) {\n group.style.backgroundColor = style.bgcolor;\n });\n var needsNewButtons = !this.hasButtons(buttons);\n var needsNewLogo = this.hasLogo !== context.displaylogo;\n var needsNewLocale = this.locale !== context.locale;\n this.locale = context.locale;\n if (needsNewButtons || needsNewLogo || needsNewLocale) {\n this.removeAllButtons();\n this.updateButtons(buttons);\n if (context.watermark || context.displaylogo) {\n var logoGroup = this.getLogo();\n if (context.watermark) {\n logoGroup.className = logoGroup.className + \" watermark\";\n }\n if (fullLayout.modebar.orientation === \"v\") {\n this.element.insertBefore(logoGroup, this.element.childNodes[0]);\n } else {\n this.element.appendChild(logoGroup);\n }\n this.hasLogo = true;\n }\n }\n this.updateActiveButton();\n Lib.setStyleOnHover(\"#\" + modeBarId + \" .modebar-btn\", \".active\", \".icon path\", \"fill: \" + style.activecolor, \"fill: \" + style.color, this.element);\n };\n proto.updateButtons = function(buttons) {\n var _this = this;\n this.buttons = buttons;\n this.buttonElements = [];\n this.buttonsNames = [];\n this.buttons.forEach(function(buttonGroup) {\n var group = _this.createGroup();\n buttonGroup.forEach(function(buttonConfig) {\n var buttonName = buttonConfig.name;\n if (!buttonName) {\n throw new Error(\"must provide button 'name' in button config\");\n }\n if (_this.buttonsNames.indexOf(buttonName) !== -1) {\n throw new Error(\"button name '\" + buttonName + \"' is taken\");\n }\n _this.buttonsNames.push(buttonName);\n var button = _this.createButton(buttonConfig);\n _this.buttonElements.push(button);\n group.appendChild(button);\n });\n _this.element.appendChild(group);\n });\n };\n proto.createGroup = function() {\n var group = document.createElement(\"div\");\n group.className = \"modebar-group\";\n var style = this.graphInfo._fullLayout.modebar;\n group.style.backgroundColor = style.bgcolor;\n return group;\n };\n proto.createButton = function(config) {\n var _this = this;\n var button = document.createElement(\"a\");\n button.setAttribute(\"rel\", \"tooltip\");\n button.className = \"modebar-btn\";\n var title = config.title;\n if (title === void 0) title = config.name;\n else if (typeof title === \"function\") title = title(this.graphInfo);\n if (title || title === 0) button.setAttribute(\"data-title\", title);\n if (config.attr !== void 0) button.setAttribute(\"data-attr\", config.attr);\n var val = config.val;\n if (val !== void 0) {\n if (typeof val === \"function\") val = val(this.graphInfo);\n button.setAttribute(\"data-val\", val);\n }\n var click = config.click;\n if (typeof click !== \"function\") {\n throw new Error(\"must provide button 'click' function in button config\");\n } else {\n button.addEventListener(\"click\", function(ev) {\n config.click(_this.graphInfo, ev);\n _this.updateActiveButton(ev.currentTarget);\n });\n }\n button.setAttribute(\"data-toggle\", config.toggle || false);\n if (config.toggle) d3.select(button).classed(\"active\", true);\n var icon = config.icon;\n if (typeof icon === \"function\") {\n button.appendChild(icon());\n } else {\n button.appendChild(this.createIcon(icon || Icons.question));\n }\n button.setAttribute(\"data-gravity\", config.gravity || \"n\");\n return button;\n };\n proto.createIcon = function(thisIcon) {\n var iconHeight = isNumeric(thisIcon.height) ? Number(thisIcon.height) : thisIcon.ascent - thisIcon.descent;\n var svgNS = \"http://www.w3.org/2000/svg\";\n var icon;\n if (thisIcon.path) {\n icon = document.createElementNS(svgNS, \"svg\");\n icon.setAttribute(\"viewBox\", [0, 0, thisIcon.width, iconHeight].join(\" \"));\n icon.setAttribute(\"class\", \"icon\");\n var path = document.createElementNS(svgNS, \"path\");\n path.setAttribute(\"d\", thisIcon.path);\n if (thisIcon.transform) {\n path.setAttribute(\"transform\", thisIcon.transform);\n } else if (thisIcon.ascent !== void 0) {\n path.setAttribute(\"transform\", \"matrix(1 0 0 -1 0 \" + thisIcon.ascent + \")\");\n }\n icon.appendChild(path);\n }\n if (thisIcon.svg) {\n var svgDoc = Parser.parseFromString(thisIcon.svg, \"application/xml\");\n icon = svgDoc.childNodes[0];\n }\n icon.setAttribute(\"height\", \"1em\");\n icon.setAttribute(\"width\", \"1em\");\n return icon;\n };\n proto.updateActiveButton = function(buttonClicked) {\n var fullLayout = this.graphInfo._fullLayout;\n var dataAttrClicked = buttonClicked !== void 0 ? buttonClicked.getAttribute(\"data-attr\") : null;\n this.buttonElements.forEach(function(button) {\n var thisval = button.getAttribute(\"data-val\") || true;\n var dataAttr = button.getAttribute(\"data-attr\");\n var isToggleButton = button.getAttribute(\"data-toggle\") === \"true\";\n var button3 = d3.select(button);\n var updateButtonStyle = function(button2, isActive2) {\n var style = fullLayout.modebar;\n var childEl = button2.querySelector(\".icon path\");\n if (childEl) {\n if (isActive2 || button2.matches(\":hover\")) {\n childEl.style.fill = style.activecolor;\n } else {\n childEl.style.fill = style.color;\n }\n }\n };\n if (isToggleButton) {\n if (dataAttr === dataAttrClicked) {\n var isActive = !button3.classed(\"active\");\n button3.classed(\"active\", isActive);\n updateButtonStyle(button, isActive);\n }\n } else {\n var val = dataAttr === null ? dataAttr : Lib.nestedProperty(fullLayout, dataAttr).get();\n button3.classed(\"active\", val === thisval);\n updateButtonStyle(button, val === thisval);\n }\n });\n };\n proto.hasButtons = function(buttons) {\n var currentButtons = this.buttons;\n if (!currentButtons) return false;\n if (buttons.length !== currentButtons.length) return false;\n for (var i = 0; i < buttons.length; ++i) {\n if (buttons[i].length !== currentButtons[i].length) return false;\n for (var j = 0; j < buttons[i].length; j++) {\n if (buttons[i][j].name !== currentButtons[i][j].name) return false;\n }\n }\n return true;\n };\n function jsVersion(str) {\n return str + \" (v\" + version + \")\";\n }\n proto.getLogo = function() {\n var group = this.createGroup();\n var a = document.createElement(\"a\");\n a.href = \"https://plotly.com/\";\n a.target = \"_blank\";\n a.setAttribute(\"data-title\", jsVersion(Lib._(this.graphInfo, \"Produced with Plotly.js\")));\n a.className = \"modebar-btn plotlyjsicon modebar-btn--logo\";\n a.appendChild(this.createIcon(Icons.newplotlylogo));\n group.appendChild(a);\n return group;\n };\n proto.removeAllButtons = function() {\n while (this.element.firstChild) {\n this.element.removeChild(this.element.firstChild);\n }\n this.hasLogo = false;\n };\n proto.destroy = function() {\n Lib.removeElement(this.container.querySelector(\".modebar\"));\n };\n function createModeBar(gd, buttons) {\n var fullLayout = gd._fullLayout;\n var modeBar = new ModeBar({\n graphInfo: gd,\n container: fullLayout._modebardiv.node(),\n buttons\n });\n if (fullLayout._privateplot) {\n d3.select(modeBar.element).append(\"span\").classed(\"badge-private float--left\", true).text(\"PRIVATE\");\n }\n return modeBar;\n }\n module.exports = createModeBar;\n }\n });\n\n // src/components/modebar/manage.js\n var require_manage = __commonJS({\n \"src/components/modebar/manage.js\"(exports, module) {\n \"use strict\";\n var axisIds = require_axis_ids();\n var scatterSubTypes = require_subtypes();\n var Registry = require_registry();\n var isUnifiedHover = require_helpers2().isUnifiedHover;\n var createModeBar = require_modebar();\n var modeBarButtons = require_buttons();\n var DRAW_MODES = require_constants6().DRAW_MODES;\n var extendDeep = require_lib().extendDeep;\n module.exports = function manageModeBar(gd) {\n var fullLayout = gd._fullLayout;\n var context = gd._context;\n var modeBar = fullLayout._modeBar;\n if (!context.displayModeBar && !context.watermark) {\n if (modeBar) {\n modeBar.destroy();\n delete fullLayout._modeBar;\n }\n return;\n }\n if (!Array.isArray(context.modeBarButtonsToRemove)) {\n throw new Error([\n \"*modeBarButtonsToRemove* configuration options\",\n \"must be an array.\"\n ].join(\" \"));\n }\n if (!Array.isArray(context.modeBarButtonsToAdd)) {\n throw new Error([\n \"*modeBarButtonsToAdd* configuration options\",\n \"must be an array.\"\n ].join(\" \"));\n }\n var customButtons = context.modeBarButtons;\n var buttonGroups;\n if (Array.isArray(customButtons) && customButtons.length) {\n buttonGroups = fillCustomButton(customButtons);\n } else if (!context.displayModeBar && context.watermark) {\n buttonGroups = [];\n } else {\n buttonGroups = getButtonGroups(gd);\n }\n if (modeBar) modeBar.update(gd, buttonGroups);\n else fullLayout._modeBar = createModeBar(gd, buttonGroups);\n };\n function getButtonGroups(gd) {\n var fullLayout = gd._fullLayout;\n var fullData = gd._fullData;\n var context = gd._context;\n function match(name, B) {\n if (typeof B === \"string\") {\n if (B.toLowerCase() === name.toLowerCase()) return true;\n } else {\n var v0 = B.name;\n var v1 = B._cat || B.name;\n if (v0 === name || v1 === name.toLowerCase()) return true;\n }\n return false;\n }\n var layoutAdd = fullLayout.modebar.add;\n if (typeof layoutAdd === \"string\") layoutAdd = [layoutAdd];\n var layoutRemove = fullLayout.modebar.remove;\n if (typeof layoutRemove === \"string\") layoutRemove = [layoutRemove];\n var buttonsToAdd = context.modeBarButtonsToAdd.concat(\n layoutAdd.filter(function(e) {\n for (var i2 = 0; i2 < context.modeBarButtonsToRemove.length; i2++) {\n if (match(e, context.modeBarButtonsToRemove[i2])) return false;\n }\n return true;\n })\n );\n var buttonsToRemove = context.modeBarButtonsToRemove.concat(\n layoutRemove.filter(function(e) {\n for (var i2 = 0; i2 < context.modeBarButtonsToAdd.length; i2++) {\n if (match(e, context.modeBarButtonsToAdd[i2])) return false;\n }\n return true;\n })\n );\n var hasCartesian = fullLayout._has(\"cartesian\");\n var hasGL3D = fullLayout._has(\"gl3d\");\n var hasGeo = fullLayout._has(\"geo\");\n var hasPie = fullLayout._has(\"pie\");\n var hasFunnelarea = fullLayout._has(\"funnelarea\");\n var hasTernary = fullLayout._has(\"ternary\");\n var hasMapbox = fullLayout._has(\"mapbox\");\n var hasMap = fullLayout._has(\"map\");\n var hasPolar = fullLayout._has(\"polar\");\n var hasSmith = fullLayout._has(\"smith\");\n var hasSankey = fullLayout._has(\"sankey\");\n var allAxesFixed = areAllAxesFixed(fullLayout);\n var hasUnifiedHoverLabel = isUnifiedHover(fullLayout.hovermode);\n var groups = [];\n function addGroup(newGroup) {\n if (!newGroup.length) return;\n var out = [];\n for (var i2 = 0; i2 < newGroup.length; i2++) {\n var name = newGroup[i2];\n var B = modeBarButtons[name];\n var v0 = B.name.toLowerCase();\n var v1 = (B._cat || B.name).toLowerCase();\n var found = false;\n for (var q = 0; q < buttonsToRemove.length; q++) {\n var t = buttonsToRemove[q].toLowerCase();\n if (t === v0 || t === v1) {\n found = true;\n break;\n }\n }\n if (found) continue;\n out.push(modeBarButtons[name]);\n }\n groups.push(out);\n }\n var commonGroup = [\"toImage\"];\n if (context.showEditInChartStudio) commonGroup.push(\"editInChartStudio\");\n else if (context.showSendToCloud) commonGroup.push(\"sendDataToCloud\");\n addGroup(commonGroup);\n var zoomGroup = [];\n var hoverGroup = [];\n var resetGroup = [];\n var dragModeGroup = [];\n if ((hasCartesian || hasPie || hasFunnelarea || hasTernary) + hasGeo + hasGL3D + hasMapbox + hasMap + hasPolar + hasSmith > 1) {\n hoverGroup = [\"toggleHover\"];\n resetGroup = [\"resetViews\"];\n } else if (hasGeo) {\n zoomGroup = [\"zoomInGeo\", \"zoomOutGeo\"];\n hoverGroup = [\"hoverClosestGeo\"];\n resetGroup = [\"resetGeo\"];\n } else if (hasGL3D) {\n hoverGroup = [\"hoverClosest3d\"];\n resetGroup = [\"resetCameraDefault3d\", \"resetCameraLastSave3d\"];\n } else if (hasMapbox) {\n zoomGroup = [\"zoomInMapbox\", \"zoomOutMapbox\"];\n hoverGroup = [\"toggleHover\"];\n resetGroup = [\"resetViewMapbox\"];\n } else if (hasMap) {\n zoomGroup = [\"zoomInMap\", \"zoomOutMap\"];\n hoverGroup = [\"toggleHover\"];\n resetGroup = [\"resetViewMap\"];\n } else if (hasPie) {\n hoverGroup = [\"hoverClosestPie\"];\n } else if (hasSankey) {\n hoverGroup = [\"hoverClosestCartesian\", \"hoverCompareCartesian\"];\n resetGroup = [\"resetViewSankey\"];\n } else {\n hoverGroup = [\"toggleHover\"];\n }\n if (hasCartesian) {\n hoverGroup.push(\"toggleSpikelines\", \"hoverClosestCartesian\", \"hoverCompareCartesian\");\n }\n if (hasNoHover(fullData) || hasUnifiedHoverLabel) {\n hoverGroup = [];\n }\n if (hasCartesian && !allAxesFixed) {\n zoomGroup = [\"zoomIn2d\", \"zoomOut2d\", \"autoScale2d\"];\n if (resetGroup[0] !== \"resetViews\") resetGroup = [\"resetScale2d\"];\n }\n if (hasGL3D) {\n dragModeGroup = [\"zoom3d\", \"pan3d\", \"orbitRotation\", \"tableRotation\"];\n } else if (hasCartesian && !allAxesFixed || hasTernary) {\n dragModeGroup = [\"zoom2d\", \"pan2d\"];\n } else if (hasMapbox || hasMap || hasGeo) {\n dragModeGroup = [\"pan2d\"];\n } else if (hasPolar) {\n dragModeGroup = [\"zoom2d\"];\n }\n if (isSelectable(fullData)) {\n dragModeGroup.push(\"select2d\", \"lasso2d\");\n }\n var enabledHoverGroup = [];\n var enableHover = function(a) {\n if (enabledHoverGroup.indexOf(a) !== -1) return;\n if (hoverGroup.indexOf(a) !== -1) {\n enabledHoverGroup.push(a);\n }\n };\n if (Array.isArray(buttonsToAdd)) {\n var newList = [];\n for (var i = 0; i < buttonsToAdd.length; i++) {\n var b = buttonsToAdd[i];\n if (typeof b === \"string\") {\n b = b.toLowerCase();\n if (DRAW_MODES.indexOf(b) !== -1) {\n if (fullLayout._has(\"mapbox\") || fullLayout._has(\"map\") || // draw shapes in paper coordinate (could be improved in future to support data coordinate, when there is no pitch)\n fullLayout._has(\"cartesian\")) {\n dragModeGroup.push(b);\n }\n } else if (b === \"togglespikelines\") {\n enableHover(\"toggleSpikelines\");\n } else if (b === \"togglehover\") {\n enableHover(\"toggleHover\");\n } else if (b === \"hovercompare\") {\n enableHover(\"hoverCompareCartesian\");\n } else if (b === \"hoverclosest\") {\n enableHover(\"hoverClosestCartesian\");\n enableHover(\"hoverClosestGeo\");\n enableHover(\"hoverClosest3d\");\n enableHover(\"hoverClosestPie\");\n } else if (b === \"v1hovermode\") {\n enableHover(\"hoverClosestCartesian\");\n enableHover(\"hoverCompareCartesian\");\n enableHover(\"hoverClosestGeo\");\n enableHover(\"hoverClosest3d\");\n enableHover(\"hoverClosestPie\");\n }\n } else newList.push(b);\n }\n buttonsToAdd = newList;\n }\n addGroup(dragModeGroup);\n addGroup(zoomGroup.concat(resetGroup));\n addGroup(enabledHoverGroup);\n return appendButtonsToGroups(groups, buttonsToAdd);\n }\n function areAllAxesFixed(fullLayout) {\n var axList = axisIds.list({ _fullLayout: fullLayout }, null, true);\n for (var i = 0; i < axList.length; i++) {\n if (!axList[i].fixedrange) {\n return false;\n }\n }\n return true;\n }\n function isSelectable(fullData) {\n var selectable = false;\n for (var i = 0; i < fullData.length; i++) {\n if (selectable) break;\n var trace = fullData[i];\n if (!trace._module || !trace._module.selectPoints) continue;\n if (Registry.traceIs(trace, \"scatter-like\")) {\n if (scatterSubTypes.hasMarkers(trace) || scatterSubTypes.hasText(trace)) {\n selectable = true;\n }\n } else if (Registry.traceIs(trace, \"box-violin\")) {\n if (trace.boxpoints === \"all\" || trace.points === \"all\") {\n selectable = true;\n }\n } else {\n selectable = true;\n }\n }\n return selectable;\n }\n function hasNoHover(fullData) {\n for (var i = 0; i < fullData.length; i++) {\n if (!Registry.traceIs(fullData[i], \"noHover\")) return false;\n }\n return true;\n }\n function appendButtonsToGroups(groups, buttons) {\n if (buttons.length) {\n if (Array.isArray(buttons[0])) {\n for (var i = 0; i < buttons.length; i++) {\n groups.push(buttons[i]);\n }\n } else groups.push(buttons);\n }\n return groups;\n }\n function fillCustomButton(originalModeBarButtons) {\n var customButtons = extendDeep([], originalModeBarButtons);\n for (var i = 0; i < customButtons.length; i++) {\n var buttonGroup = customButtons[i];\n for (var j = 0; j < buttonGroup.length; j++) {\n var button = buttonGroup[j];\n if (typeof button === \"string\") {\n if (modeBarButtons[button] !== void 0) {\n customButtons[i][j] = modeBarButtons[button];\n } else {\n throw new Error([\n \"*modeBarButtons* configuration options\",\n \"invalid button name\"\n ].join(\" \"));\n }\n }\n }\n }\n return customButtons;\n }\n }\n });\n\n // src/components/modebar/index.js\n var require_modebar2 = __commonJS({\n \"src/components/modebar/index.js\"(exports, module) {\n \"use strict\";\n module.exports = {\n moduleType: \"component\",\n name: \"modebar\",\n layoutAttributes: require_attributes10(),\n supplyLayoutDefaults: require_defaults5(),\n manage: require_manage()\n };\n }\n });\n\n // src/plots/cartesian/scale_zoom.js\n var require_scale_zoom = __commonJS({\n \"src/plots/cartesian/scale_zoom.js\"(exports, module) {\n \"use strict\";\n var FROM_BL = require_alignment().FROM_BL;\n module.exports = function scaleZoom(ax, factor, centerFraction) {\n if (centerFraction === void 0) {\n centerFraction = FROM_BL[ax.constraintoward || \"center\"];\n }\n var rangeLinear = [ax.r2l(ax.range[0]), ax.r2l(ax.range[1])];\n var center = rangeLinear[0] + (rangeLinear[1] - rangeLinear[0]) * centerFraction;\n ax.range = ax._input.range = [\n ax.l2r(center + (rangeLinear[0] - center) * factor),\n ax.l2r(center + (rangeLinear[1] - center) * factor)\n ];\n ax.setScale();\n };\n }\n });\n\n // src/plots/cartesian/constraints.js\n var require_constraints = __commonJS({\n \"src/plots/cartesian/constraints.js\"(exports) {\n \"use strict\";\n var Lib = require_lib();\n var autorange = require_autorange();\n var id2name = require_axis_ids().id2name;\n var layoutAttributes = require_layout_attributes4();\n var scaleZoom = require_scale_zoom();\n var setConvert = require_set_convert();\n var ALMOST_EQUAL = require_numerical().ALMOST_EQUAL;\n var FROM_BL = require_alignment().FROM_BL;\n exports.handleDefaults = function(layoutIn, layoutOut, opts) {\n var axIds = opts.axIds;\n var axHasImage = opts.axHasImage;\n var constraintGroups = layoutOut._axisConstraintGroups = [];\n var matchGroups = layoutOut._axisMatchGroups = [];\n var i, group, axId, axName, axIn, axOut, attr, val;\n for (i = 0; i < axIds.length; i++) {\n axName = id2name(axIds[i]);\n axIn = layoutIn[axName];\n axOut = layoutOut[axName];\n handleOneAxDefaults(axIn, axOut, {\n axIds,\n layoutOut,\n hasImage: axHasImage[axName]\n });\n }\n function stash(groups, stashAttr) {\n for (i = 0; i < groups.length; i++) {\n group = groups[i];\n for (axId in group) {\n layoutOut[id2name(axId)][stashAttr] = group;\n }\n }\n }\n stash(matchGroups, \"_matchGroup\");\n for (i = 0; i < constraintGroups.length; i++) {\n group = constraintGroups[i];\n for (axId in group) {\n axOut = layoutOut[id2name(axId)];\n if (axOut.fixedrange) {\n for (var axId2 in group) {\n var axName2 = id2name(axId2);\n if ((layoutIn[axName2] || {}).fixedrange === false) {\n Lib.warn(\n \"fixedrange was specified as false for axis \" + axName2 + \" but was overridden because another axis in its constraint group has fixedrange true\"\n );\n }\n layoutOut[axName2].fixedrange = true;\n }\n break;\n }\n }\n }\n i = 0;\n while (i < constraintGroups.length) {\n group = constraintGroups[i];\n for (axId in group) {\n axOut = layoutOut[id2name(axId)];\n if (axOut._matchGroup && Object.keys(axOut._matchGroup).length === Object.keys(group).length) {\n constraintGroups.splice(i, 1);\n i--;\n }\n break;\n }\n i++;\n }\n stash(constraintGroups, \"_constraintGroup\");\n var matchAttrs = [\n \"constrain\",\n \"range\",\n \"autorange\",\n \"rangemode\",\n \"rangebreaks\",\n \"categoryorder\",\n \"categoryarray\"\n ];\n var hasRange = false;\n var hasDayOfWeekBreaks = false;\n function setAttrVal() {\n val = axOut[attr];\n if (attr === \"rangebreaks\") {\n hasDayOfWeekBreaks = axOut._hasDayOfWeekBreaks;\n }\n }\n for (i = 0; i < matchGroups.length; i++) {\n group = matchGroups[i];\n for (var j = 0; j < matchAttrs.length; j++) {\n attr = matchAttrs[j];\n val = null;\n var baseAx;\n for (axId in group) {\n axName = id2name(axId);\n axIn = layoutIn[axName];\n axOut = layoutOut[axName];\n if (!(attr in axOut)) {\n continue;\n }\n if (!axOut.matches) {\n baseAx = axOut;\n if (attr in axIn) {\n setAttrVal();\n break;\n }\n }\n if (val === null && attr in axIn) {\n setAttrVal();\n }\n }\n if (attr === \"range\" && val && axIn.range && axIn.range.length === 2 && axIn.range[0] !== null && axIn.range[1] !== null) {\n hasRange = true;\n }\n if (attr === \"autorange\" && val === null && hasRange) {\n val = false;\n }\n if (val === null && attr in baseAx) {\n val = baseAx[attr];\n }\n if (val !== null) {\n for (axId in group) {\n axOut = layoutOut[id2name(axId)];\n axOut[attr] = attr === \"range\" ? val.slice() : val;\n if (attr === \"rangebreaks\") {\n axOut._hasDayOfWeekBreaks = hasDayOfWeekBreaks;\n setConvert(axOut, layoutOut);\n }\n }\n }\n }\n }\n };\n function handleOneAxDefaults(axIn, axOut, opts) {\n var axIds = opts.axIds;\n var layoutOut = opts.layoutOut;\n var hasImage = opts.hasImage;\n var constraintGroups = layoutOut._axisConstraintGroups;\n var matchGroups = layoutOut._axisMatchGroups;\n var axId = axOut._id;\n var axLetter = axId.charAt(0);\n var splomStash = ((layoutOut._splomAxes || {})[axLetter] || {})[axId] || {};\n var thisID = axOut._id;\n var isX = thisID.charAt(0) === \"x\";\n axOut._matchGroup = null;\n axOut._constraintGroup = null;\n function coerce(attr, dflt) {\n return Lib.coerce(axIn, axOut, layoutAttributes, attr, dflt);\n }\n coerce(\"constrain\", hasImage ? \"domain\" : \"range\");\n Lib.coerce(axIn, axOut, {\n constraintoward: {\n valType: \"enumerated\",\n values: isX ? [\"left\", \"center\", \"right\"] : [\"bottom\", \"middle\", \"top\"],\n dflt: isX ? \"center\" : \"middle\"\n }\n }, \"constraintoward\");\n var thisType = axOut.type;\n var i, idi;\n var linkableAxes = [];\n for (i = 0; i < axIds.length; i++) {\n idi = axIds[i];\n if (idi === thisID) continue;\n var axi = layoutOut[id2name(idi)];\n if (axi.type === thisType) {\n linkableAxes.push(idi);\n }\n }\n var thisGroup = getConstraintGroup(constraintGroups, thisID);\n if (thisGroup) {\n var linkableAxesNoLoops = [];\n for (i = 0; i < linkableAxes.length; i++) {\n idi = linkableAxes[i];\n if (!thisGroup[idi]) linkableAxesNoLoops.push(idi);\n }\n linkableAxes = linkableAxesNoLoops;\n }\n var canLink = linkableAxes.length;\n var matches, scaleanchor;\n if (canLink && (axIn.matches || splomStash.matches)) {\n matches = Lib.coerce(axIn, axOut, {\n matches: {\n valType: \"enumerated\",\n values: linkableAxes,\n dflt: linkableAxes.indexOf(splomStash.matches) !== -1 ? splomStash.matches : void 0\n }\n }, \"matches\");\n }\n var scaleanchorDflt = hasImage && !isX ? axOut.anchor : void 0;\n if (canLink && !matches && (axIn.scaleanchor || scaleanchorDflt)) {\n scaleanchor = Lib.coerce(axIn, axOut, {\n scaleanchor: {\n valType: \"enumerated\",\n values: linkableAxes.concat([false])\n }\n }, \"scaleanchor\", scaleanchorDflt);\n }\n if (matches) {\n axOut._matchGroup = updateConstraintGroups(matchGroups, thisID, matches, 1);\n var matchedAx = layoutOut[id2name(matches)];\n var matchRatio = extent(layoutOut, axOut) / extent(layoutOut, matchedAx);\n if (isX !== (matches.charAt(0) === \"x\")) {\n matchRatio = (isX ? \"x\" : \"y\") + matchRatio;\n }\n updateConstraintGroups(constraintGroups, thisID, matches, matchRatio);\n } else if (axIn.matches && axIds.indexOf(axIn.matches) !== -1) {\n Lib.warn(\"ignored \" + axOut._name + '.matches: \"' + axIn.matches + '\" to avoid an infinite loop');\n }\n if (scaleanchor) {\n var scaleratio = coerce(\"scaleratio\");\n if (!scaleratio) scaleratio = axOut.scaleratio = 1;\n updateConstraintGroups(constraintGroups, thisID, scaleanchor, scaleratio);\n } else if (axIn.scaleanchor && axIds.indexOf(axIn.scaleanchor) !== -1) {\n Lib.warn(\"ignored \" + axOut._name + '.scaleanchor: \"' + axIn.scaleanchor + '\" to avoid either an infinite loop and possibly inconsistent scaleratios, or because this axis declares a *matches* constraint.');\n }\n }\n function extent(layoutOut, ax) {\n var domain = ax.domain;\n if (!domain) {\n domain = layoutOut[id2name(ax.overlaying)].domain;\n }\n return domain[1] - domain[0];\n }\n function getConstraintGroup(groups, thisID) {\n for (var i = 0; i < groups.length; i++) {\n if (groups[i][thisID]) {\n return groups[i];\n }\n }\n return null;\n }\n function updateConstraintGroups(constraintGroups, thisID, thatID, scaleratio) {\n var i, j, groupi, keyj, thisGroupIndex;\n var thisGroup = getConstraintGroup(constraintGroups, thisID);\n if (thisGroup === null) {\n thisGroup = {};\n thisGroup[thisID] = 1;\n thisGroupIndex = constraintGroups.length;\n constraintGroups.push(thisGroup);\n } else {\n thisGroupIndex = constraintGroups.indexOf(thisGroup);\n }\n var thisGroupKeys = Object.keys(thisGroup);\n for (i = 0; i < constraintGroups.length; i++) {\n groupi = constraintGroups[i];\n if (i !== thisGroupIndex && groupi[thatID]) {\n var baseScale = groupi[thatID];\n for (j = 0; j < thisGroupKeys.length; j++) {\n keyj = thisGroupKeys[j];\n groupi[keyj] = multiplyScales(baseScale, multiplyScales(scaleratio, thisGroup[keyj]));\n }\n constraintGroups.splice(thisGroupIndex, 1);\n return;\n }\n }\n if (scaleratio !== 1) {\n for (j = 0; j < thisGroupKeys.length; j++) {\n var key = thisGroupKeys[j];\n thisGroup[key] = multiplyScales(scaleratio, thisGroup[key]);\n }\n }\n thisGroup[thatID] = 1;\n }\n function multiplyScales(a, b) {\n var aPrefix = \"\";\n var bPrefix = \"\";\n var aLen, bLen;\n if (typeof a === \"string\") {\n aPrefix = a.match(/^[xy]*/)[0];\n aLen = aPrefix.length;\n a = +a.substr(aLen);\n }\n if (typeof b === \"string\") {\n bPrefix = b.match(/^[xy]*/)[0];\n bLen = bPrefix.length;\n b = +b.substr(bLen);\n }\n var c = a * b;\n if (!aLen && !bLen) {\n return c;\n }\n if (!aLen || !bLen || aPrefix.charAt(0) === bPrefix.charAt(0)) {\n return aPrefix + bPrefix + a * b;\n }\n if (aLen === bLen) {\n return c;\n }\n return (aLen > bLen ? aPrefix.substr(bLen) : bPrefix.substr(aLen)) + c;\n }\n function finalRatios(group, fullLayout) {\n var size = fullLayout._size;\n var yRatio = size.h / size.w;\n var out = {};\n var keys = Object.keys(group);\n for (var i = 0; i < keys.length; i++) {\n var key = keys[i];\n var val = group[key];\n if (typeof val === \"string\") {\n var prefix = val.match(/^[xy]*/)[0];\n var pLen = prefix.length;\n val = +val.substr(pLen);\n var mult = prefix.charAt(0) === \"y\" ? yRatio : 1 / yRatio;\n for (var j = 0; j < pLen; j++) {\n val *= mult;\n }\n }\n out[key] = val;\n }\n return out;\n }\n exports.enforce = function enforce(gd) {\n var fullLayout = gd._fullLayout;\n var constraintGroups = fullLayout._axisConstraintGroups || [];\n var i, j, group, axisID, ax, normScale, mode, factor;\n for (i = 0; i < constraintGroups.length; i++) {\n group = finalRatios(constraintGroups[i], fullLayout);\n var axisIDs = Object.keys(group);\n var minScale = Infinity;\n var maxScale = 0;\n var matchScale = Infinity;\n var normScales = {};\n var axes = {};\n var hasAnyDomainConstraint = false;\n for (j = 0; j < axisIDs.length; j++) {\n axisID = axisIDs[j];\n axes[axisID] = ax = fullLayout[id2name(axisID)];\n if (ax._inputDomain) ax.domain = ax._inputDomain.slice();\n else ax._inputDomain = ax.domain.slice();\n if (!ax._inputRange) ax._inputRange = ax.range.slice();\n ax.setScale();\n normScales[axisID] = normScale = Math.abs(ax._m) / group[axisID];\n minScale = Math.min(minScale, normScale);\n if (ax.constrain === \"domain\" || !ax._constraintShrinkable) {\n matchScale = Math.min(matchScale, normScale);\n }\n delete ax._constraintShrinkable;\n maxScale = Math.max(maxScale, normScale);\n if (ax.constrain === \"domain\") hasAnyDomainConstraint = true;\n }\n if (minScale > ALMOST_EQUAL * maxScale && !hasAnyDomainConstraint) continue;\n for (j = 0; j < axisIDs.length; j++) {\n axisID = axisIDs[j];\n normScale = normScales[axisID];\n ax = axes[axisID];\n mode = ax.constrain;\n if (normScale !== matchScale || mode === \"domain\") {\n factor = normScale / matchScale;\n if (mode === \"range\") {\n scaleZoom(ax, factor);\n } else {\n var inputDomain = ax._inputDomain;\n var domainShrunk = (ax.domain[1] - ax.domain[0]) / (inputDomain[1] - inputDomain[0]);\n var rangeShrunk = (ax.r2l(ax.range[1]) - ax.r2l(ax.range[0])) / (ax.r2l(ax._inputRange[1]) - ax.r2l(ax._inputRange[0]));\n factor /= domainShrunk;\n if (factor * rangeShrunk < 1) {\n ax.domain = ax._input.domain = inputDomain.slice();\n scaleZoom(ax, factor);\n continue;\n }\n if (rangeShrunk < 1) {\n ax.range = ax._input.range = ax._inputRange.slice();\n factor *= rangeShrunk;\n }\n if (ax.autorange) {\n var rl0 = ax.r2l(ax.range[0]);\n var rl1 = ax.r2l(ax.range[1]);\n var rangeCenter = (rl0 + rl1) / 2;\n var rangeMin = rangeCenter;\n var rangeMax = rangeCenter;\n var halfRange = Math.abs(rl1 - rangeCenter);\n var outerMin = rangeCenter - halfRange * factor * 1.0001;\n var outerMax = rangeCenter + halfRange * factor * 1.0001;\n var getPadMin = autorange.makePadFn(fullLayout, ax, 0);\n var getPadMax = autorange.makePadFn(fullLayout, ax, 1);\n updateDomain(ax, factor);\n var m = Math.abs(ax._m);\n var extremes = autorange.concatExtremes(gd, ax);\n var minArray = extremes.min;\n var maxArray = extremes.max;\n var newVal;\n var k;\n for (k = 0; k < minArray.length; k++) {\n newVal = minArray[k].val - getPadMin(minArray[k]) / m;\n if (newVal > outerMin && newVal < rangeMin) {\n rangeMin = newVal;\n }\n }\n for (k = 0; k < maxArray.length; k++) {\n newVal = maxArray[k].val + getPadMax(maxArray[k]) / m;\n if (newVal < outerMax && newVal > rangeMax) {\n rangeMax = newVal;\n }\n }\n var domainExpand = (rangeMax - rangeMin) / (2 * halfRange);\n factor /= domainExpand;\n rangeMin = ax.l2r(rangeMin);\n rangeMax = ax.l2r(rangeMax);\n ax.range = ax._input.range = rl0 < rl1 ? [rangeMin, rangeMax] : [rangeMax, rangeMin];\n }\n updateDomain(ax, factor);\n }\n }\n }\n }\n };\n exports.getAxisGroup = function getAxisGroup(fullLayout, axId) {\n var matchGroups = fullLayout._axisMatchGroups;\n for (var i = 0; i < matchGroups.length; i++) {\n var group = matchGroups[i];\n if (group[axId]) return \"g\" + i;\n }\n return axId;\n };\n exports.clean = function clean(gd, ax) {\n if (ax._inputDomain) {\n var isConstrained = false;\n var axId = ax._id;\n var constraintGroups = gd._fullLayout._axisConstraintGroups;\n for (var j = 0; j < constraintGroups.length; j++) {\n if (constraintGroups[j][axId]) {\n isConstrained = true;\n break;\n }\n }\n if (!isConstrained || ax.constrain !== \"domain\") {\n ax._input.domain = ax.domain = ax._inputDomain;\n delete ax._inputDomain;\n }\n }\n };\n function updateDomain(ax, factor) {\n var inputDomain = ax._inputDomain;\n var centerFraction = FROM_BL[ax.constraintoward];\n var center = inputDomain[0] + (inputDomain[1] - inputDomain[0]) * centerFraction;\n ax.domain = ax._input.domain = [\n center + (inputDomain[0] - center) / factor,\n center + (inputDomain[1] - center) / factor\n ];\n ax.setScale();\n }\n }\n });\n\n // src/plot_api/subroutines.js\n var require_subroutines = __commonJS({\n \"src/plot_api/subroutines.js\"(exports) {\n \"use strict\";\n var d3 = require_d3();\n var Registry = require_registry();\n var Plots = require_plots();\n var Lib = require_lib();\n var svgTextUtils = require_svg_text_utils();\n var clearGlCanvases = require_clear_gl_canvases();\n var Color = require_color();\n var Drawing = require_drawing();\n var Titles = require_titles();\n var ModeBar = require_modebar2();\n var Axes = require_axes();\n var alignmentConstants = require_alignment();\n var axisConstraints = require_constraints();\n var enforceAxisConstraints = axisConstraints.enforce;\n var cleanAxisConstraints = axisConstraints.clean;\n var doAutoRange = require_autorange().doAutoRange;\n var SVG_TEXT_ANCHOR_START = \"start\";\n var SVG_TEXT_ANCHOR_MIDDLE = \"middle\";\n var SVG_TEXT_ANCHOR_END = \"end\";\n var zindexSeparator = require_constants2().zindexSeparator;\n exports.layoutStyles = function(gd) {\n return Lib.syncOrAsync([Plots.doAutoMargin, lsInner], gd);\n };\n function overlappingDomain(xDomain, yDomain, domains) {\n for (var i = 0; i < domains.length; i++) {\n var existingX = domains[i][0];\n var existingY = domains[i][1];\n if (existingX[0] >= xDomain[1] || existingX[1] <= xDomain[0]) {\n continue;\n }\n if (existingY[0] < yDomain[1] && existingY[1] > yDomain[0]) {\n return true;\n }\n }\n return false;\n }\n function lsInner(gd) {\n var fullLayout = gd._fullLayout;\n var gs = fullLayout._size;\n var pad = gs.p;\n var axList = Axes.list(gd, \"\", true);\n var i, subplot, plotinfo, ax, xa, ya;\n fullLayout._paperdiv.style({\n width: gd._context.responsive && fullLayout.autosize && !gd._context._hasZeroWidth && !gd.layout.width ? \"100%\" : fullLayout.width + \"px\",\n height: gd._context.responsive && fullLayout.autosize && !gd._context._hasZeroHeight && !gd.layout.height ? \"100%\" : fullLayout.height + \"px\"\n }).selectAll(\".main-svg\").call(Drawing.setSize, fullLayout.width, fullLayout.height);\n gd._context.setBackground(gd, fullLayout.paper_bgcolor);\n exports.drawMainTitle(gd);\n ModeBar.manage(gd);\n if (!fullLayout._has(\"cartesian\")) {\n return Plots.previousPromises(gd);\n }\n function getLinePosition(ax2, counterAx2, side) {\n var lwHalf = ax2._lw / 2;\n if (ax2._id.charAt(0) === \"x\") {\n if (!counterAx2) return gs.t + gs.h * (1 - (ax2.position || 0)) + lwHalf % 1;\n else if (side === \"top\") return counterAx2._offset - pad - lwHalf;\n return counterAx2._offset + counterAx2._length + pad + lwHalf;\n }\n if (!counterAx2) return gs.l + gs.w * (ax2.position || 0) + lwHalf % 1;\n else if (side === \"right\") return counterAx2._offset + counterAx2._length + pad + lwHalf;\n return counterAx2._offset - pad - lwHalf;\n }\n for (i = 0; i < axList.length; i++) {\n ax = axList[i];\n var counterAx = ax._anchorAxis;\n ax._linepositions = {};\n ax._lw = Drawing.crispRound(gd, ax.linewidth, 1);\n ax._mainLinePosition = getLinePosition(ax, counterAx, ax.side);\n ax._mainMirrorPosition = ax.mirror && counterAx ? getLinePosition(\n ax,\n counterAx,\n alignmentConstants.OPPOSITE_SIDE[ax.side]\n ) : null;\n }\n var lowerBackgroundIDs = [];\n var backgroundIds = [];\n var lowerDomains = [];\n var noNeedForBg = Color.opacity(fullLayout.paper_bgcolor) === 1 && Color.opacity(fullLayout.plot_bgcolor) === 1 && fullLayout.paper_bgcolor === fullLayout.plot_bgcolor;\n for (subplot in fullLayout._plots) {\n plotinfo = fullLayout._plots[subplot];\n if (plotinfo.mainplot) {\n if (plotinfo.bg) {\n plotinfo.bg.remove();\n }\n plotinfo.bg = void 0;\n } else {\n var xDomain = plotinfo.xaxis.domain;\n var yDomain = plotinfo.yaxis.domain;\n var plotgroup = plotinfo.plotgroup;\n if (overlappingDomain(xDomain, yDomain, lowerDomains) && subplot.indexOf(zindexSeparator) === -1) {\n var pgNode = plotgroup.node();\n var plotgroupBg = plotinfo.bg = Lib.ensureSingle(plotgroup, \"rect\", \"bg\");\n pgNode.insertBefore(plotgroupBg.node(), pgNode.childNodes[0]);\n backgroundIds.push(subplot);\n } else {\n plotgroup.select(\"rect.bg\").remove();\n lowerDomains.push([xDomain, yDomain]);\n if (!noNeedForBg) {\n lowerBackgroundIDs.push(subplot);\n backgroundIds.push(subplot);\n }\n }\n }\n }\n var lowerBackgrounds = fullLayout._bgLayer.selectAll(\".bg\").data(lowerBackgroundIDs);\n lowerBackgrounds.enter().append(\"rect\").classed(\"bg\", true);\n lowerBackgrounds.exit().remove();\n lowerBackgrounds.each(function(subplot2) {\n fullLayout._plots[subplot2].bg = d3.select(this);\n });\n for (i = 0; i < backgroundIds.length; i++) {\n plotinfo = fullLayout._plots[backgroundIds[i]];\n xa = plotinfo.xaxis;\n ya = plotinfo.yaxis;\n if (plotinfo.bg && xa._offset !== void 0 && ya._offset !== void 0) {\n plotinfo.bg.call(\n Drawing.setRect,\n xa._offset - pad,\n ya._offset - pad,\n xa._length + 2 * pad,\n ya._length + 2 * pad\n ).call(Color.fill, fullLayout.plot_bgcolor).style(\"stroke-width\", 0);\n }\n }\n if (!fullLayout._hasOnlyLargeSploms) {\n for (subplot in fullLayout._plots) {\n plotinfo = fullLayout._plots[subplot];\n xa = plotinfo.xaxis;\n ya = plotinfo.yaxis;\n var clipId = plotinfo.clipId = \"clip\" + fullLayout._uid + subplot + \"plot\";\n var plotClip = Lib.ensureSingleById(fullLayout._clips, \"clipPath\", clipId, function(s) {\n s.classed(\"plotclip\", true).append(\"rect\");\n });\n plotinfo.clipRect = plotClip.select(\"rect\").attr({\n width: xa._length,\n height: ya._length\n });\n Drawing.setTranslate(plotinfo.plot, xa._offset, ya._offset);\n var plotClipId;\n var layerClipId;\n if (plotinfo._hasClipOnAxisFalse) {\n plotClipId = null;\n layerClipId = clipId;\n } else {\n plotClipId = clipId;\n layerClipId = null;\n }\n Drawing.setClipUrl(plotinfo.plot, plotClipId, gd);\n plotinfo.layerClipId = layerClipId;\n }\n }\n var xLinesXLeft, xLinesXRight, xLinesYBottom, xLinesYTop, leftYLineWidth, rightYLineWidth;\n var yLinesYBottom, yLinesYTop, yLinesXLeft, yLinesXRight, connectYBottom, connectYTop;\n var extraSubplot;\n function xLinePath(y) {\n return \"M\" + xLinesXLeft + \",\" + y + \"H\" + xLinesXRight;\n }\n function xLinePathFree(y) {\n return \"M\" + xa._offset + \",\" + y + \"h\" + xa._length;\n }\n function yLinePath(x) {\n return \"M\" + x + \",\" + yLinesYTop + \"V\" + yLinesYBottom;\n }\n function yLinePathFree(x) {\n if (ya._shift !== void 0) {\n x += ya._shift;\n }\n return \"M\" + x + \",\" + ya._offset + \"v\" + ya._length;\n }\n function mainPath(ax2, pathFn, pathFnFree) {\n if (!ax2.showline || subplot !== ax2._mainSubplot) return \"\";\n if (!ax2._anchorAxis) return pathFnFree(ax2._mainLinePosition);\n var out = pathFn(ax2._mainLinePosition);\n if (ax2.mirror) out += pathFn(ax2._mainMirrorPosition);\n return out;\n }\n for (subplot in fullLayout._plots) {\n plotinfo = fullLayout._plots[subplot];\n xa = plotinfo.xaxis;\n ya = plotinfo.yaxis;\n var xPath = \"M0,0\";\n if (shouldShowLinesOrTicks(xa, subplot)) {\n leftYLineWidth = findCounterAxisLineWidth(xa, \"left\", ya, axList);\n xLinesXLeft = xa._offset - (leftYLineWidth ? pad + leftYLineWidth : 0);\n rightYLineWidth = findCounterAxisLineWidth(xa, \"right\", ya, axList);\n xLinesXRight = xa._offset + xa._length + (rightYLineWidth ? pad + rightYLineWidth : 0);\n xLinesYBottom = getLinePosition(xa, ya, \"bottom\");\n xLinesYTop = getLinePosition(xa, ya, \"top\");\n extraSubplot = !xa._anchorAxis || subplot !== xa._mainSubplot;\n if (extraSubplot && (xa.mirror === \"allticks\" || xa.mirror === \"all\")) {\n xa._linepositions[subplot] = [xLinesYBottom, xLinesYTop];\n }\n xPath = mainPath(xa, xLinePath, xLinePathFree);\n if (extraSubplot && xa.showline && (xa.mirror === \"all\" || xa.mirror === \"allticks\")) {\n xPath += xLinePath(xLinesYBottom) + xLinePath(xLinesYTop);\n }\n plotinfo.xlines.style(\"stroke-width\", xa._lw + \"px\").call(Color.stroke, xa.showline ? xa.linecolor : \"rgba(0,0,0,0)\");\n }\n plotinfo.xlines.attr(\"d\", xPath);\n var yPath = \"M0,0\";\n if (shouldShowLinesOrTicks(ya, subplot)) {\n connectYBottom = findCounterAxisLineWidth(ya, \"bottom\", xa, axList);\n yLinesYBottom = ya._offset + ya._length + (connectYBottom ? pad : 0);\n connectYTop = findCounterAxisLineWidth(ya, \"top\", xa, axList);\n yLinesYTop = ya._offset - (connectYTop ? pad : 0);\n yLinesXLeft = getLinePosition(ya, xa, \"left\");\n yLinesXRight = getLinePosition(ya, xa, \"right\");\n extraSubplot = !ya._anchorAxis || subplot !== ya._mainSubplot;\n if (extraSubplot && (ya.mirror === \"allticks\" || ya.mirror === \"all\")) {\n ya._linepositions[subplot] = [yLinesXLeft, yLinesXRight];\n }\n yPath = mainPath(ya, yLinePath, yLinePathFree);\n if (extraSubplot && ya.showline && (ya.mirror === \"all\" || ya.mirror === \"allticks\")) {\n yPath += yLinePath(yLinesXLeft) + yLinePath(yLinesXRight);\n }\n plotinfo.ylines.style(\"stroke-width\", ya._lw + \"px\").call(Color.stroke, ya.showline ? ya.linecolor : \"rgba(0,0,0,0)\");\n }\n plotinfo.ylines.attr(\"d\", yPath);\n }\n Axes.makeClipPaths(gd);\n return Plots.previousPromises(gd);\n }\n function shouldShowLinesOrTicks(ax, subplot) {\n return (ax.ticks || ax.showline) && (subplot === ax._mainSubplot || ax.mirror === \"all\" || ax.mirror === \"allticks\");\n }\n function shouldShowLineThisSide(ax, side, counterAx) {\n if (!counterAx.showline || !counterAx._lw) return false;\n if (counterAx.mirror === \"all\" || counterAx.mirror === \"allticks\") return true;\n var anchorAx = counterAx._anchorAxis;\n if (!anchorAx) return false;\n var sideIndex = alignmentConstants.FROM_BL[side];\n if (counterAx.side === side) {\n return anchorAx.domain[sideIndex] === ax.domain[sideIndex];\n }\n return counterAx.mirror && anchorAx.domain[1 - sideIndex] === ax.domain[1 - sideIndex];\n }\n function findCounterAxisLineWidth(ax, side, counterAx, axList) {\n if (shouldShowLineThisSide(ax, side, counterAx)) {\n return counterAx._lw;\n }\n for (var i = 0; i < axList.length; i++) {\n var axi = axList[i];\n if (axi._mainAxis === counterAx._mainAxis && shouldShowLineThisSide(ax, side, axi)) {\n return axi._lw;\n }\n }\n return 0;\n }\n exports.drawMainTitle = function(gd) {\n var title = gd._fullLayout.title;\n var fullLayout = gd._fullLayout;\n var textAnchor = getMainTitleTextAnchor(fullLayout);\n var dy = getMainTitleDy(fullLayout);\n var y = getMainTitleY(fullLayout, dy);\n var x = getMainTitleX(fullLayout, textAnchor);\n Titles.draw(gd, \"gtitle\", {\n propContainer: fullLayout,\n propName: \"title.text\",\n subtitlePropName: \"title.subtitle.text\",\n placeholder: fullLayout._dfltTitle.plot,\n subtitlePlaceholder: fullLayout._dfltTitle.subtitle,\n attributes: {\n x,\n y,\n \"text-anchor\": textAnchor,\n dy\n }\n });\n if (title.text && title.automargin) {\n var titleObj = d3.selectAll(\".gtitle\");\n var titleHeight = Drawing.bBox(d3.selectAll(\".g-gtitle\").node()).height;\n var pushMargin = needsMarginPush(gd, title, titleHeight);\n if (pushMargin > 0) {\n applyTitleAutoMargin(gd, y, pushMargin, titleHeight);\n titleObj.attr({\n x,\n y,\n \"text-anchor\": textAnchor,\n dy: getMainTitleDyAdj(title.yanchor)\n }).call(svgTextUtils.positionText, x, y);\n var extraLines = (title.text.match(svgTextUtils.BR_TAG_ALL) || []).length;\n if (extraLines) {\n var delta = alignmentConstants.LINE_SPACING * extraLines + alignmentConstants.MID_SHIFT;\n if (title.y === 0) {\n delta = -delta;\n }\n titleObj.selectAll(\".line\").each(function() {\n var newDy = +this.getAttribute(\"dy\").slice(0, -2) - delta + \"em\";\n this.setAttribute(\"dy\", newDy);\n });\n }\n var subtitleObj = d3.selectAll(\".gtitle-subtitle\");\n if (subtitleObj.node()) {\n var titleBB = titleObj.node().getBBox();\n var titleBottom = titleBB.y + titleBB.height;\n var subtitleY = titleBottom + Titles.SUBTITLE_PADDING_EM * title.subtitle.font.size;\n subtitleObj.attr({\n x,\n y: subtitleY,\n \"text-anchor\": textAnchor,\n dy: getMainTitleDyAdj(title.yanchor)\n }).call(svgTextUtils.positionText, x, subtitleY);\n }\n }\n }\n };\n function isOutsideContainer(gd, title, position, y, titleHeight) {\n var plotHeight = title.yref === \"paper\" ? gd._fullLayout._size.h : gd._fullLayout.height;\n var yPosTop = Lib.isTopAnchor(title) ? y : y - titleHeight;\n var yPosRel = position === \"b\" ? plotHeight - yPosTop : yPosTop;\n if (Lib.isTopAnchor(title) && position === \"t\" || Lib.isBottomAnchor(title) && position === \"b\") {\n return false;\n } else {\n return yPosRel < titleHeight;\n }\n }\n function containerPushVal(position, titleY, titleYanchor, height, titleDepth) {\n var push = 0;\n if (titleYanchor === \"middle\") {\n push += titleDepth / 2;\n }\n if (position === \"t\") {\n if (titleYanchor === \"top\") {\n push += titleDepth;\n }\n push += height - titleY * height;\n } else {\n if (titleYanchor === \"bottom\") {\n push += titleDepth;\n }\n push += titleY * height;\n }\n return push;\n }\n function needsMarginPush(gd, title, titleHeight) {\n var titleY = title.y;\n var titleYanchor = title.yanchor;\n var position = titleY > 0.5 ? \"t\" : \"b\";\n var curMargin = gd._fullLayout.margin[position];\n var pushMargin = 0;\n if (title.yref === \"paper\") {\n pushMargin = titleHeight + title.pad.t + title.pad.b;\n } else if (title.yref === \"container\") {\n pushMargin = containerPushVal(position, titleY, titleYanchor, gd._fullLayout.height, titleHeight) + title.pad.t + title.pad.b;\n }\n if (pushMargin > curMargin) {\n return pushMargin;\n }\n return 0;\n }\n function applyTitleAutoMargin(gd, y, pushMargin, titleHeight) {\n var titleID = \"title.automargin\";\n var title = gd._fullLayout.title;\n var position = title.y > 0.5 ? \"t\" : \"b\";\n var push = {\n x: title.x,\n y: title.y,\n t: 0,\n b: 0\n };\n var reservedPush = {};\n if (title.yref === \"paper\" && isOutsideContainer(gd, title, position, y, titleHeight)) {\n push[position] = pushMargin;\n } else if (title.yref === \"container\") {\n reservedPush[position] = pushMargin;\n gd._fullLayout._reservedMargin[titleID] = reservedPush;\n }\n Plots.allowAutoMargin(gd, titleID);\n Plots.autoMargin(gd, titleID, push);\n }\n function getMainTitleX(fullLayout, textAnchor) {\n var title = fullLayout.title;\n var gs = fullLayout._size;\n var hPadShift = 0;\n if (textAnchor === SVG_TEXT_ANCHOR_START) {\n hPadShift = title.pad.l;\n } else if (textAnchor === SVG_TEXT_ANCHOR_END) {\n hPadShift = -title.pad.r;\n }\n switch (title.xref) {\n case \"paper\":\n return gs.l + gs.w * title.x + hPadShift;\n case \"container\":\n default:\n return fullLayout.width * title.x + hPadShift;\n }\n }\n function getMainTitleY(fullLayout, dy) {\n var title = fullLayout.title;\n var gs = fullLayout._size;\n var vPadShift = 0;\n if (dy === \"0em\" || !dy) {\n vPadShift = -title.pad.b;\n } else if (dy === alignmentConstants.CAP_SHIFT + \"em\") {\n vPadShift = title.pad.t;\n }\n if (title.y === \"auto\") {\n return gs.t / 2;\n } else {\n switch (title.yref) {\n case \"paper\":\n return gs.t + gs.h - gs.h * title.y + vPadShift;\n case \"container\":\n default:\n return fullLayout.height - fullLayout.height * title.y + vPadShift;\n }\n }\n }\n function getMainTitleDyAdj(yanchor) {\n if (yanchor === \"top\") {\n return alignmentConstants.CAP_SHIFT + 0.3 + \"em\";\n } else if (yanchor === \"bottom\") {\n return \"-0.3em\";\n } else {\n return alignmentConstants.MID_SHIFT + \"em\";\n }\n }\n function getMainTitleTextAnchor(fullLayout) {\n var title = fullLayout.title;\n var textAnchor = SVG_TEXT_ANCHOR_MIDDLE;\n if (Lib.isRightAnchor(title)) {\n textAnchor = SVG_TEXT_ANCHOR_END;\n } else if (Lib.isLeftAnchor(title)) {\n textAnchor = SVG_TEXT_ANCHOR_START;\n }\n return textAnchor;\n }\n function getMainTitleDy(fullLayout) {\n var title = fullLayout.title;\n var dy = \"0em\";\n if (Lib.isTopAnchor(title)) {\n dy = alignmentConstants.CAP_SHIFT + \"em\";\n } else if (Lib.isMiddleAnchor(title)) {\n dy = alignmentConstants.MID_SHIFT + \"em\";\n }\n return dy;\n }\n exports.doTraceStyle = function(gd) {\n var calcdata = gd.calcdata;\n var editStyleCalls = [];\n var i;\n for (i = 0; i < calcdata.length; i++) {\n var cd = calcdata[i];\n var cd0 = cd[0] || {};\n var trace = cd0.trace || {};\n var _module = trace._module || {};\n var arraysToCalcdata = _module.arraysToCalcdata;\n if (arraysToCalcdata) arraysToCalcdata(cd, trace);\n var editStyle = _module.editStyle;\n if (editStyle) editStyleCalls.push({ fn: editStyle, cd0 });\n }\n if (editStyleCalls.length) {\n for (i = 0; i < editStyleCalls.length; i++) {\n var edit = editStyleCalls[i];\n edit.fn(gd, edit.cd0);\n }\n clearGlCanvases(gd);\n exports.redrawReglTraces(gd);\n }\n Plots.style(gd);\n Registry.getComponentMethod(\"legend\", \"draw\")(gd);\n return Plots.previousPromises(gd);\n };\n exports.doColorBars = function(gd) {\n Registry.getComponentMethod(\"colorbar\", \"draw\")(gd);\n return Plots.previousPromises(gd);\n };\n exports.layoutReplot = function(gd) {\n var layout = gd.layout;\n gd.layout = void 0;\n return Registry.call(\"_doPlot\", gd, \"\", layout);\n };\n exports.doLegend = function(gd) {\n Registry.getComponentMethod(\"legend\", \"draw\")(gd);\n return Plots.previousPromises(gd);\n };\n exports.doTicksRelayout = function(gd) {\n Axes.draw(gd, \"redraw\");\n if (gd._fullLayout._hasOnlyLargeSploms) {\n Registry.subplotsRegistry.splom.updateGrid(gd);\n clearGlCanvases(gd);\n exports.redrawReglTraces(gd);\n }\n exports.drawMainTitle(gd);\n return Plots.previousPromises(gd);\n };\n exports.doModeBar = function(gd) {\n var fullLayout = gd._fullLayout;\n ModeBar.manage(gd);\n for (var i = 0; i < fullLayout._basePlotModules.length; i++) {\n var updateFx = fullLayout._basePlotModules[i].updateFx;\n if (updateFx) updateFx(gd);\n }\n return Plots.previousPromises(gd);\n };\n exports.doCamera = function(gd) {\n var fullLayout = gd._fullLayout;\n var sceneIds = fullLayout._subplots.gl3d;\n for (var i = 0; i < sceneIds.length; i++) {\n var sceneLayout = fullLayout[sceneIds[i]];\n var scene = sceneLayout._scene;\n scene.setViewport(sceneLayout);\n }\n };\n exports.drawData = function(gd) {\n var fullLayout = gd._fullLayout;\n clearGlCanvases(gd);\n var basePlotModules = fullLayout._basePlotModules;\n for (var i = 0; i < basePlotModules.length; i++) {\n basePlotModules[i].plot(gd);\n }\n exports.redrawReglTraces(gd);\n Plots.style(gd);\n Registry.getComponentMethod(\"selections\", \"draw\")(gd);\n Registry.getComponentMethod(\"shapes\", \"draw\")(gd);\n Registry.getComponentMethod(\"annotations\", \"draw\")(gd);\n Registry.getComponentMethod(\"images\", \"draw\")(gd);\n fullLayout._replotting = false;\n return Plots.previousPromises(gd);\n };\n exports.redrawReglTraces = function(gd) {\n var fullLayout = gd._fullLayout;\n if (fullLayout._has(\"regl\")) {\n var fullData = gd._fullData;\n var cartesianIds = [];\n var polarIds = [];\n var i, sp;\n if (fullLayout._hasOnlyLargeSploms) {\n fullLayout._splomGrid.draw();\n }\n for (i = 0; i < fullData.length; i++) {\n var trace = fullData[i];\n if (trace.visible === true && trace._length !== 0) {\n if (trace.type === \"splom\") {\n fullLayout._splomScenes[trace.uid].draw();\n } else if (trace.type === \"scattergl\") {\n Lib.pushUnique(cartesianIds, trace.xaxis + trace.yaxis);\n } else if (trace.type === \"scatterpolargl\") {\n Lib.pushUnique(polarIds, trace.subplot);\n }\n }\n }\n for (i = 0; i < cartesianIds.length; i++) {\n sp = fullLayout._plots[cartesianIds[i]];\n if (sp._scene) sp._scene.draw();\n }\n for (i = 0; i < polarIds.length; i++) {\n sp = fullLayout[polarIds[i]]._subplot;\n if (sp._scene) sp._scene.draw();\n }\n }\n };\n exports.doAutoRangeAndConstraints = function(gd) {\n var axList = Axes.list(gd, \"\", true);\n var ax;\n var autoRangeDone = {};\n for (var i = 0; i < axList.length; i++) {\n ax = axList[i];\n if (!autoRangeDone[ax._id]) {\n autoRangeDone[ax._id] = 1;\n cleanAxisConstraints(gd, ax);\n doAutoRange(gd, ax);\n var matchGroup = ax._matchGroup;\n if (matchGroup) {\n for (var id2 in matchGroup) {\n var ax2 = Axes.getFromId(gd, id2);\n doAutoRange(gd, ax2, ax.range);\n autoRangeDone[id2] = 1;\n }\n }\n }\n }\n enforceAxisConstraints(gd);\n };\n exports.finalDraw = function(gd) {\n Registry.getComponentMethod(\"rangeslider\", \"draw\")(gd);\n Registry.getComponentMethod(\"rangeselector\", \"draw\")(gd);\n };\n exports.drawMarginPushers = function(gd) {\n Registry.getComponentMethod(\"legend\", \"draw\")(gd);\n Registry.getComponentMethod(\"rangeselector\", \"draw\")(gd);\n Registry.getComponentMethod(\"sliders\", \"draw\")(gd);\n Registry.getComponentMethod(\"updatemenus\", \"draw\")(gd);\n Registry.getComponentMethod(\"colorbar\", \"draw\")(gd);\n };\n }\n });\n\n // src/components/selections/draw.js\n var require_draw3 = __commonJS({\n \"src/components/selections/draw.js\"(exports, module) {\n \"use strict\";\n var readPaths = require_helpers7().readPaths;\n var displayOutlines = require_display_outlines();\n var clearOutlineControllers = require_handle_outline().clearOutlineControllers;\n var Color = require_color();\n var Drawing = require_drawing();\n var arrayEditor = require_plot_template().arrayEditor;\n var helpers = require_helpers8();\n var getPathString = helpers.getPathString;\n module.exports = {\n draw,\n drawOne,\n activateLastSelection\n };\n function draw(gd) {\n var fullLayout = gd._fullLayout;\n clearOutlineControllers(gd);\n fullLayout._selectionLayer.selectAll(\"path\").remove();\n for (var k in fullLayout._plots) {\n var selectionLayer = fullLayout._plots[k].selectionLayer;\n if (selectionLayer) selectionLayer.selectAll(\"path\").remove();\n }\n for (var i = 0; i < fullLayout.selections.length; i++) {\n drawOne(gd, i);\n }\n }\n function couldHaveActiveSelection(gd) {\n return gd._context.editSelection;\n }\n function drawOne(gd, index) {\n gd._fullLayout._paperdiv.selectAll('.selectionlayer [data-index=\"' + index + '\"]').remove();\n var o = helpers.makeSelectionsOptionsAndPlotinfo(gd, index);\n var options = o.options;\n var plotinfo = o.plotinfo;\n if (!options._input) return;\n drawSelection(gd._fullLayout._selectionLayer);\n function drawSelection(selectionLayer) {\n var d = getPathString(gd, options);\n var attrs = {\n \"data-index\": index,\n \"fill-rule\": \"evenodd\",\n d\n };\n var opacity = options.opacity;\n var fillColor = \"rgba(0,0,0,0)\";\n var lineColor = options.line.color || Color.contrast(gd._fullLayout.plot_bgcolor);\n var lineWidth = options.line.width;\n var lineDash = options.line.dash;\n if (!lineWidth) {\n lineWidth = 5;\n lineDash = \"solid\";\n }\n var isActiveSelection = couldHaveActiveSelection(gd) && gd._fullLayout._activeSelectionIndex === index;\n if (isActiveSelection) {\n fillColor = gd._fullLayout.activeselection.fillcolor;\n opacity = gd._fullLayout.activeselection.opacity;\n }\n var allPaths = [];\n for (var sensory = 1; sensory >= 0; sensory--) {\n var path = selectionLayer.append(\"path\").attr(attrs).style(\"opacity\", sensory ? 0.1 : opacity).call(Color.stroke, lineColor).call(Color.fill, fillColor).call(\n Drawing.dashLine,\n sensory ? \"solid\" : lineDash,\n sensory ? 4 + lineWidth : lineWidth\n );\n setClipPath(path, gd, options);\n if (isActiveSelection) {\n var editHelpers = arrayEditor(gd.layout, \"selections\", options);\n path.style({\n cursor: \"move\"\n });\n var dragOptions = {\n element: path.node(),\n plotinfo,\n gd,\n editHelpers,\n isActiveSelection: true\n // i.e. to enable controllers\n };\n var polygons = readPaths(d, gd);\n displayOutlines(polygons, path, dragOptions);\n } else {\n path.style(\"pointer-events\", sensory ? \"all\" : \"none\");\n }\n allPaths[sensory] = path;\n }\n var forePath = allPaths[0];\n var backPath = allPaths[1];\n backPath.node().addEventListener(\"click\", function() {\n return activateSelection(gd, forePath);\n });\n }\n }\n function setClipPath(selectionPath, gd, selectionOptions) {\n var clipAxes = selectionOptions.xref + selectionOptions.yref;\n Drawing.setClipUrl(\n selectionPath,\n \"clip\" + gd._fullLayout._uid + clipAxes,\n gd\n );\n }\n function activateSelection(gd, path) {\n if (!couldHaveActiveSelection(gd)) return;\n var element = path.node();\n var id = +element.getAttribute(\"data-index\");\n if (id >= 0) {\n if (id === gd._fullLayout._activeSelectionIndex) {\n deactivateSelection(gd);\n return;\n }\n gd._fullLayout._activeSelectionIndex = id;\n gd._fullLayout._deactivateSelection = deactivateSelection;\n draw(gd);\n }\n }\n function activateLastSelection(gd) {\n if (!couldHaveActiveSelection(gd)) return;\n var id = gd._fullLayout.selections.length - 1;\n gd._fullLayout._activeSelectionIndex = id;\n gd._fullLayout._deactivateSelection = deactivateSelection;\n draw(gd);\n }\n function deactivateSelection(gd) {\n if (!couldHaveActiveSelection(gd)) return;\n var id = gd._fullLayout._activeSelectionIndex;\n if (id >= 0) {\n clearOutlineControllers(gd);\n delete gd._fullLayout._activeSelectionIndex;\n draw(gd);\n }\n }\n }\n });\n\n // node_modules/polybooljs/lib/build-log.js\n var require_build_log = __commonJS({\n \"node_modules/polybooljs/lib/build-log.js\"(exports, module) {\n function BuildLog() {\n var my;\n var nextSegmentId = 0;\n var curVert = false;\n function push(type, data) {\n my.list.push({\n type,\n data: data ? JSON.parse(JSON.stringify(data)) : void 0\n });\n return my;\n }\n my = {\n list: [],\n segmentId: function() {\n return nextSegmentId++;\n },\n checkIntersection: function(seg1, seg2) {\n return push(\"check\", { seg1, seg2 });\n },\n segmentChop: function(seg, end) {\n push(\"div_seg\", { seg, pt: end });\n return push(\"chop\", { seg, pt: end });\n },\n statusRemove: function(seg) {\n return push(\"pop_seg\", { seg });\n },\n segmentUpdate: function(seg) {\n return push(\"seg_update\", { seg });\n },\n segmentNew: function(seg, primary) {\n return push(\"new_seg\", { seg, primary });\n },\n segmentRemove: function(seg) {\n return push(\"rem_seg\", { seg });\n },\n tempStatus: function(seg, above, below) {\n return push(\"temp_status\", { seg, above, below });\n },\n rewind: function(seg) {\n return push(\"rewind\", { seg });\n },\n status: function(seg, above, below) {\n return push(\"status\", { seg, above, below });\n },\n vert: function(x) {\n if (x === curVert)\n return my;\n curVert = x;\n return push(\"vert\", { x });\n },\n log: function(data) {\n if (typeof data !== \"string\")\n data = JSON.stringify(data, false, \" \");\n return push(\"log\", { txt: data });\n },\n reset: function() {\n return push(\"reset\");\n },\n selected: function(segs) {\n return push(\"selected\", { segs });\n },\n chainStart: function(seg) {\n return push(\"chain_start\", { seg });\n },\n chainRemoveHead: function(index, pt) {\n return push(\"chain_rem_head\", { index, pt });\n },\n chainRemoveTail: function(index, pt) {\n return push(\"chain_rem_tail\", { index, pt });\n },\n chainNew: function(pt1, pt2) {\n return push(\"chain_new\", { pt1, pt2 });\n },\n chainMatch: function(index) {\n return push(\"chain_match\", { index });\n },\n chainClose: function(index) {\n return push(\"chain_close\", { index });\n },\n chainAddHead: function(index, pt) {\n return push(\"chain_add_head\", { index, pt });\n },\n chainAddTail: function(index, pt) {\n return push(\"chain_add_tail\", { index, pt });\n },\n chainConnect: function(index1, index2) {\n return push(\"chain_con\", { index1, index2 });\n },\n chainReverse: function(index) {\n return push(\"chain_rev\", { index });\n },\n chainJoin: function(index1, index2) {\n return push(\"chain_join\", { index1, index2 });\n },\n done: function() {\n return push(\"done\");\n }\n };\n return my;\n }\n module.exports = BuildLog;\n }\n });\n\n // node_modules/polybooljs/lib/epsilon.js\n var require_epsilon = __commonJS({\n \"node_modules/polybooljs/lib/epsilon.js\"(exports, module) {\n function Epsilon(eps) {\n if (typeof eps !== \"number\")\n eps = 1e-10;\n var my = {\n epsilon: function(v) {\n if (typeof v === \"number\")\n eps = v;\n return eps;\n },\n pointAboveOrOnLine: function(pt, left, right) {\n var Ax = left[0];\n var Ay = left[1];\n var Bx = right[0];\n var By = right[1];\n var Cx = pt[0];\n var Cy = pt[1];\n return (Bx - Ax) * (Cy - Ay) - (By - Ay) * (Cx - Ax) >= -eps;\n },\n pointBetween: function(p, left, right) {\n var d_py_ly = p[1] - left[1];\n var d_rx_lx = right[0] - left[0];\n var d_px_lx = p[0] - left[0];\n var d_ry_ly = right[1] - left[1];\n var dot = d_px_lx * d_rx_lx + d_py_ly * d_ry_ly;\n if (dot < eps)\n return false;\n var sqlen = d_rx_lx * d_rx_lx + d_ry_ly * d_ry_ly;\n if (dot - sqlen > -eps)\n return false;\n return true;\n },\n pointsSameX: function(p1, p2) {\n return Math.abs(p1[0] - p2[0]) < eps;\n },\n pointsSameY: function(p1, p2) {\n return Math.abs(p1[1] - p2[1]) < eps;\n },\n pointsSame: function(p1, p2) {\n return my.pointsSameX(p1, p2) && my.pointsSameY(p1, p2);\n },\n pointsCompare: function(p1, p2) {\n if (my.pointsSameX(p1, p2))\n return my.pointsSameY(p1, p2) ? 0 : p1[1] < p2[1] ? -1 : 1;\n return p1[0] < p2[0] ? -1 : 1;\n },\n pointsCollinear: function(pt1, pt2, pt3) {\n var dx1 = pt1[0] - pt2[0];\n var dy1 = pt1[1] - pt2[1];\n var dx2 = pt2[0] - pt3[0];\n var dy2 = pt2[1] - pt3[1];\n return Math.abs(dx1 * dy2 - dx2 * dy1) < eps;\n },\n linesIntersect: function(a0, a1, b0, b1) {\n var adx = a1[0] - a0[0];\n var ady = a1[1] - a0[1];\n var bdx = b1[0] - b0[0];\n var bdy = b1[1] - b0[1];\n var axb = adx * bdy - ady * bdx;\n if (Math.abs(axb) < eps)\n return false;\n var dx = a0[0] - b0[0];\n var dy = a0[1] - b0[1];\n var A = (bdx * dy - bdy * dx) / axb;\n var B = (adx * dy - ady * dx) / axb;\n var ret = {\n alongA: 0,\n alongB: 0,\n pt: [\n a0[0] + A * adx,\n a0[1] + A * ady\n ]\n };\n if (A <= -eps)\n ret.alongA = -2;\n else if (A < eps)\n ret.alongA = -1;\n else if (A - 1 <= -eps)\n ret.alongA = 0;\n else if (A - 1 < eps)\n ret.alongA = 1;\n else\n ret.alongA = 2;\n if (B <= -eps)\n ret.alongB = -2;\n else if (B < eps)\n ret.alongB = -1;\n else if (B - 1 <= -eps)\n ret.alongB = 0;\n else if (B - 1 < eps)\n ret.alongB = 1;\n else\n ret.alongB = 2;\n return ret;\n },\n pointInsideRegion: function(pt, region) {\n var x = pt[0];\n var y = pt[1];\n var last_x = region[region.length - 1][0];\n var last_y = region[region.length - 1][1];\n var inside = false;\n for (var i = 0; i < region.length; i++) {\n var curr_x = region[i][0];\n var curr_y = region[i][1];\n if (curr_y - y > eps != last_y - y > eps && (last_x - curr_x) * (y - curr_y) / (last_y - curr_y) + curr_x - x > eps)\n inside = !inside;\n last_x = curr_x;\n last_y = curr_y;\n }\n return inside;\n }\n };\n return my;\n }\n module.exports = Epsilon;\n }\n });\n\n // node_modules/polybooljs/lib/linked-list.js\n var require_linked_list = __commonJS({\n \"node_modules/polybooljs/lib/linked-list.js\"(exports, module) {\n var LinkedList = {\n create: function() {\n var my = {\n root: { root: true, next: null },\n exists: function(node) {\n if (node === null || node === my.root)\n return false;\n return true;\n },\n isEmpty: function() {\n return my.root.next === null;\n },\n getHead: function() {\n return my.root.next;\n },\n insertBefore: function(node, check) {\n var last = my.root;\n var here = my.root.next;\n while (here !== null) {\n if (check(here)) {\n node.prev = here.prev;\n node.next = here;\n here.prev.next = node;\n here.prev = node;\n return;\n }\n last = here;\n here = here.next;\n }\n last.next = node;\n node.prev = last;\n node.next = null;\n },\n findTransition: function(check) {\n var prev = my.root;\n var here = my.root.next;\n while (here !== null) {\n if (check(here))\n break;\n prev = here;\n here = here.next;\n }\n return {\n before: prev === my.root ? null : prev,\n after: here,\n insert: function(node) {\n node.prev = prev;\n node.next = here;\n prev.next = node;\n if (here !== null)\n here.prev = node;\n return node;\n }\n };\n }\n };\n return my;\n },\n node: function(data) {\n data.prev = null;\n data.next = null;\n data.remove = function() {\n data.prev.next = data.next;\n if (data.next)\n data.next.prev = data.prev;\n data.prev = null;\n data.next = null;\n };\n return data;\n }\n };\n module.exports = LinkedList;\n }\n });\n\n // node_modules/polybooljs/lib/intersecter.js\n var require_intersecter = __commonJS({\n \"node_modules/polybooljs/lib/intersecter.js\"(exports, module) {\n var LinkedList = require_linked_list();\n function Intersecter(selfIntersection, eps, buildLog) {\n function segmentNew(start, end) {\n return {\n id: buildLog ? buildLog.segmentId() : -1,\n start,\n end,\n myFill: {\n above: null,\n // is there fill above us?\n below: null\n // is there fill below us?\n },\n otherFill: null\n };\n }\n function segmentCopy(start, end, seg) {\n return {\n id: buildLog ? buildLog.segmentId() : -1,\n start,\n end,\n myFill: {\n above: seg.myFill.above,\n below: seg.myFill.below\n },\n otherFill: null\n };\n }\n var event_root = LinkedList.create();\n function eventCompare(p1_isStart, p1_1, p1_2, p2_isStart, p2_1, p2_2) {\n var comp = eps.pointsCompare(p1_1, p2_1);\n if (comp !== 0)\n return comp;\n if (eps.pointsSame(p1_2, p2_2))\n return 0;\n if (p1_isStart !== p2_isStart)\n return p1_isStart ? 1 : -1;\n return eps.pointAboveOrOnLine(\n p1_2,\n p2_isStart ? p2_1 : p2_2,\n // order matters\n p2_isStart ? p2_2 : p2_1\n ) ? 1 : -1;\n }\n function eventAdd(ev, other_pt) {\n event_root.insertBefore(ev, function(here) {\n var comp = eventCompare(\n ev.isStart,\n ev.pt,\n other_pt,\n here.isStart,\n here.pt,\n here.other.pt\n );\n return comp < 0;\n });\n }\n function eventAddSegmentStart(seg, primary) {\n var ev_start = LinkedList.node({\n isStart: true,\n pt: seg.start,\n seg,\n primary,\n other: null,\n status: null\n });\n eventAdd(ev_start, seg.end);\n return ev_start;\n }\n function eventAddSegmentEnd(ev_start, seg, primary) {\n var ev_end = LinkedList.node({\n isStart: false,\n pt: seg.end,\n seg,\n primary,\n other: ev_start,\n status: null\n });\n ev_start.other = ev_end;\n eventAdd(ev_end, ev_start.pt);\n }\n function eventAddSegment(seg, primary) {\n var ev_start = eventAddSegmentStart(seg, primary);\n eventAddSegmentEnd(ev_start, seg, primary);\n return ev_start;\n }\n function eventUpdateEnd(ev, end) {\n if (buildLog)\n buildLog.segmentChop(ev.seg, end);\n ev.other.remove();\n ev.seg.end = end;\n ev.other.pt = end;\n eventAdd(ev.other, ev.pt);\n }\n function eventDivide(ev, pt) {\n var ns = segmentCopy(pt, ev.seg.end, ev.seg);\n eventUpdateEnd(ev, pt);\n return eventAddSegment(ns, ev.primary);\n }\n function calculate(primaryPolyInverted, secondaryPolyInverted) {\n var status_root = LinkedList.create();\n function statusCompare(ev1, ev2) {\n var a1 = ev1.seg.start;\n var a2 = ev1.seg.end;\n var b1 = ev2.seg.start;\n var b2 = ev2.seg.end;\n if (eps.pointsCollinear(a1, b1, b2)) {\n if (eps.pointsCollinear(a2, b1, b2))\n return 1;\n return eps.pointAboveOrOnLine(a2, b1, b2) ? 1 : -1;\n }\n return eps.pointAboveOrOnLine(a1, b1, b2) ? 1 : -1;\n }\n function statusFindSurrounding(ev2) {\n return status_root.findTransition(function(here) {\n var comp = statusCompare(ev2, here.ev);\n return comp > 0;\n });\n }\n function checkIntersection(ev1, ev2) {\n var seg1 = ev1.seg;\n var seg2 = ev2.seg;\n var a1 = seg1.start;\n var a2 = seg1.end;\n var b1 = seg2.start;\n var b2 = seg2.end;\n if (buildLog)\n buildLog.checkIntersection(seg1, seg2);\n var i = eps.linesIntersect(a1, a2, b1, b2);\n if (i === false) {\n if (!eps.pointsCollinear(a1, a2, b1))\n return false;\n if (eps.pointsSame(a1, b2) || eps.pointsSame(a2, b1))\n return false;\n var a1_equ_b1 = eps.pointsSame(a1, b1);\n var a2_equ_b2 = eps.pointsSame(a2, b2);\n if (a1_equ_b1 && a2_equ_b2)\n return ev2;\n var a1_between = !a1_equ_b1 && eps.pointBetween(a1, b1, b2);\n var a2_between = !a2_equ_b2 && eps.pointBetween(a2, b1, b2);\n if (a1_equ_b1) {\n if (a2_between) {\n eventDivide(ev2, a2);\n } else {\n eventDivide(ev1, b2);\n }\n return ev2;\n } else if (a1_between) {\n if (!a2_equ_b2) {\n if (a2_between) {\n eventDivide(ev2, a2);\n } else {\n eventDivide(ev1, b2);\n }\n }\n eventDivide(ev2, a1);\n }\n } else {\n if (i.alongA === 0) {\n if (i.alongB === -1)\n eventDivide(ev1, b1);\n else if (i.alongB === 0)\n eventDivide(ev1, i.pt);\n else if (i.alongB === 1)\n eventDivide(ev1, b2);\n }\n if (i.alongB === 0) {\n if (i.alongA === -1)\n eventDivide(ev2, a1);\n else if (i.alongA === 0)\n eventDivide(ev2, i.pt);\n else if (i.alongA === 1)\n eventDivide(ev2, a2);\n }\n }\n return false;\n }\n var segments = [];\n while (!event_root.isEmpty()) {\n var ev = event_root.getHead();\n if (buildLog)\n buildLog.vert(ev.pt[0]);\n if (ev.isStart) {\n let checkBothIntersections2 = function() {\n if (above) {\n var eve2 = checkIntersection(ev, above);\n if (eve2)\n return eve2;\n }\n if (below)\n return checkIntersection(ev, below);\n return false;\n };\n var checkBothIntersections = checkBothIntersections2;\n if (buildLog)\n buildLog.segmentNew(ev.seg, ev.primary);\n var surrounding = statusFindSurrounding(ev);\n var above = surrounding.before ? surrounding.before.ev : null;\n var below = surrounding.after ? surrounding.after.ev : null;\n if (buildLog) {\n buildLog.tempStatus(\n ev.seg,\n above ? above.seg : false,\n below ? below.seg : false\n );\n }\n var eve = checkBothIntersections2();\n if (eve) {\n if (selfIntersection) {\n var toggle;\n if (ev.seg.myFill.below === null)\n toggle = true;\n else\n toggle = ev.seg.myFill.above !== ev.seg.myFill.below;\n if (toggle)\n eve.seg.myFill.above = !eve.seg.myFill.above;\n } else {\n eve.seg.otherFill = ev.seg.myFill;\n }\n if (buildLog)\n buildLog.segmentUpdate(eve.seg);\n ev.other.remove();\n ev.remove();\n }\n if (event_root.getHead() !== ev) {\n if (buildLog)\n buildLog.rewind(ev.seg);\n continue;\n }\n if (selfIntersection) {\n var toggle;\n if (ev.seg.myFill.below === null)\n toggle = true;\n else\n toggle = ev.seg.myFill.above !== ev.seg.myFill.below;\n if (!below) {\n ev.seg.myFill.below = primaryPolyInverted;\n } else {\n ev.seg.myFill.below = below.seg.myFill.above;\n }\n if (toggle)\n ev.seg.myFill.above = !ev.seg.myFill.below;\n else\n ev.seg.myFill.above = ev.seg.myFill.below;\n } else {\n if (ev.seg.otherFill === null) {\n var inside;\n if (!below) {\n inside = ev.primary ? secondaryPolyInverted : primaryPolyInverted;\n } else {\n if (ev.primary === below.primary)\n inside = below.seg.otherFill.above;\n else\n inside = below.seg.myFill.above;\n }\n ev.seg.otherFill = {\n above: inside,\n below: inside\n };\n }\n }\n if (buildLog) {\n buildLog.status(\n ev.seg,\n above ? above.seg : false,\n below ? below.seg : false\n );\n }\n ev.other.status = surrounding.insert(LinkedList.node({ ev }));\n } else {\n var st = ev.status;\n if (st === null) {\n throw new Error(\"PolyBool: Zero-length segment detected; your epsilon is probably too small or too large\");\n }\n if (status_root.exists(st.prev) && status_root.exists(st.next))\n checkIntersection(st.prev.ev, st.next.ev);\n if (buildLog)\n buildLog.statusRemove(st.ev.seg);\n st.remove();\n if (!ev.primary) {\n var s = ev.seg.myFill;\n ev.seg.myFill = ev.seg.otherFill;\n ev.seg.otherFill = s;\n }\n segments.push(ev.seg);\n }\n event_root.getHead().remove();\n }\n if (buildLog)\n buildLog.done();\n return segments;\n }\n if (!selfIntersection) {\n return {\n calculate: function(segments1, inverted1, segments2, inverted2) {\n segments1.forEach(function(seg) {\n eventAddSegment(segmentCopy(seg.start, seg.end, seg), true);\n });\n segments2.forEach(function(seg) {\n eventAddSegment(segmentCopy(seg.start, seg.end, seg), false);\n });\n return calculate(inverted1, inverted2);\n }\n };\n }\n return {\n addRegion: function(region) {\n var pt1;\n var pt2 = region[region.length - 1];\n for (var i = 0; i < region.length; i++) {\n pt1 = pt2;\n pt2 = region[i];\n var forward = eps.pointsCompare(pt1, pt2);\n if (forward === 0)\n continue;\n eventAddSegment(\n segmentNew(\n forward < 0 ? pt1 : pt2,\n forward < 0 ? pt2 : pt1\n ),\n true\n );\n }\n },\n calculate: function(inverted) {\n return calculate(inverted, false);\n }\n };\n }\n module.exports = Intersecter;\n }\n });\n\n // node_modules/polybooljs/lib/segment-chainer.js\n var require_segment_chainer = __commonJS({\n \"node_modules/polybooljs/lib/segment-chainer.js\"(exports, module) {\n function SegmentChainer(segments, eps, buildLog) {\n var chains = [];\n var regions = [];\n segments.forEach(function(seg) {\n var pt1 = seg.start;\n var pt2 = seg.end;\n if (eps.pointsSame(pt1, pt2)) {\n console.warn(\"PolyBool: Warning: Zero-length segment detected; your epsilon is probably too small or too large\");\n return;\n }\n if (buildLog)\n buildLog.chainStart(seg);\n var first_match = {\n index: 0,\n matches_head: false,\n matches_pt1: false\n };\n var second_match = {\n index: 0,\n matches_head: false,\n matches_pt1: false\n };\n var next_match = first_match;\n function setMatch(index2, matches_head, matches_pt1) {\n next_match.index = index2;\n next_match.matches_head = matches_head;\n next_match.matches_pt1 = matches_pt1;\n if (next_match === first_match) {\n next_match = second_match;\n return false;\n }\n next_match = null;\n return true;\n }\n for (var i = 0; i < chains.length; i++) {\n var chain = chains[i];\n var head = chain[0];\n var head2 = chain[1];\n var tail = chain[chain.length - 1];\n var tail2 = chain[chain.length - 2];\n if (eps.pointsSame(head, pt1)) {\n if (setMatch(i, true, true))\n break;\n } else if (eps.pointsSame(head, pt2)) {\n if (setMatch(i, true, false))\n break;\n } else if (eps.pointsSame(tail, pt1)) {\n if (setMatch(i, false, true))\n break;\n } else if (eps.pointsSame(tail, pt2)) {\n if (setMatch(i, false, false))\n break;\n }\n }\n if (next_match === first_match) {\n chains.push([pt1, pt2]);\n if (buildLog)\n buildLog.chainNew(pt1, pt2);\n return;\n }\n if (next_match === second_match) {\n if (buildLog)\n buildLog.chainMatch(first_match.index);\n var index = first_match.index;\n var pt = first_match.matches_pt1 ? pt2 : pt1;\n var addToHead = first_match.matches_head;\n var chain = chains[index];\n var grow = addToHead ? chain[0] : chain[chain.length - 1];\n var grow2 = addToHead ? chain[1] : chain[chain.length - 2];\n var oppo = addToHead ? chain[chain.length - 1] : chain[0];\n var oppo2 = addToHead ? chain[chain.length - 2] : chain[1];\n if (eps.pointsCollinear(grow2, grow, pt)) {\n if (addToHead) {\n if (buildLog)\n buildLog.chainRemoveHead(first_match.index, pt);\n chain.shift();\n } else {\n if (buildLog)\n buildLog.chainRemoveTail(first_match.index, pt);\n chain.pop();\n }\n grow = grow2;\n }\n if (eps.pointsSame(oppo, pt)) {\n chains.splice(index, 1);\n if (eps.pointsCollinear(oppo2, oppo, grow)) {\n if (addToHead) {\n if (buildLog)\n buildLog.chainRemoveTail(first_match.index, grow);\n chain.pop();\n } else {\n if (buildLog)\n buildLog.chainRemoveHead(first_match.index, grow);\n chain.shift();\n }\n }\n if (buildLog)\n buildLog.chainClose(first_match.index);\n regions.push(chain);\n return;\n }\n if (addToHead) {\n if (buildLog)\n buildLog.chainAddHead(first_match.index, pt);\n chain.unshift(pt);\n } else {\n if (buildLog)\n buildLog.chainAddTail(first_match.index, pt);\n chain.push(pt);\n }\n return;\n }\n function reverseChain(index2) {\n if (buildLog)\n buildLog.chainReverse(index2);\n chains[index2].reverse();\n }\n function appendChain(index1, index2) {\n var chain1 = chains[index1];\n var chain2 = chains[index2];\n var tail3 = chain1[chain1.length - 1];\n var tail22 = chain1[chain1.length - 2];\n var head3 = chain2[0];\n var head22 = chain2[1];\n if (eps.pointsCollinear(tail22, tail3, head3)) {\n if (buildLog)\n buildLog.chainRemoveTail(index1, tail3);\n chain1.pop();\n tail3 = tail22;\n }\n if (eps.pointsCollinear(tail3, head3, head22)) {\n if (buildLog)\n buildLog.chainRemoveHead(index2, head3);\n chain2.shift();\n }\n if (buildLog)\n buildLog.chainJoin(index1, index2);\n chains[index1] = chain1.concat(chain2);\n chains.splice(index2, 1);\n }\n var F = first_match.index;\n var S = second_match.index;\n if (buildLog)\n buildLog.chainConnect(F, S);\n var reverseF = chains[F].length < chains[S].length;\n if (first_match.matches_head) {\n if (second_match.matches_head) {\n if (reverseF) {\n reverseChain(F);\n appendChain(F, S);\n } else {\n reverseChain(S);\n appendChain(S, F);\n }\n } else {\n appendChain(S, F);\n }\n } else {\n if (second_match.matches_head) {\n appendChain(F, S);\n } else {\n if (reverseF) {\n reverseChain(F);\n appendChain(S, F);\n } else {\n reverseChain(S);\n appendChain(F, S);\n }\n }\n }\n });\n return regions;\n }\n module.exports = SegmentChainer;\n }\n });\n\n // node_modules/polybooljs/lib/segment-selector.js\n var require_segment_selector = __commonJS({\n \"node_modules/polybooljs/lib/segment-selector.js\"(exports, module) {\n function select(segments, selection, buildLog) {\n var result = [];\n segments.forEach(function(seg) {\n var index = (seg.myFill.above ? 8 : 0) + (seg.myFill.below ? 4 : 0) + (seg.otherFill && seg.otherFill.above ? 2 : 0) + (seg.otherFill && seg.otherFill.below ? 1 : 0);\n if (selection[index] !== 0) {\n result.push({\n id: buildLog ? buildLog.segmentId() : -1,\n start: seg.start,\n end: seg.end,\n myFill: {\n above: selection[index] === 1,\n // 1 if filled above\n below: selection[index] === 2\n // 2 if filled below\n },\n otherFill: null\n });\n }\n });\n if (buildLog)\n buildLog.selected(result);\n return result;\n }\n var SegmentSelector = {\n union: function(segments, buildLog) {\n return select(segments, [\n 0,\n 2,\n 1,\n 0,\n 2,\n 2,\n 0,\n 0,\n 1,\n 0,\n 1,\n 0,\n 0,\n 0,\n 0,\n 0\n ], buildLog);\n },\n intersect: function(segments, buildLog) {\n return select(segments, [\n 0,\n 0,\n 0,\n 0,\n 0,\n 2,\n 0,\n 2,\n 0,\n 0,\n 1,\n 1,\n 0,\n 2,\n 1,\n 0\n ], buildLog);\n },\n difference: function(segments, buildLog) {\n return select(segments, [\n 0,\n 0,\n 0,\n 0,\n 2,\n 0,\n 2,\n 0,\n 1,\n 1,\n 0,\n 0,\n 0,\n 1,\n 2,\n 0\n ], buildLog);\n },\n differenceRev: function(segments, buildLog) {\n return select(segments, [\n 0,\n 2,\n 1,\n 0,\n 0,\n 0,\n 1,\n 1,\n 0,\n 2,\n 0,\n 2,\n 0,\n 0,\n 0,\n 0\n ], buildLog);\n },\n xor: function(segments, buildLog) {\n return select(segments, [\n 0,\n 2,\n 1,\n 0,\n 2,\n 0,\n 0,\n 1,\n 1,\n 0,\n 0,\n 2,\n 0,\n 1,\n 2,\n 0\n ], buildLog);\n }\n };\n module.exports = SegmentSelector;\n }\n });\n\n // node_modules/polybooljs/lib/geojson.js\n var require_geojson = __commonJS({\n \"node_modules/polybooljs/lib/geojson.js\"(exports, module) {\n var GeoJSON = {\n // convert a GeoJSON object to a PolyBool polygon\n toPolygon: function(PolyBool, geojson) {\n function GeoPoly(coords) {\n if (coords.length <= 0)\n return PolyBool.segments({ inverted: false, regions: [] });\n function LineString(ls) {\n var reg = ls.slice(0, ls.length - 1);\n return PolyBool.segments({ inverted: false, regions: [reg] });\n }\n var out2 = LineString(coords[0]);\n for (var i2 = 1; i2 < coords.length; i2++)\n out2 = PolyBool.selectDifference(PolyBool.combine(out2, LineString(coords[i2])));\n return out2;\n }\n if (geojson.type === \"Polygon\") {\n return PolyBool.polygon(GeoPoly(geojson.coordinates));\n } else if (geojson.type === \"MultiPolygon\") {\n var out = PolyBool.segments({ inverted: false, regions: [] });\n for (var i = 0; i < geojson.coordinates.length; i++)\n out = PolyBool.selectUnion(PolyBool.combine(out, GeoPoly(geojson.coordinates[i])));\n return PolyBool.polygon(out);\n }\n throw new Error(\"PolyBool: Cannot convert GeoJSON object to PolyBool polygon\");\n },\n // convert a PolyBool polygon to a GeoJSON object\n fromPolygon: function(PolyBool, eps, poly) {\n poly = PolyBool.polygon(PolyBool.segments(poly));\n function regionInsideRegion(r1, r2) {\n return eps.pointInsideRegion([\n (r1[0][0] + r1[1][0]) * 0.5,\n (r1[0][1] + r1[1][1]) * 0.5\n ], r2);\n }\n function newNode(region2) {\n return {\n region: region2,\n children: []\n };\n }\n var roots = newNode(null);\n function addChild(root, region2) {\n for (var i2 = 0; i2 < root.children.length; i2++) {\n var child = root.children[i2];\n if (regionInsideRegion(region2, child.region)) {\n addChild(child, region2);\n return;\n }\n }\n var node = newNode(region2);\n for (var i2 = 0; i2 < root.children.length; i2++) {\n var child = root.children[i2];\n if (regionInsideRegion(child.region, region2)) {\n node.children.push(child);\n root.children.splice(i2, 1);\n i2--;\n }\n }\n root.children.push(node);\n }\n for (var i = 0; i < poly.regions.length; i++) {\n var region = poly.regions[i];\n if (region.length < 3)\n continue;\n addChild(roots, region);\n }\n function forceWinding(region2, clockwise) {\n var winding = 0;\n var last_x = region2[region2.length - 1][0];\n var last_y = region2[region2.length - 1][1];\n var copy = [];\n for (var i2 = 0; i2 < region2.length; i2++) {\n var curr_x = region2[i2][0];\n var curr_y = region2[i2][1];\n copy.push([curr_x, curr_y]);\n winding += curr_y * last_x - curr_x * last_y;\n last_x = curr_x;\n last_y = curr_y;\n }\n var isclockwise = winding < 0;\n if (isclockwise !== clockwise)\n copy.reverse();\n copy.push([copy[0][0], copy[0][1]]);\n return copy;\n }\n var geopolys = [];\n function addExterior(node) {\n var poly2 = [forceWinding(node.region, false)];\n geopolys.push(poly2);\n for (var i2 = 0; i2 < node.children.length; i2++)\n poly2.push(getInterior(node.children[i2]));\n }\n function getInterior(node) {\n for (var i2 = 0; i2 < node.children.length; i2++)\n addExterior(node.children[i2]);\n return forceWinding(node.region, true);\n }\n for (var i = 0; i < roots.children.length; i++)\n addExterior(roots.children[i]);\n if (geopolys.length <= 0)\n return { type: \"Polygon\", coordinates: [] };\n if (geopolys.length == 1)\n return { type: \"Polygon\", coordinates: geopolys[0] };\n return {\n // otherwise, use a GeoJSON MultiPolygon\n type: \"MultiPolygon\",\n coordinates: geopolys\n };\n }\n };\n module.exports = GeoJSON;\n }\n });\n\n // node_modules/polybooljs/index.js\n var require_polybooljs = __commonJS({\n \"node_modules/polybooljs/index.js\"(exports, module) {\n var BuildLog = require_build_log();\n var Epsilon = require_epsilon();\n var Intersecter = require_intersecter();\n var SegmentChainer = require_segment_chainer();\n var SegmentSelector = require_segment_selector();\n var GeoJSON = require_geojson();\n var buildLog = false;\n var epsilon = Epsilon();\n var PolyBool;\n PolyBool = {\n // getter/setter for buildLog\n buildLog: function(bl) {\n if (bl === true)\n buildLog = BuildLog();\n else if (bl === false)\n buildLog = false;\n return buildLog === false ? false : buildLog.list;\n },\n // getter/setter for epsilon\n epsilon: function(v) {\n return epsilon.epsilon(v);\n },\n // core API\n segments: function(poly) {\n var i = Intersecter(true, epsilon, buildLog);\n poly.regions.forEach(i.addRegion);\n return {\n segments: i.calculate(poly.inverted),\n inverted: poly.inverted\n };\n },\n combine: function(segments1, segments2) {\n var i3 = Intersecter(false, epsilon, buildLog);\n return {\n combined: i3.calculate(\n segments1.segments,\n segments1.inverted,\n segments2.segments,\n segments2.inverted\n ),\n inverted1: segments1.inverted,\n inverted2: segments2.inverted\n };\n },\n selectUnion: function(combined) {\n return {\n segments: SegmentSelector.union(combined.combined, buildLog),\n inverted: combined.inverted1 || combined.inverted2\n };\n },\n selectIntersect: function(combined) {\n return {\n segments: SegmentSelector.intersect(combined.combined, buildLog),\n inverted: combined.inverted1 && combined.inverted2\n };\n },\n selectDifference: function(combined) {\n return {\n segments: SegmentSelector.difference(combined.combined, buildLog),\n inverted: combined.inverted1 && !combined.inverted2\n };\n },\n selectDifferenceRev: function(combined) {\n return {\n segments: SegmentSelector.differenceRev(combined.combined, buildLog),\n inverted: !combined.inverted1 && combined.inverted2\n };\n },\n selectXor: function(combined) {\n return {\n segments: SegmentSelector.xor(combined.combined, buildLog),\n inverted: combined.inverted1 !== combined.inverted2\n };\n },\n polygon: function(segments) {\n return {\n regions: SegmentChainer(segments.segments, epsilon, buildLog),\n inverted: segments.inverted\n };\n },\n // GeoJSON converters\n polygonFromGeoJSON: function(geojson) {\n return GeoJSON.toPolygon(PolyBool, geojson);\n },\n polygonToGeoJSON: function(poly) {\n return GeoJSON.fromPolygon(PolyBool, epsilon, poly);\n },\n // helper functions for common operations\n union: function(poly1, poly2) {\n return operate(poly1, poly2, PolyBool.selectUnion);\n },\n intersect: function(poly1, poly2) {\n return operate(poly1, poly2, PolyBool.selectIntersect);\n },\n difference: function(poly1, poly2) {\n return operate(poly1, poly2, PolyBool.selectDifference);\n },\n differenceRev: function(poly1, poly2) {\n return operate(poly1, poly2, PolyBool.selectDifferenceRev);\n },\n xor: function(poly1, poly2) {\n return operate(poly1, poly2, PolyBool.selectXor);\n }\n };\n function operate(poly1, poly2, selector) {\n var seg1 = PolyBool.segments(poly1);\n var seg2 = PolyBool.segments(poly2);\n var comb = PolyBool.combine(seg1, seg2);\n var seg3 = selector(comb);\n return PolyBool.polygon(seg3);\n }\n if (typeof window === \"object\")\n window.PolyBool = PolyBool;\n module.exports = PolyBool;\n }\n });\n\n // node_modules/point-in-polygon/nested.js\n var require_nested = __commonJS({\n \"node_modules/point-in-polygon/nested.js\"(exports, module) {\n module.exports = function pointInPolygonNested(point, vs, start, end) {\n var x = point[0], y = point[1];\n var inside = false;\n if (start === void 0) start = 0;\n if (end === void 0) end = vs.length;\n var len = end - start;\n for (var i = 0, j = len - 1; i < len; j = i++) {\n var xi = vs[i + start][0], yi = vs[i + start][1];\n var xj = vs[j + start][0], yj = vs[j + start][1];\n var intersect = yi > y !== yj > y && x < (xj - xi) * (y - yi) / (yj - yi) + xi;\n if (intersect) inside = !inside;\n }\n return inside;\n };\n }\n });\n\n // src/lib/polygon.js\n var require_polygon = __commonJS({\n \"src/lib/polygon.js\"(exports, module) {\n \"use strict\";\n var dot = require_matrix().dot;\n var BADNUM = require_numerical().BADNUM;\n var polygon = module.exports = {};\n polygon.tester = function tester(ptsIn) {\n var pts = ptsIn.slice();\n var xmin = pts[0][0];\n var xmax = xmin;\n var ymin = pts[0][1];\n var ymax = ymin;\n var i;\n if (pts[pts.length - 1][0] !== pts[0][0] || pts[pts.length - 1][1] !== pts[0][1]) {\n pts.push(pts[0]);\n }\n for (i = 1; i < pts.length; i++) {\n xmin = Math.min(xmin, pts[i][0]);\n xmax = Math.max(xmax, pts[i][0]);\n ymin = Math.min(ymin, pts[i][1]);\n ymax = Math.max(ymax, pts[i][1]);\n }\n var isRect = false;\n var rectFirstEdgeTest;\n if (pts.length === 5) {\n if (pts[0][0] === pts[1][0]) {\n if (pts[2][0] === pts[3][0] && pts[0][1] === pts[3][1] && pts[1][1] === pts[2][1]) {\n isRect = true;\n rectFirstEdgeTest = function(pt) {\n return pt[0] === pts[0][0];\n };\n }\n } else if (pts[0][1] === pts[1][1]) {\n if (pts[2][1] === pts[3][1] && pts[0][0] === pts[3][0] && pts[1][0] === pts[2][0]) {\n isRect = true;\n rectFirstEdgeTest = function(pt) {\n return pt[1] === pts[0][1];\n };\n }\n }\n }\n function rectContains(pt, omitFirstEdge) {\n var x = pt[0];\n var y = pt[1];\n if (x === BADNUM || x < xmin || x > xmax || y === BADNUM || y < ymin || y > ymax) {\n return false;\n }\n if (omitFirstEdge && rectFirstEdgeTest(pt)) return false;\n return true;\n }\n function contains(pt, omitFirstEdge) {\n var x = pt[0];\n var y = pt[1];\n if (x === BADNUM || x < xmin || x > xmax || y === BADNUM || y < ymin || y > ymax) {\n return false;\n }\n var imax = pts.length;\n var x1 = pts[0][0];\n var y1 = pts[0][1];\n var crossings = 0;\n var i2;\n var x0;\n var y0;\n var xmini;\n var ycross;\n for (i2 = 1; i2 < imax; i2++) {\n x0 = x1;\n y0 = y1;\n x1 = pts[i2][0];\n y1 = pts[i2][1];\n xmini = Math.min(x0, x1);\n if (x < xmini || x > Math.max(x0, x1) || y > Math.max(y0, y1)) {\n continue;\n } else if (y < Math.min(y0, y1)) {\n if (x !== xmini) crossings++;\n } else {\n if (x1 === x0) ycross = y;\n else ycross = y0 + (x - x0) * (y1 - y0) / (x1 - x0);\n if (y === ycross) {\n if (i2 === 1 && omitFirstEdge) return false;\n return true;\n }\n if (y <= ycross && x !== xmini) crossings++;\n }\n }\n return crossings % 2 === 1;\n }\n var degenerate = true;\n var lastPt = pts[0];\n for (i = 1; i < pts.length; i++) {\n if (lastPt[0] !== pts[i][0] || lastPt[1] !== pts[i][1]) {\n degenerate = false;\n break;\n }\n }\n return {\n xmin,\n xmax,\n ymin,\n ymax,\n pts,\n contains: isRect ? rectContains : contains,\n isRect,\n degenerate\n };\n };\n polygon.isSegmentBent = function isSegmentBent(pts, start, end, tolerance) {\n var startPt = pts[start];\n var segment = [pts[end][0] - startPt[0], pts[end][1] - startPt[1]];\n var segmentSquared = dot(segment, segment);\n var segmentLen = Math.sqrt(segmentSquared);\n var unitPerp = [-segment[1] / segmentLen, segment[0] / segmentLen];\n var i;\n var part;\n var partParallel;\n for (i = start + 1; i < end; i++) {\n part = [pts[i][0] - startPt[0], pts[i][1] - startPt[1]];\n partParallel = dot(part, segment);\n if (partParallel < 0 || partParallel > segmentSquared || Math.abs(dot(part, unitPerp)) > tolerance) return true;\n }\n return false;\n };\n polygon.filter = function filter(pts, tolerance) {\n var ptsFiltered = [pts[0]];\n var doneRawIndex = 0;\n var doneFilteredIndex = 0;\n function addPt(pt) {\n pts.push(pt);\n var prevFilterLen = ptsFiltered.length;\n var iLast = doneRawIndex;\n ptsFiltered.splice(doneFilteredIndex + 1);\n for (var i = iLast + 1; i < pts.length; i++) {\n if (i === pts.length - 1 || polygon.isSegmentBent(pts, iLast, i + 1, tolerance)) {\n ptsFiltered.push(pts[i]);\n if (ptsFiltered.length < prevFilterLen - 2) {\n doneRawIndex = i;\n doneFilteredIndex = ptsFiltered.length - 1;\n }\n iLast = i;\n }\n }\n }\n if (pts.length > 1) {\n var lastPt = pts.pop();\n addPt(lastPt);\n }\n return {\n addPt,\n raw: pts,\n filtered: ptsFiltered\n };\n };\n }\n });\n\n // src/components/selections/constants.js\n var require_constants7 = __commonJS({\n \"src/components/selections/constants.js\"(exports, module) {\n \"use strict\";\n module.exports = {\n // max pixels off straight before a lasso select line counts as bent\n BENDPX: 1.5,\n // smallest dimension allowed for a select box\n MINSELECT: 12,\n // throttling limit (ms) for selectPoints calls\n SELECTDELAY: 100,\n // cache ID suffix for throttle\n SELECTID: \"-select\"\n };\n }\n });\n\n // src/components/selections/select.js\n var require_select = __commonJS({\n \"src/components/selections/select.js\"(exports, module) {\n \"use strict\";\n var polybool = require_polybooljs();\n var pointInPolygon = require_nested();\n var Registry = require_registry();\n var dashStyle = require_drawing().dashStyle;\n var Color = require_color();\n var Fx = require_fx();\n var makeEventData = require_helpers2().makeEventData;\n var dragHelpers = require_helpers5();\n var freeMode = dragHelpers.freeMode;\n var rectMode = dragHelpers.rectMode;\n var drawMode = dragHelpers.drawMode;\n var openMode = dragHelpers.openMode;\n var selectMode = dragHelpers.selectMode;\n var shapeHelpers = require_helpers8();\n var shapeConstants = require_constants5();\n var displayOutlines = require_display_outlines();\n var clearOutline = require_handle_outline().clearOutline;\n var newShapeHelpers = require_helpers7();\n var handleEllipse = newShapeHelpers.handleEllipse;\n var readPaths = newShapeHelpers.readPaths;\n var newShapes = require_newshapes().newShapes;\n var newSelections = require_newselections();\n var activateLastSelection = require_draw3().activateLastSelection;\n var Lib = require_lib();\n var ascending = Lib.sorterAsc;\n var libPolygon = require_polygon();\n var throttle = require_throttle();\n var getFromId = require_axis_ids().getFromId;\n var clearGlCanvases = require_clear_gl_canvases();\n var redrawReglTraces = require_subroutines().redrawReglTraces;\n var constants = require_constants7();\n var MINSELECT = constants.MINSELECT;\n var filteredPolygon = libPolygon.filter;\n var polygonTester = libPolygon.tester;\n var helpers = require_helpers6();\n var p2r = helpers.p2r;\n var axValue = helpers.axValue;\n var getTransform = helpers.getTransform;\n function hasSubplot(dragOptions) {\n return dragOptions.subplot !== void 0;\n }\n function prepSelect(evt, startX, startY, dragOptions, mode) {\n var isCartesian = !hasSubplot(dragOptions);\n var isFreeMode = freeMode(mode);\n var isRectMode = rectMode(mode);\n var isOpenMode = openMode(mode);\n var isDrawMode = drawMode(mode);\n var isSelectMode = selectMode(mode);\n var isLine = mode === \"drawline\";\n var isEllipse = mode === \"drawcircle\";\n var isLineOrEllipse = isLine || isEllipse;\n var gd = dragOptions.gd;\n var fullLayout = gd._fullLayout;\n var immediateSelect = isSelectMode && fullLayout.newselection.mode === \"immediate\" && isCartesian;\n var zoomLayer = fullLayout._zoomlayer;\n var dragBBox = dragOptions.element.getBoundingClientRect();\n var plotinfo = dragOptions.plotinfo;\n var transform = getTransform(plotinfo);\n var x0 = startX - dragBBox.left;\n var y0 = startY - dragBBox.top;\n fullLayout._calcInverseTransform(gd);\n var transformedCoords = Lib.apply3DTransform(fullLayout._invTransform)(x0, y0);\n x0 = transformedCoords[0];\n y0 = transformedCoords[1];\n var scaleX = fullLayout._invScaleX;\n var scaleY = fullLayout._invScaleY;\n var x1 = x0;\n var y1 = y0;\n var path0 = \"M\" + x0 + \",\" + y0;\n var xAxis = dragOptions.xaxes[0];\n var yAxis = dragOptions.yaxes[0];\n var pw = xAxis._length;\n var ph = yAxis._length;\n var subtract = evt.altKey && !(drawMode(mode) && isOpenMode);\n var filterPoly, selectionTesters, mergedPolygons, currentPolygon;\n var i, searchInfo, eventData;\n coerceSelectionsCache(evt, gd, dragOptions);\n if (isFreeMode) {\n filterPoly = filteredPolygon([[x0, y0]], constants.BENDPX);\n }\n var outlines = zoomLayer.selectAll(\"path.select-outline-\" + plotinfo.id).data([1]);\n var newStyle = isDrawMode ? fullLayout.newshape : fullLayout.newselection;\n if (isDrawMode) {\n dragOptions.hasText = newStyle.label.text || newStyle.label.texttemplate;\n }\n var fillC = isDrawMode && !isOpenMode ? newStyle.fillcolor : \"rgba(0,0,0,0)\";\n var strokeC = newStyle.line.color || (isCartesian ? Color.contrast(gd._fullLayout.plot_bgcolor) : \"#7f7f7f\");\n outlines.enter().append(\"path\").attr(\"class\", \"select-outline select-outline-\" + plotinfo.id).style({\n opacity: isDrawMode ? newStyle.opacity / 2 : 1,\n \"stroke-dasharray\": dashStyle(newStyle.line.dash, newStyle.line.width),\n \"stroke-width\": newStyle.line.width + \"px\",\n \"shape-rendering\": \"crispEdges\"\n }).call(Color.stroke, strokeC).call(Color.fill, fillC).attr(\"fill-rule\", \"evenodd\").classed(\"cursor-move\", isDrawMode ? true : false).attr(\"transform\", transform).attr(\"d\", path0 + \"Z\");\n var corners = zoomLayer.append(\"path\").attr(\"class\", \"zoombox-corners\").style({\n fill: Color.background,\n stroke: Color.defaultLine,\n \"stroke-width\": 1\n }).attr(\"transform\", transform).attr(\"d\", \"M0,0Z\");\n if (isDrawMode && dragOptions.hasText) {\n var shapeGroup = zoomLayer.select(\".label-temp\");\n if (shapeGroup.empty()) {\n shapeGroup = zoomLayer.append(\"g\").classed(\"label-temp\", true).classed(\"select-outline\", true).style({ opacity: 0.8 });\n }\n }\n var throttleID = fullLayout._uid + constants.SELECTID;\n var selection = [];\n var searchTraces = determineSearchTraces(\n gd,\n dragOptions.xaxes,\n dragOptions.yaxes,\n dragOptions.subplot\n );\n if (immediateSelect && !evt.shiftKey) {\n dragOptions._clearSubplotSelections = function() {\n if (!isCartesian) return;\n var xRef = xAxis._id;\n var yRef = yAxis._id;\n deselectSubplot(gd, xRef, yRef, searchTraces);\n var selections = (gd.layout || {}).selections || [];\n var list = [];\n var selectionErased = false;\n for (var q = 0; q < selections.length; q++) {\n var s = fullLayout.selections[q];\n if (!s || s.xref !== xRef || s.yref !== yRef) {\n list.push(selections[q]);\n } else {\n selectionErased = true;\n }\n }\n if (selectionErased) {\n gd._fullLayout._noEmitSelectedAtStart = true;\n Registry.call(\"_guiRelayout\", gd, {\n selections: list\n });\n }\n };\n }\n var fillRangeItems = getFillRangeItems(dragOptions);\n dragOptions.moveFn = function(dx0, dy0) {\n if (dragOptions._clearSubplotSelections) {\n dragOptions._clearSubplotSelections();\n dragOptions._clearSubplotSelections = void 0;\n }\n x1 = Math.max(0, Math.min(pw, scaleX * dx0 + x0));\n y1 = Math.max(0, Math.min(ph, scaleY * dy0 + y0));\n var dx = Math.abs(x1 - x0);\n var dy = Math.abs(y1 - y0);\n if (isRectMode) {\n var direction;\n var start, end;\n if (isSelectMode) {\n var q = fullLayout.selectdirection;\n if (q === \"any\") {\n if (dy < Math.min(dx * 0.6, MINSELECT)) {\n direction = \"h\";\n } else if (dx < Math.min(dy * 0.6, MINSELECT)) {\n direction = \"v\";\n } else {\n direction = \"d\";\n }\n } else {\n direction = q;\n }\n switch (direction) {\n case \"h\":\n start = isEllipse ? ph / 2 : 0;\n end = ph;\n break;\n case \"v\":\n start = isEllipse ? pw / 2 : 0;\n end = pw;\n break;\n }\n }\n if (isDrawMode) {\n switch (fullLayout.newshape.drawdirection) {\n case \"vertical\":\n direction = \"h\";\n start = isEllipse ? ph / 2 : 0;\n end = ph;\n break;\n case \"horizontal\":\n direction = \"v\";\n start = isEllipse ? pw / 2 : 0;\n end = pw;\n break;\n case \"ortho\":\n if (dx < dy) {\n direction = \"h\";\n start = y0;\n end = y1;\n } else {\n direction = \"v\";\n start = x0;\n end = x1;\n }\n break;\n default:\n direction = \"d\";\n }\n }\n if (direction === \"h\") {\n currentPolygon = isLineOrEllipse ? handleEllipse(isEllipse, [x1, start], [x1, end]) : (\n // using x1 instead of x0 allows adjusting the line while drawing\n [[x0, start], [x0, end], [x1, end], [x1, start]]\n );\n currentPolygon.xmin = isLineOrEllipse ? x1 : Math.min(x0, x1);\n currentPolygon.xmax = isLineOrEllipse ? x1 : Math.max(x0, x1);\n currentPolygon.ymin = Math.min(start, end);\n currentPolygon.ymax = Math.max(start, end);\n corners.attr(\"d\", \"M\" + currentPolygon.xmin + \",\" + (y0 - MINSELECT) + \"h-4v\" + 2 * MINSELECT + \"h4ZM\" + (currentPolygon.xmax - 1) + \",\" + (y0 - MINSELECT) + \"h4v\" + 2 * MINSELECT + \"h-4Z\");\n } else if (direction === \"v\") {\n currentPolygon = isLineOrEllipse ? handleEllipse(isEllipse, [start, y1], [end, y1]) : (\n // using y1 instead of y0 allows adjusting the line while drawing\n [[start, y0], [start, y1], [end, y1], [end, y0]]\n );\n currentPolygon.xmin = Math.min(start, end);\n currentPolygon.xmax = Math.max(start, end);\n currentPolygon.ymin = isLineOrEllipse ? y1 : Math.min(y0, y1);\n currentPolygon.ymax = isLineOrEllipse ? y1 : Math.max(y0, y1);\n corners.attr(\"d\", \"M\" + (x0 - MINSELECT) + \",\" + currentPolygon.ymin + \"v-4h\" + 2 * MINSELECT + \"v4ZM\" + (x0 - MINSELECT) + \",\" + (currentPolygon.ymax - 1) + \"v4h\" + 2 * MINSELECT + \"v-4Z\");\n } else if (direction === \"d\") {\n currentPolygon = isLineOrEllipse ? handleEllipse(isEllipse, [x0, y0], [x1, y1]) : [[x0, y0], [x0, y1], [x1, y1], [x1, y0]];\n currentPolygon.xmin = Math.min(x0, x1);\n currentPolygon.xmax = Math.max(x0, x1);\n currentPolygon.ymin = Math.min(y0, y1);\n currentPolygon.ymax = Math.max(y0, y1);\n corners.attr(\"d\", \"M0,0Z\");\n }\n } else if (isFreeMode) {\n filterPoly.addPt([x1, y1]);\n currentPolygon = filterPoly.filtered;\n }\n if (dragOptions.selectionDefs && dragOptions.selectionDefs.length) {\n mergedPolygons = mergePolygons(dragOptions.mergedPolygons, currentPolygon, subtract);\n currentPolygon.subtract = subtract;\n selectionTesters = multiTester(dragOptions.selectionDefs.concat([currentPolygon]));\n } else {\n mergedPolygons = [currentPolygon];\n selectionTesters = polygonTester(currentPolygon);\n }\n displayOutlines(convertPoly(mergedPolygons, isOpenMode), outlines, dragOptions);\n if (isSelectMode) {\n var _res = reselect(gd, false);\n var extraPoints = _res.eventData ? _res.eventData.points.slice() : [];\n _res = reselect(gd, false, selectionTesters, searchTraces, dragOptions);\n selectionTesters = _res.selectionTesters;\n eventData = _res.eventData;\n var poly;\n if (filterPoly) {\n poly = filterPoly.filtered;\n } else {\n poly = castMultiPolygon(mergedPolygons);\n }\n throttle.throttle(\n throttleID,\n constants.SELECTDELAY,\n function() {\n selection = _doSelect(selectionTesters, searchTraces);\n var newPoints = selection.slice();\n for (var w = 0; w < extraPoints.length; w++) {\n var p = extraPoints[w];\n var found = false;\n for (var u = 0; u < newPoints.length; u++) {\n if (newPoints[u].curveNumber === p.curveNumber && newPoints[u].pointNumber === p.pointNumber) {\n found = true;\n break;\n }\n }\n if (!found) newPoints.push(p);\n }\n if (newPoints.length) {\n if (!eventData) eventData = {};\n eventData.points = newPoints;\n }\n fillRangeItems(eventData, poly);\n emitSelecting(gd, eventData);\n }\n );\n }\n };\n dragOptions.clickFn = function(numClicks, evt2) {\n corners.remove();\n if (gd._fullLayout._activeShapeIndex >= 0) {\n gd._fullLayout._deactivateShape(gd);\n return;\n }\n if (isDrawMode) return;\n var clickmode = fullLayout.clickmode;\n throttle.done(throttleID).then(function() {\n throttle.clear(throttleID);\n if (numClicks === 2) {\n outlines.remove();\n for (i = 0; i < searchTraces.length; i++) {\n searchInfo = searchTraces[i];\n searchInfo._module.selectPoints(searchInfo, false);\n }\n updateSelectedState(gd, searchTraces);\n clearSelectionsCache(dragOptions);\n emitDeselect(gd);\n if (searchTraces.length) {\n var clickedXaxis = searchTraces[0].xaxis;\n var clickedYaxis = searchTraces[0].yaxis;\n if (clickedXaxis && clickedYaxis) {\n var subSelections = [];\n var allSelections = gd._fullLayout.selections;\n for (var k = 0; k < allSelections.length; k++) {\n var s = allSelections[k];\n if (!s) continue;\n if (s.xref !== clickedXaxis._id || s.yref !== clickedYaxis._id) {\n subSelections.push(s);\n }\n }\n if (subSelections.length < allSelections.length) {\n gd._fullLayout._noEmitSelectedAtStart = true;\n Registry.call(\"_guiRelayout\", gd, {\n selections: subSelections\n });\n }\n }\n }\n } else {\n if (clickmode.indexOf(\"select\") > -1) {\n selectOnClick(\n evt2,\n gd,\n dragOptions.xaxes,\n dragOptions.yaxes,\n dragOptions.subplot,\n dragOptions,\n outlines\n );\n }\n if (clickmode === \"event\") {\n emitSelected(gd, void 0);\n }\n }\n Fx.click(gd, evt2, plotinfo.id);\n }).catch(Lib.error);\n };\n dragOptions.doneFn = function() {\n corners.remove();\n throttle.done(throttleID).then(function() {\n throttle.clear(throttleID);\n if (!immediateSelect && currentPolygon && dragOptions.selectionDefs) {\n currentPolygon.subtract = subtract;\n dragOptions.selectionDefs.push(currentPolygon);\n dragOptions.mergedPolygons.length = 0;\n [].push.apply(dragOptions.mergedPolygons, mergedPolygons);\n }\n if (immediateSelect || isDrawMode) {\n clearSelectionsCache(dragOptions, immediateSelect);\n }\n if (dragOptions.doneFnCompleted) {\n dragOptions.doneFnCompleted(selection);\n }\n if (isSelectMode) {\n emitSelected(gd, eventData);\n }\n }).catch(Lib.error);\n };\n }\n function selectOnClick(evt, gd, xAxes, yAxes, subplot, dragOptions, polygonOutlines) {\n var hoverData = gd._hoverdata;\n var fullLayout = gd._fullLayout;\n var clickmode = fullLayout.clickmode;\n var sendEvents = clickmode.indexOf(\"event\") > -1;\n var selection = [];\n var searchTraces, searchInfo, currentSelectionDef, selectionTesters, traceSelection;\n var thisTracesSelection, pointOrBinSelected, subtract, eventData, i;\n if (isHoverDataSet(hoverData)) {\n coerceSelectionsCache(evt, gd, dragOptions);\n searchTraces = determineSearchTraces(gd, xAxes, yAxes, subplot);\n var clickedPtInfo = extractClickedPtInfo(hoverData, searchTraces);\n var isBinnedTrace = clickedPtInfo.pointNumbers.length > 0;\n if (isBinnedTrace ? isOnlyThisBinSelected(searchTraces, clickedPtInfo) : isOnlyOnePointSelected(searchTraces) && (pointOrBinSelected = isPointOrBinSelected(clickedPtInfo))) {\n if (polygonOutlines) polygonOutlines.remove();\n for (i = 0; i < searchTraces.length; i++) {\n searchInfo = searchTraces[i];\n searchInfo._module.selectPoints(searchInfo, false);\n }\n updateSelectedState(gd, searchTraces);\n clearSelectionsCache(dragOptions);\n if (sendEvents) {\n emitDeselect(gd);\n }\n } else {\n subtract = evt.shiftKey && (pointOrBinSelected !== void 0 ? pointOrBinSelected : isPointOrBinSelected(clickedPtInfo));\n currentSelectionDef = newPointSelectionDef(clickedPtInfo.pointNumber, clickedPtInfo.searchInfo, subtract);\n var allSelectionDefs = dragOptions.selectionDefs.concat([currentSelectionDef]);\n selectionTesters = multiTester(allSelectionDefs, selectionTesters);\n for (i = 0; i < searchTraces.length; i++) {\n traceSelection = searchTraces[i]._module.selectPoints(searchTraces[i], selectionTesters);\n thisTracesSelection = fillSelectionItem(traceSelection, searchTraces[i]);\n if (selection.length) {\n for (var j = 0; j < thisTracesSelection.length; j++) {\n selection.push(thisTracesSelection[j]);\n }\n } else selection = thisTracesSelection;\n }\n eventData = { points: selection };\n updateSelectedState(gd, searchTraces, eventData);\n if (currentSelectionDef && dragOptions) {\n dragOptions.selectionDefs.push(currentSelectionDef);\n }\n if (polygonOutlines) {\n var polygons = dragOptions.mergedPolygons;\n var isOpenMode = openMode(dragOptions.dragmode);\n displayOutlines(convertPoly(polygons, isOpenMode), polygonOutlines, dragOptions);\n }\n if (sendEvents) {\n emitSelected(gd, eventData);\n }\n }\n }\n }\n function newPointSelectionDef(pointNumber, searchInfo, subtract) {\n return {\n pointNumber,\n searchInfo,\n subtract: !!subtract\n };\n }\n function isPointSelectionDef(o) {\n return \"pointNumber\" in o && \"searchInfo\" in o;\n }\n function newPointNumTester(pointSelectionDef) {\n return {\n xmin: 0,\n xmax: 0,\n ymin: 0,\n ymax: 0,\n pts: [],\n contains: function(pt, omitFirstEdge, pointNumber, searchInfo) {\n var idxWantedTrace = pointSelectionDef.searchInfo.cd[0].trace.index;\n var idxActualTrace = searchInfo.cd[0].trace.index;\n return idxActualTrace === idxWantedTrace && pointNumber === pointSelectionDef.pointNumber;\n },\n isRect: false,\n degenerate: false,\n subtract: !!pointSelectionDef.subtract\n };\n }\n function multiTester(list) {\n if (!list.length) return;\n var testers = [];\n var xmin = isPointSelectionDef(list[0]) ? 0 : list[0][0][0];\n var xmax = xmin;\n var ymin = isPointSelectionDef(list[0]) ? 0 : list[0][0][1];\n var ymax = ymin;\n for (var i = 0; i < list.length; i++) {\n if (isPointSelectionDef(list[i])) {\n testers.push(newPointNumTester(list[i]));\n } else {\n var tester = polygonTester(list[i]);\n tester.subtract = !!list[i].subtract;\n testers.push(tester);\n xmin = Math.min(xmin, tester.xmin);\n xmax = Math.max(xmax, tester.xmax);\n ymin = Math.min(ymin, tester.ymin);\n ymax = Math.max(ymax, tester.ymax);\n }\n }\n function contains(pt, arg, pointNumber, searchInfo) {\n var contained = false;\n for (var i2 = 0; i2 < testers.length; i2++) {\n if (testers[i2].contains(pt, arg, pointNumber, searchInfo)) {\n contained = !testers[i2].subtract;\n }\n }\n return contained;\n }\n return {\n xmin,\n xmax,\n ymin,\n ymax,\n pts: [],\n contains,\n isRect: false,\n degenerate: false\n };\n }\n function coerceSelectionsCache(evt, gd, dragOptions) {\n var fullLayout = gd._fullLayout;\n var plotinfo = dragOptions.plotinfo;\n var dragmode = dragOptions.dragmode;\n var selectingOnSameSubplot = fullLayout._lastSelectedSubplot && fullLayout._lastSelectedSubplot === plotinfo.id;\n var hasModifierKey = (evt.shiftKey || evt.altKey) && !(drawMode(dragmode) && openMode(dragmode));\n if (selectingOnSameSubplot && hasModifierKey && plotinfo.selection && plotinfo.selection.selectionDefs && !dragOptions.selectionDefs) {\n dragOptions.selectionDefs = plotinfo.selection.selectionDefs;\n dragOptions.mergedPolygons = plotinfo.selection.mergedPolygons;\n } else if (!hasModifierKey || !plotinfo.selection) {\n clearSelectionsCache(dragOptions);\n }\n if (!selectingOnSameSubplot) {\n clearOutline(gd);\n fullLayout._lastSelectedSubplot = plotinfo.id;\n }\n }\n function hasActiveShape(gd) {\n return gd._fullLayout._activeShapeIndex >= 0;\n }\n function hasActiveSelection(gd) {\n return gd._fullLayout._activeSelectionIndex >= 0;\n }\n function clearSelectionsCache(dragOptions, immediateSelect) {\n var dragmode = dragOptions.dragmode;\n var plotinfo = dragOptions.plotinfo;\n var gd = dragOptions.gd;\n if (hasActiveShape(gd)) {\n gd._fullLayout._deactivateShape(gd);\n }\n if (hasActiveSelection(gd)) {\n gd._fullLayout._deactivateSelection(gd);\n }\n var fullLayout = gd._fullLayout;\n var zoomLayer = fullLayout._zoomlayer;\n var isDrawMode = drawMode(dragmode);\n var isSelectMode = selectMode(dragmode);\n if (isDrawMode || isSelectMode) {\n var outlines = zoomLayer.selectAll(\".select-outline-\" + plotinfo.id);\n if (outlines && gd._fullLayout._outlining) {\n var shapes;\n if (isDrawMode) {\n shapes = newShapes(outlines, dragOptions);\n }\n if (shapes) {\n Registry.call(\"_guiRelayout\", gd, {\n shapes\n });\n }\n var selections;\n if (isSelectMode && !hasSubplot(dragOptions)) {\n selections = newSelections(outlines, dragOptions);\n }\n if (selections) {\n gd._fullLayout._noEmitSelectedAtStart = true;\n Registry.call(\"_guiRelayout\", gd, {\n selections\n }).then(function() {\n if (immediateSelect) {\n activateLastSelection(gd);\n }\n });\n }\n gd._fullLayout._outlining = false;\n }\n }\n plotinfo.selection = {};\n plotinfo.selection.selectionDefs = dragOptions.selectionDefs = [];\n plotinfo.selection.mergedPolygons = dragOptions.mergedPolygons = [];\n }\n function getAxId(ax) {\n return ax._id;\n }\n function determineSearchTraces(gd, xAxes, yAxes, subplot) {\n if (!gd.calcdata) return [];\n var searchTraces = [];\n var xAxisIds = xAxes.map(getAxId);\n var yAxisIds = yAxes.map(getAxId);\n var cd, trace, i;\n for (i = 0; i < gd.calcdata.length; i++) {\n cd = gd.calcdata[i];\n trace = cd[0].trace;\n if (trace.visible !== true || !trace._module || !trace._module.selectPoints) continue;\n if (hasSubplot({ subplot }) && (trace.subplot === subplot || trace.geo === subplot)) {\n searchTraces.push(createSearchInfo(trace._module, cd, xAxes[0], yAxes[0]));\n } else if (trace.type === \"splom\") {\n if (trace._xaxes[xAxisIds[0]] && trace._yaxes[yAxisIds[0]]) {\n var info = createSearchInfo(trace._module, cd, xAxes[0], yAxes[0]);\n info.scene = gd._fullLayout._splomScenes[trace.uid];\n searchTraces.push(info);\n }\n } else if (trace.type === \"sankey\") {\n var sankeyInfo = createSearchInfo(trace._module, cd, xAxes[0], yAxes[0]);\n searchTraces.push(sankeyInfo);\n } else {\n if (xAxisIds.indexOf(trace.xaxis) === -1 && (!trace._xA || !trace._xA.overlaying)) continue;\n if (yAxisIds.indexOf(trace.yaxis) === -1 && (!trace._yA || !trace._yA.overlaying)) continue;\n searchTraces.push(createSearchInfo(\n trace._module,\n cd,\n getFromId(gd, trace.xaxis),\n getFromId(gd, trace.yaxis)\n ));\n }\n }\n return searchTraces;\n }\n function createSearchInfo(module2, calcData, xaxis, yaxis) {\n return {\n _module: module2,\n cd: calcData,\n xaxis,\n yaxis\n };\n }\n function isHoverDataSet(hoverData) {\n return hoverData && Array.isArray(hoverData) && hoverData[0].hoverOnBox !== true;\n }\n function extractClickedPtInfo(hoverData, searchTraces) {\n var hoverDatum = hoverData[0];\n var pointNumber = -1;\n var pointNumbers = [];\n var searchInfo, i;\n for (i = 0; i < searchTraces.length; i++) {\n searchInfo = searchTraces[i];\n if (hoverDatum.fullData.index === searchInfo.cd[0].trace.index) {\n if (hoverDatum.hoverOnBox === true) {\n break;\n }\n if (hoverDatum.pointNumber !== void 0) {\n pointNumber = hoverDatum.pointNumber;\n } else if (hoverDatum.binNumber !== void 0) {\n pointNumber = hoverDatum.binNumber;\n pointNumbers = hoverDatum.pointNumbers;\n }\n break;\n }\n }\n return {\n pointNumber,\n pointNumbers,\n searchInfo\n };\n }\n function isPointOrBinSelected(clickedPtInfo) {\n var trace = clickedPtInfo.searchInfo.cd[0].trace;\n var ptNum = clickedPtInfo.pointNumber;\n var ptNums = clickedPtInfo.pointNumbers;\n var ptNumsSet = ptNums.length > 0;\n var ptNumToTest = ptNumsSet ? ptNums[0] : ptNum;\n return trace.selectedpoints ? trace.selectedpoints.indexOf(ptNumToTest) > -1 : false;\n }\n function isOnlyThisBinSelected(searchTraces, clickedPtInfo) {\n var tracesWithSelectedPts = [];\n var searchInfo, trace, isSameTrace, i;\n for (i = 0; i < searchTraces.length; i++) {\n searchInfo = searchTraces[i];\n if (searchInfo.cd[0].trace.selectedpoints && searchInfo.cd[0].trace.selectedpoints.length > 0) {\n tracesWithSelectedPts.push(searchInfo);\n }\n }\n if (tracesWithSelectedPts.length === 1) {\n isSameTrace = tracesWithSelectedPts[0] === clickedPtInfo.searchInfo;\n if (isSameTrace) {\n trace = clickedPtInfo.searchInfo.cd[0].trace;\n if (trace.selectedpoints.length === clickedPtInfo.pointNumbers.length) {\n for (i = 0; i < clickedPtInfo.pointNumbers.length; i++) {\n if (trace.selectedpoints.indexOf(clickedPtInfo.pointNumbers[i]) < 0) {\n return false;\n }\n }\n return true;\n }\n }\n }\n return false;\n }\n function isOnlyOnePointSelected(searchTraces) {\n var len = 0;\n var searchInfo, trace, i;\n for (i = 0; i < searchTraces.length; i++) {\n searchInfo = searchTraces[i];\n trace = searchInfo.cd[0].trace;\n if (trace.selectedpoints) {\n if (trace.selectedpoints.length > 1) return false;\n len += trace.selectedpoints.length;\n if (len > 1) return false;\n }\n }\n return len === 1;\n }\n function updateSelectedState(gd, searchTraces, eventData) {\n var i;\n for (i = 0; i < searchTraces.length; i++) {\n var fullInputTrace = searchTraces[i].cd[0].trace._fullInput;\n var tracePreGUI = gd._fullLayout._tracePreGUI[fullInputTrace.uid] || {};\n if (tracePreGUI.selectedpoints === void 0) {\n tracePreGUI.selectedpoints = fullInputTrace._input.selectedpoints || null;\n }\n }\n var trace;\n if (eventData) {\n var pts = eventData.points || [];\n for (i = 0; i < searchTraces.length; i++) {\n trace = searchTraces[i].cd[0].trace;\n trace._input.selectedpoints = trace._fullInput.selectedpoints = [];\n if (trace._fullInput !== trace) trace.selectedpoints = [];\n }\n for (var k = 0; k < pts.length; k++) {\n var pt = pts[k];\n var data = pt.data;\n var fullData = pt.fullData;\n var pointIndex = pt.pointIndex;\n var pointIndices = pt.pointIndices;\n if (pointIndices) {\n [].push.apply(data.selectedpoints, pointIndices);\n if (trace._fullInput !== trace) {\n [].push.apply(fullData.selectedpoints, pointIndices);\n }\n } else {\n data.selectedpoints.push(pointIndex);\n if (trace._fullInput !== trace) {\n fullData.selectedpoints.push(pointIndex);\n }\n }\n }\n } else {\n for (i = 0; i < searchTraces.length; i++) {\n trace = searchTraces[i].cd[0].trace;\n delete trace.selectedpoints;\n delete trace._input.selectedpoints;\n if (trace._fullInput !== trace) {\n delete trace._fullInput.selectedpoints;\n }\n }\n }\n updateReglSelectedState(gd, searchTraces);\n }\n function updateReglSelectedState(gd, searchTraces) {\n var hasRegl = false;\n for (var i = 0; i < searchTraces.length; i++) {\n var searchInfo = searchTraces[i];\n var cd = searchInfo.cd;\n if (Registry.traceIs(cd[0].trace, \"regl\")) {\n hasRegl = true;\n }\n var _module = searchInfo._module;\n var fn = _module.styleOnSelect || _module.style;\n if (fn) {\n fn(gd, cd, cd[0].node3);\n if (cd[0].nodeRangePlot3) fn(gd, cd, cd[0].nodeRangePlot3);\n }\n }\n if (hasRegl) {\n clearGlCanvases(gd);\n redrawReglTraces(gd);\n }\n }\n function mergePolygons(list, poly, subtract) {\n var fn = subtract ? polybool.difference : polybool.union;\n var res = fn({\n regions: list\n }, {\n regions: [poly]\n });\n var allPolygons = res.regions.reverse();\n for (var i = 0; i < allPolygons.length; i++) {\n var polygon = allPolygons[i];\n polygon.subtract = getSubtract(polygon, allPolygons.slice(0, i));\n }\n return allPolygons;\n }\n function fillSelectionItem(selection, searchInfo) {\n if (Array.isArray(selection)) {\n var cd = searchInfo.cd;\n var trace = searchInfo.cd[0].trace;\n for (var i = 0; i < selection.length; i++) {\n selection[i] = makeEventData(selection[i], trace, cd);\n }\n }\n return selection;\n }\n function convertPoly(polygonsIn, isOpenMode) {\n var polygonsOut = [];\n for (var i = 0; i < polygonsIn.length; i++) {\n polygonsOut[i] = [];\n for (var j = 0; j < polygonsIn[i].length; j++) {\n polygonsOut[i][j] = [];\n polygonsOut[i][j][0] = j ? \"L\" : \"M\";\n for (var k = 0; k < polygonsIn[i][j].length; k++) {\n polygonsOut[i][j].push(\n polygonsIn[i][j][k]\n );\n }\n }\n if (!isOpenMode) {\n polygonsOut[i].push([\n \"Z\",\n polygonsOut[i][0][1],\n // initial x\n polygonsOut[i][0][2]\n // initial y\n ]);\n }\n }\n return polygonsOut;\n }\n function _doSelect(selectionTesters, searchTraces) {\n var allSelections = [];\n var thisSelection;\n var traceSelections = [];\n var traceSelection;\n for (var i = 0; i < searchTraces.length; i++) {\n var searchInfo = searchTraces[i];\n traceSelection = searchInfo._module.selectPoints(searchInfo, selectionTesters);\n traceSelections.push(traceSelection);\n thisSelection = fillSelectionItem(traceSelection, searchInfo);\n allSelections = allSelections.concat(thisSelection);\n }\n return allSelections;\n }\n function reselect(gd, mayEmitSelected, selectionTesters, searchTraces, dragOptions) {\n var hadSearchTraces = !!searchTraces;\n var plotinfo, xRef, yRef;\n if (dragOptions) {\n plotinfo = dragOptions.plotinfo;\n xRef = dragOptions.xaxes[0]._id;\n yRef = dragOptions.yaxes[0]._id;\n }\n var allSelections = [];\n var allSearchTraces = [];\n var layoutPolygons = getLayoutPolygons(gd);\n var fullLayout = gd._fullLayout;\n if (plotinfo) {\n var zoomLayer = fullLayout._zoomlayer;\n var mode = fullLayout.dragmode;\n var isDrawMode = drawMode(mode);\n var isSelectMode = selectMode(mode);\n if (isDrawMode || isSelectMode) {\n var xaxis = getFromId(gd, xRef, \"x\");\n var yaxis = getFromId(gd, yRef, \"y\");\n if (xaxis && yaxis) {\n var outlines = zoomLayer.selectAll(\".select-outline-\" + plotinfo.id);\n if (outlines && gd._fullLayout._outlining) {\n if (outlines.length) {\n var e = outlines[0][0];\n var d = e.getAttribute(\"d\");\n var outlinePolys = readPaths(d, gd, plotinfo);\n var draftPolygons = [];\n for (var u = 0; u < outlinePolys.length; u++) {\n var p = outlinePolys[u];\n var polygon = [];\n for (var t = 0; t < p.length; t++) {\n polygon.push([\n convert(xaxis, p[t][1]),\n convert(yaxis, p[t][2])\n ]);\n }\n polygon.xref = xRef;\n polygon.yref = yRef;\n polygon.subtract = getSubtract(polygon, draftPolygons);\n draftPolygons.push(polygon);\n }\n layoutPolygons = layoutPolygons.concat(draftPolygons);\n }\n }\n }\n }\n }\n var subplots = xRef && yRef ? [xRef + yRef] : fullLayout._subplots.cartesian;\n epmtySplomSelectionBatch(gd);\n var seenSplom = {};\n for (var i = 0; i < subplots.length; i++) {\n var subplot = subplots[i];\n var yAt = subplot.indexOf(\"y\");\n var _xRef = subplot.slice(0, yAt);\n var _yRef = subplot.slice(yAt);\n var _selectionTesters = xRef && yRef ? selectionTesters : void 0;\n _selectionTesters = addTester(layoutPolygons, _xRef, _yRef, _selectionTesters);\n if (_selectionTesters) {\n var _searchTraces = searchTraces;\n if (!hadSearchTraces) {\n var _xA = getFromId(gd, _xRef, \"x\");\n var _yA = getFromId(gd, _yRef, \"y\");\n _searchTraces = determineSearchTraces(\n gd,\n [_xA],\n [_yA],\n subplot\n );\n for (var w = 0; w < _searchTraces.length; w++) {\n var s = _searchTraces[w];\n var cd0 = s.cd[0];\n var trace = cd0.trace;\n if (s._module.name === \"scattergl\" && !cd0.t.xpx) {\n var x = trace.x;\n var y = trace.y;\n var len = trace._length;\n cd0.t.xpx = [];\n cd0.t.ypx = [];\n for (var j = 0; j < len; j++) {\n cd0.t.xpx[j] = _xA.c2p(x[j]);\n cd0.t.ypx[j] = _yA.c2p(y[j]);\n }\n }\n if (s._module.name === \"splom\") {\n if (!seenSplom[trace.uid]) {\n seenSplom[trace.uid] = true;\n }\n }\n }\n }\n var selection = _doSelect(_selectionTesters, _searchTraces);\n allSelections = allSelections.concat(selection);\n allSearchTraces = allSearchTraces.concat(_searchTraces);\n }\n }\n var eventData = { points: allSelections };\n updateSelectedState(gd, allSearchTraces, eventData);\n var clickmode = fullLayout.clickmode;\n var sendEvents = clickmode.indexOf(\"event\") > -1 && mayEmitSelected;\n if (!plotinfo && // get called from plot_api & plots\n mayEmitSelected) {\n var activePolygons = getLayoutPolygons(gd, true);\n if (activePolygons.length) {\n var xref = activePolygons[0].xref;\n var yref = activePolygons[0].yref;\n if (xref && yref) {\n var poly = castMultiPolygon(activePolygons);\n var fillRangeItems = makeFillRangeItems([\n getFromId(gd, xref, \"x\"),\n getFromId(gd, yref, \"y\")\n ]);\n fillRangeItems(eventData, poly);\n }\n }\n if (gd._fullLayout._noEmitSelectedAtStart) {\n gd._fullLayout._noEmitSelectedAtStart = false;\n } else {\n if (sendEvents) emitSelected(gd, eventData);\n }\n fullLayout._reselect = false;\n }\n if (!plotinfo && // get called from plot_api & plots\n fullLayout._deselect) {\n var deselect = fullLayout._deselect;\n xRef = deselect.xref;\n yRef = deselect.yref;\n if (!subplotSelected(xRef, yRef, allSearchTraces)) {\n deselectSubplot(gd, xRef, yRef, searchTraces);\n }\n if (sendEvents) {\n if (eventData.points.length) {\n emitSelected(gd, eventData);\n } else {\n emitDeselect(gd);\n }\n }\n fullLayout._deselect = false;\n }\n return {\n eventData,\n selectionTesters\n };\n }\n function epmtySplomSelectionBatch(gd) {\n var cd = gd.calcdata;\n if (!cd) return;\n for (var i = 0; i < cd.length; i++) {\n var cd0 = cd[i][0];\n var trace = cd0.trace;\n var splomScenes = gd._fullLayout._splomScenes;\n if (splomScenes) {\n var scene = splomScenes[trace.uid];\n if (scene) {\n scene.selectBatch = [];\n }\n }\n }\n }\n function subplotSelected(xRef, yRef, searchTraces) {\n for (var i = 0; i < searchTraces.length; i++) {\n var s = searchTraces[i];\n if (s.xaxis && s.xaxis._id === xRef && (s.yaxis && s.yaxis._id === yRef)) {\n return true;\n }\n }\n return false;\n }\n function deselectSubplot(gd, xRef, yRef, searchTraces) {\n searchTraces = determineSearchTraces(\n gd,\n [getFromId(gd, xRef, \"x\")],\n [getFromId(gd, yRef, \"y\")],\n xRef + yRef\n );\n for (var k = 0; k < searchTraces.length; k++) {\n var searchInfo = searchTraces[k];\n searchInfo._module.selectPoints(searchInfo, false);\n }\n updateSelectedState(gd, searchTraces);\n }\n function addTester(layoutPolygons, xRef, yRef, selectionTesters) {\n var mergedPolygons;\n for (var i = 0; i < layoutPolygons.length; i++) {\n var currentPolygon = layoutPolygons[i];\n if (xRef !== currentPolygon.xref || yRef !== currentPolygon.yref) continue;\n if (mergedPolygons) {\n var subtract = !!currentPolygon.subtract;\n mergedPolygons = mergePolygons(mergedPolygons, currentPolygon, subtract);\n selectionTesters = multiTester(mergedPolygons);\n } else {\n mergedPolygons = [currentPolygon];\n selectionTesters = polygonTester(currentPolygon);\n }\n }\n return selectionTesters;\n }\n function getLayoutPolygons(gd, onlyActiveOnes) {\n var allPolygons = [];\n var fullLayout = gd._fullLayout;\n var allSelections = fullLayout.selections;\n var len = allSelections.length;\n for (var i = 0; i < len; i++) {\n if (onlyActiveOnes && i !== fullLayout._activeSelectionIndex) continue;\n var selection = allSelections[i];\n if (!selection) continue;\n var xref = selection.xref;\n var yref = selection.yref;\n var xaxis = getFromId(gd, xref, \"x\");\n var yaxis = getFromId(gd, yref, \"y\");\n var xmin, xmax, ymin, ymax;\n var polygon;\n if (selection.type === \"rect\") {\n polygon = [];\n var x0 = convert(xaxis, selection.x0);\n var x1 = convert(xaxis, selection.x1);\n var y0 = convert(yaxis, selection.y0);\n var y1 = convert(yaxis, selection.y1);\n polygon = [[x0, y0], [x0, y1], [x1, y1], [x1, y0]];\n xmin = Math.min(x0, x1);\n xmax = Math.max(x0, x1);\n ymin = Math.min(y0, y1);\n ymax = Math.max(y0, y1);\n polygon.xmin = xmin;\n polygon.xmax = xmax;\n polygon.ymin = ymin;\n polygon.ymax = ymax;\n polygon.xref = xref;\n polygon.yref = yref;\n polygon.subtract = false;\n polygon.isRect = true;\n allPolygons.push(polygon);\n } else if (selection.type === \"path\") {\n var segments = selection.path.split(\"Z\");\n var multiPolygons = [];\n for (var j = 0; j < segments.length; j++) {\n var path = segments[j];\n if (!path) continue;\n path += \"Z\";\n var allX = shapeHelpers.extractPathCoords(path, shapeConstants.paramIsX, \"raw\");\n var allY = shapeHelpers.extractPathCoords(path, shapeConstants.paramIsY, \"raw\");\n xmin = Infinity;\n xmax = -Infinity;\n ymin = Infinity;\n ymax = -Infinity;\n polygon = [];\n for (var k = 0; k < allX.length; k++) {\n var x = convert(xaxis, allX[k]);\n var y = convert(yaxis, allY[k]);\n polygon.push([x, y]);\n xmin = Math.min(x, xmin);\n xmax = Math.max(x, xmax);\n ymin = Math.min(y, ymin);\n ymax = Math.max(y, ymax);\n }\n polygon.xmin = xmin;\n polygon.xmax = xmax;\n polygon.ymin = ymin;\n polygon.ymax = ymax;\n polygon.xref = xref;\n polygon.yref = yref;\n polygon.subtract = getSubtract(polygon, multiPolygons);\n multiPolygons.push(polygon);\n allPolygons.push(polygon);\n }\n }\n }\n return allPolygons;\n }\n function getSubtract(polygon, previousPolygons) {\n var subtract = false;\n for (var i = 0; i < previousPolygons.length; i++) {\n var previousPolygon = previousPolygons[i];\n for (var k = 0; k < polygon.length; k++) {\n if (pointInPolygon(polygon[k], previousPolygon)) {\n subtract = !subtract;\n break;\n }\n }\n }\n return subtract;\n }\n function convert(ax, d) {\n if (ax.type === \"date\") d = d.replace(\"_\", \" \");\n return ax.type === \"log\" ? ax.c2p(d) : ax.r2p(d, null, ax.calendar);\n }\n function castMultiPolygon(allPolygons) {\n var len = allPolygons.length;\n var p = [];\n for (var i = 0; i < len; i++) {\n var polygon = allPolygons[i];\n p = p.concat(polygon);\n p = p.concat([polygon[0]]);\n }\n return computeRectAndRanges(p);\n }\n function computeRectAndRanges(poly) {\n poly.isRect = poly.length === 5 && poly[0][0] === poly[4][0] && poly[0][1] === poly[4][1] && (poly[0][0] === poly[1][0] && poly[2][0] === poly[3][0] && poly[0][1] === poly[3][1] && poly[1][1] === poly[2][1]) || poly[0][1] === poly[1][1] && poly[2][1] === poly[3][1] && poly[0][0] === poly[3][0] && poly[1][0] === poly[2][0];\n if (poly.isRect) {\n poly.xmin = Math.min(poly[0][0], poly[2][0]);\n poly.xmax = Math.max(poly[0][0], poly[2][0]);\n poly.ymin = Math.min(poly[0][1], poly[2][1]);\n poly.ymax = Math.max(poly[0][1], poly[2][1]);\n }\n return poly;\n }\n function makeFillRangeItems(allAxes) {\n return function(eventData, poly) {\n var range;\n var lassoPoints;\n for (var i = 0; i < allAxes.length; i++) {\n var ax = allAxes[i];\n var id = ax._id;\n var axLetter = id.charAt(0);\n if (poly.isRect) {\n if (!range) range = {};\n var min = poly[axLetter + \"min\"];\n var max = poly[axLetter + \"max\"];\n if (min !== void 0 && max !== void 0) {\n range[id] = [\n p2r(ax, min),\n p2r(ax, max)\n ].sort(ascending);\n }\n } else {\n if (!lassoPoints) lassoPoints = {};\n lassoPoints[id] = poly.map(axValue(ax));\n }\n }\n if (range) {\n eventData.range = range;\n }\n if (lassoPoints) {\n eventData.lassoPoints = lassoPoints;\n }\n };\n }\n function getFillRangeItems(dragOptions) {\n var plotinfo = dragOptions.plotinfo;\n return plotinfo.fillRangeItems || // allow subplots (i.e. geo, mapbox, map, sankey) to override fillRangeItems routine\n makeFillRangeItems(dragOptions.xaxes.concat(dragOptions.yaxes));\n }\n function emitSelecting(gd, eventData) {\n gd.emit(\"plotly_selecting\", eventData);\n }\n function emitSelected(gd, eventData) {\n if (eventData) {\n eventData.selections = (gd.layout || {}).selections || [];\n }\n gd.emit(\"plotly_selected\", eventData);\n }\n function emitDeselect(gd) {\n gd.emit(\"plotly_deselect\", null);\n }\n module.exports = {\n reselect,\n prepSelect,\n clearOutline,\n clearSelectionsCache,\n selectOnClick\n };\n }\n });\n\n // src/components/annotations/arrow_paths.js\n var require_arrow_paths = __commonJS({\n \"src/components/annotations/arrow_paths.js\"(exports, module) {\n \"use strict\";\n module.exports = [\n // no arrow\n {\n path: \"\",\n backoff: 0\n },\n // wide with flat back\n {\n path: \"M-2.4,-3V3L0.6,0Z\",\n backoff: 0.6\n },\n // narrower with flat back\n {\n path: \"M-3.7,-2.5V2.5L1.3,0Z\",\n backoff: 1.3\n },\n // barbed\n {\n path: \"M-4.45,-3L-1.65,-0.2V0.2L-4.45,3L1.55,0Z\",\n backoff: 1.55\n },\n // wide line-drawn\n {\n path: \"M-2.2,-2.2L-0.2,-0.2V0.2L-2.2,2.2L-1.4,3L1.6,0L-1.4,-3Z\",\n backoff: 1.6\n },\n // narrower line-drawn\n {\n path: \"M-4.4,-2.1L-0.6,-0.2V0.2L-4.4,2.1L-4,3L2,0L-4,-3Z\",\n backoff: 2\n },\n // circle\n {\n path: \"M2,0A2,2 0 1,1 0,-2A2,2 0 0,1 2,0Z\",\n backoff: 0,\n noRotate: true\n },\n // square\n {\n path: \"M2,2V-2H-2V2Z\",\n backoff: 0,\n noRotate: true\n }\n ];\n }\n });\n\n // src/constants/axis_placeable_objects.js\n var require_axis_placeable_objects = __commonJS({\n \"src/constants/axis_placeable_objects.js\"(exports, module) {\n \"use strict\";\n module.exports = {\n axisRefDescription: function(axisname, lower, upper) {\n return [\n \"If set to a\",\n axisname,\n \"axis id (e.g. *\" + axisname + \"* or\",\n \"*\" + axisname + \"2*), the `\" + axisname + \"` position refers to a\",\n axisname,\n \"coordinate. If set to *paper*, the `\" + axisname + \"`\",\n \"position refers to the distance from the\",\n lower,\n \"of the plotting\",\n \"area in normalized coordinates where *0* (*1*) corresponds to the\",\n lower,\n \"(\" + upper + \"). If set to a\",\n axisname,\n \"axis ID followed by\",\n \"*domain* (separated by a space), the position behaves like for\",\n \"*paper*, but refers to the distance in fractions of the domain\",\n \"length from the\",\n lower,\n \"of the domain of that axis: e.g.,\",\n \"*\" + axisname + \"2 domain* refers to the domain of the second\",\n axisname,\n \" axis and a\",\n axisname,\n \"position of 0.5 refers to the\",\n \"point between the\",\n lower,\n \"and the\",\n upper,\n \"of the domain of the\",\n \"second\",\n axisname,\n \"axis.\"\n ].join(\" \");\n }\n };\n }\n });\n\n // src/components/annotations/attributes.js\n var require_attributes11 = __commonJS({\n \"src/components/annotations/attributes.js\"(exports, module) {\n \"use strict\";\n var ARROWPATHS = require_arrow_paths();\n var fontAttrs = require_font_attributes();\n var cartesianConstants = require_constants2();\n var templatedArray = require_plot_template().templatedArray;\n var axisPlaceableObjs = require_axis_placeable_objects();\n module.exports = templatedArray(\"annotation\", {\n visible: {\n valType: \"boolean\",\n dflt: true,\n editType: \"calc+arraydraw\"\n },\n text: {\n valType: \"string\",\n editType: \"calc+arraydraw\"\n },\n textangle: {\n valType: \"angle\",\n dflt: 0,\n editType: \"calc+arraydraw\"\n },\n font: fontAttrs({\n editType: \"calc+arraydraw\",\n colorEditType: \"arraydraw\"\n }),\n width: {\n valType: \"number\",\n min: 1,\n dflt: null,\n editType: \"calc+arraydraw\"\n },\n height: {\n valType: \"number\",\n min: 1,\n dflt: null,\n editType: \"calc+arraydraw\"\n },\n opacity: {\n valType: \"number\",\n min: 0,\n max: 1,\n dflt: 1,\n editType: \"arraydraw\"\n },\n align: {\n valType: \"enumerated\",\n values: [\"left\", \"center\", \"right\"],\n dflt: \"center\",\n editType: \"arraydraw\"\n },\n valign: {\n valType: \"enumerated\",\n values: [\"top\", \"middle\", \"bottom\"],\n dflt: \"middle\",\n editType: \"arraydraw\"\n },\n bgcolor: {\n valType: \"color\",\n dflt: \"rgba(0,0,0,0)\",\n editType: \"arraydraw\"\n },\n bordercolor: {\n valType: \"color\",\n dflt: \"rgba(0,0,0,0)\",\n editType: \"arraydraw\"\n },\n borderpad: {\n valType: \"number\",\n min: 0,\n dflt: 1,\n editType: \"calc+arraydraw\"\n },\n borderwidth: {\n valType: \"number\",\n min: 0,\n dflt: 1,\n editType: \"calc+arraydraw\"\n },\n // arrow\n showarrow: {\n valType: \"boolean\",\n dflt: true,\n editType: \"calc+arraydraw\"\n },\n arrowcolor: {\n valType: \"color\",\n editType: \"arraydraw\"\n },\n arrowhead: {\n valType: \"integer\",\n min: 0,\n max: ARROWPATHS.length,\n dflt: 1,\n editType: \"arraydraw\"\n },\n startarrowhead: {\n valType: \"integer\",\n min: 0,\n max: ARROWPATHS.length,\n dflt: 1,\n editType: \"arraydraw\"\n },\n arrowside: {\n valType: \"flaglist\",\n flags: [\"end\", \"start\"],\n extras: [\"none\"],\n dflt: \"end\",\n editType: \"arraydraw\"\n },\n arrowsize: {\n valType: \"number\",\n min: 0.3,\n dflt: 1,\n editType: \"calc+arraydraw\"\n },\n startarrowsize: {\n valType: \"number\",\n min: 0.3,\n dflt: 1,\n editType: \"calc+arraydraw\"\n },\n arrowwidth: {\n valType: \"number\",\n min: 0.1,\n editType: \"calc+arraydraw\"\n },\n standoff: {\n valType: \"number\",\n min: 0,\n dflt: 0,\n editType: \"calc+arraydraw\"\n },\n startstandoff: {\n valType: \"number\",\n min: 0,\n dflt: 0,\n editType: \"calc+arraydraw\"\n },\n ax: {\n valType: \"any\",\n editType: \"calc+arraydraw\"\n },\n ay: {\n valType: \"any\",\n editType: \"calc+arraydraw\"\n },\n axref: {\n valType: \"enumerated\",\n dflt: \"pixel\",\n values: [\n \"pixel\",\n cartesianConstants.idRegex.x.toString()\n ],\n editType: \"calc\"\n },\n ayref: {\n valType: \"enumerated\",\n dflt: \"pixel\",\n values: [\n \"pixel\",\n cartesianConstants.idRegex.y.toString()\n ],\n editType: \"calc\"\n },\n // positioning\n xref: {\n valType: \"enumerated\",\n values: [\n \"paper\",\n cartesianConstants.idRegex.x.toString()\n ],\n editType: \"calc\"\n },\n x: {\n valType: \"any\",\n editType: \"calc+arraydraw\"\n },\n xanchor: {\n valType: \"enumerated\",\n values: [\"auto\", \"left\", \"center\", \"right\"],\n dflt: \"auto\",\n editType: \"calc+arraydraw\"\n },\n xshift: {\n valType: \"number\",\n dflt: 0,\n editType: \"calc+arraydraw\"\n },\n yref: {\n valType: \"enumerated\",\n values: [\n \"paper\",\n cartesianConstants.idRegex.y.toString()\n ],\n editType: \"calc\"\n },\n y: {\n valType: \"any\",\n editType: \"calc+arraydraw\"\n },\n yanchor: {\n valType: \"enumerated\",\n values: [\"auto\", \"top\", \"middle\", \"bottom\"],\n dflt: \"auto\",\n editType: \"calc+arraydraw\"\n },\n yshift: {\n valType: \"number\",\n dflt: 0,\n editType: \"calc+arraydraw\"\n },\n clicktoshow: {\n valType: \"enumerated\",\n values: [false, \"onoff\", \"onout\"],\n dflt: false,\n editType: \"arraydraw\"\n },\n xclick: {\n valType: \"any\",\n editType: \"arraydraw\"\n },\n yclick: {\n valType: \"any\",\n editType: \"arraydraw\"\n },\n hovertext: {\n valType: \"string\",\n editType: \"arraydraw\"\n },\n hoverlabel: {\n bgcolor: {\n valType: \"color\",\n editType: \"arraydraw\"\n },\n bordercolor: {\n valType: \"color\",\n editType: \"arraydraw\"\n },\n font: fontAttrs({\n editType: \"arraydraw\"\n }),\n editType: \"arraydraw\"\n },\n captureevents: {\n valType: \"boolean\",\n editType: \"arraydraw\"\n },\n editType: \"calc\"\n });\n }\n });\n\n // src/traces/scatter/constants.js\n var require_constants8 = __commonJS({\n \"src/traces/scatter/constants.js\"(exports, module) {\n \"use strict\";\n module.exports = {\n PTS_LINESONLY: 20,\n // fixed parameters of clustering and clipping algorithms\n // fraction of clustering tolerance \"so close we don't even consider it a new point\"\n minTolerance: 0.2,\n // how fast does clustering tolerance increase as you get away from the visible region\n toleranceGrowth: 10,\n // number of viewport sizes away from the visible region\n // at which we clip all lines to the perimeter\n maxScreensAway: 20,\n eventDataKeys: []\n };\n }\n });\n\n // src/traces/scatter/fillcolor_attribute.js\n var require_fillcolor_attribute = __commonJS({\n \"src/traces/scatter/fillcolor_attribute.js\"(exports, module) {\n \"use strict\";\n module.exports = function makeFillcolorAttr(hasFillgradient) {\n return {\n valType: \"color\",\n editType: \"style\",\n anim: true\n };\n };\n }\n });\n\n // src/traces/scatter/attributes.js\n var require_attributes12 = __commonJS({\n \"src/traces/scatter/attributes.js\"(exports, module) {\n \"use strict\";\n var axisHoverFormat = require_axis_format_attributes().axisHoverFormat;\n var texttemplateAttrs = require_template_attributes().texttemplateAttrs;\n var hovertemplateAttrs = require_template_attributes().hovertemplateAttrs;\n var colorScaleAttrs = require_attributes8();\n var fontAttrs = require_font_attributes();\n var dash = require_attributes4().dash;\n var pattern = require_attributes4().pattern;\n var Drawing = require_drawing();\n var constants = require_constants8();\n var extendFlat = require_extend().extendFlat;\n var makeFillcolorAttr = require_fillcolor_attribute();\n function axisPeriod(axis) {\n return {\n valType: \"any\",\n dflt: 0,\n editType: \"calc\"\n };\n }\n function axisPeriod0(axis) {\n return {\n valType: \"any\",\n editType: \"calc\"\n };\n }\n function axisPeriodAlignment(axis) {\n return {\n valType: \"enumerated\",\n values: [\n \"start\",\n \"middle\",\n \"end\"\n ],\n dflt: \"middle\",\n editType: \"calc\"\n };\n }\n module.exports = {\n x: {\n valType: \"data_array\",\n editType: \"calc+clearAxisTypes\",\n anim: true\n },\n x0: {\n valType: \"any\",\n dflt: 0,\n editType: \"calc+clearAxisTypes\",\n anim: true\n },\n dx: {\n valType: \"number\",\n dflt: 1,\n editType: \"calc\",\n anim: true\n },\n y: {\n valType: \"data_array\",\n editType: \"calc+clearAxisTypes\",\n anim: true\n },\n y0: {\n valType: \"any\",\n dflt: 0,\n editType: \"calc+clearAxisTypes\",\n anim: true\n },\n dy: {\n valType: \"number\",\n dflt: 1,\n editType: \"calc\",\n anim: true\n },\n xperiod: axisPeriod(\"x\"),\n yperiod: axisPeriod(\"y\"),\n xperiod0: axisPeriod0(\"x0\"),\n yperiod0: axisPeriod0(\"y0\"),\n xperiodalignment: axisPeriodAlignment(\"x\"),\n yperiodalignment: axisPeriodAlignment(\"y\"),\n xhoverformat: axisHoverFormat(\"x\"),\n yhoverformat: axisHoverFormat(\"y\"),\n offsetgroup: {\n valType: \"string\",\n dflt: \"\",\n editType: \"calc\"\n },\n alignmentgroup: {\n valType: \"string\",\n dflt: \"\",\n editType: \"calc\"\n },\n stackgroup: {\n valType: \"string\",\n dflt: \"\",\n editType: \"calc\"\n },\n orientation: {\n valType: \"enumerated\",\n values: [\"v\", \"h\"],\n editType: \"calc\"\n },\n groupnorm: {\n valType: \"enumerated\",\n values: [\"\", \"fraction\", \"percent\"],\n dflt: \"\",\n editType: \"calc\"\n },\n stackgaps: {\n valType: \"enumerated\",\n values: [\"infer zero\", \"interpolate\"],\n dflt: \"infer zero\",\n editType: \"calc\"\n },\n text: {\n valType: \"string\",\n dflt: \"\",\n arrayOk: true,\n editType: \"calc\"\n },\n texttemplate: texttemplateAttrs({}, {}),\n hovertext: {\n valType: \"string\",\n dflt: \"\",\n arrayOk: true,\n editType: \"style\"\n },\n mode: {\n valType: \"flaglist\",\n flags: [\"lines\", \"markers\", \"text\"],\n extras: [\"none\"],\n editType: \"calc\"\n },\n hoveron: {\n valType: \"flaglist\",\n flags: [\"points\", \"fills\"],\n editType: \"style\"\n },\n hovertemplate: hovertemplateAttrs({}, {\n keys: constants.eventDataKeys\n }),\n line: {\n color: {\n valType: \"color\",\n editType: \"style\",\n anim: true\n },\n width: {\n valType: \"number\",\n min: 0,\n dflt: 2,\n editType: \"style\",\n anim: true\n },\n shape: {\n valType: \"enumerated\",\n values: [\"linear\", \"spline\", \"hv\", \"vh\", \"hvh\", \"vhv\"],\n dflt: \"linear\",\n editType: \"plot\"\n },\n smoothing: {\n valType: \"number\",\n min: 0,\n max: 1.3,\n dflt: 1,\n editType: \"plot\"\n },\n dash: extendFlat({}, dash, { editType: \"style\" }),\n backoff: {\n // we want to have a similar option for the start of the line\n valType: \"number\",\n min: 0,\n dflt: \"auto\",\n arrayOk: true,\n editType: \"plot\"\n },\n simplify: {\n valType: \"boolean\",\n dflt: true,\n editType: \"plot\"\n },\n editType: \"plot\"\n },\n connectgaps: {\n valType: \"boolean\",\n dflt: false,\n editType: \"calc\"\n },\n cliponaxis: {\n valType: \"boolean\",\n dflt: true,\n editType: \"plot\"\n },\n fill: {\n valType: \"enumerated\",\n values: [\"none\", \"tozeroy\", \"tozerox\", \"tonexty\", \"tonextx\", \"toself\", \"tonext\"],\n editType: \"calc\"\n },\n fillcolor: makeFillcolorAttr(true),\n fillgradient: extendFlat({\n type: {\n valType: \"enumerated\",\n values: [\"radial\", \"horizontal\", \"vertical\", \"none\"],\n dflt: \"none\",\n editType: \"calc\"\n },\n start: {\n valType: \"number\",\n editType: \"calc\"\n },\n stop: {\n valType: \"number\",\n editType: \"calc\"\n },\n colorscale: {\n valType: \"colorscale\",\n editType: \"style\"\n },\n editType: \"calc\"\n }),\n fillpattern: pattern,\n marker: extendFlat(\n {\n symbol: {\n valType: \"enumerated\",\n values: Drawing.symbolList,\n dflt: \"circle\",\n arrayOk: true,\n editType: \"style\"\n },\n opacity: {\n valType: \"number\",\n min: 0,\n max: 1,\n arrayOk: true,\n editType: \"style\",\n anim: true\n },\n angle: {\n valType: \"angle\",\n dflt: 0,\n arrayOk: true,\n editType: \"plot\",\n anim: false\n // TODO: possibly set to true in future\n },\n angleref: {\n valType: \"enumerated\",\n values: [\"previous\", \"up\"],\n dflt: \"up\",\n editType: \"plot\",\n anim: false\n },\n standoff: {\n valType: \"number\",\n min: 0,\n dflt: 0,\n arrayOk: true,\n editType: \"plot\",\n anim: true\n },\n size: {\n valType: \"number\",\n min: 0,\n dflt: 6,\n arrayOk: true,\n editType: \"calc\",\n anim: true\n },\n maxdisplayed: {\n valType: \"number\",\n min: 0,\n dflt: 0,\n editType: \"plot\"\n },\n sizeref: {\n valType: \"number\",\n dflt: 1,\n editType: \"calc\"\n },\n sizemin: {\n valType: \"number\",\n min: 0,\n dflt: 0,\n editType: \"calc\"\n },\n sizemode: {\n valType: \"enumerated\",\n values: [\"diameter\", \"area\"],\n dflt: \"diameter\",\n editType: \"calc\"\n },\n line: extendFlat(\n {\n width: {\n valType: \"number\",\n min: 0,\n arrayOk: true,\n editType: \"style\",\n anim: true\n },\n editType: \"calc\"\n },\n colorScaleAttrs(\"marker.line\", { anim: true })\n ),\n gradient: {\n type: {\n valType: \"enumerated\",\n values: [\"radial\", \"horizontal\", \"vertical\", \"none\"],\n arrayOk: true,\n dflt: \"none\",\n editType: \"calc\"\n },\n color: {\n valType: \"color\",\n arrayOk: true,\n editType: \"calc\"\n },\n editType: \"calc\"\n },\n editType: \"calc\"\n },\n colorScaleAttrs(\"marker\", { anim: true })\n ),\n selected: {\n marker: {\n opacity: {\n valType: \"number\",\n min: 0,\n max: 1,\n editType: \"style\"\n },\n color: {\n valType: \"color\",\n editType: \"style\"\n },\n size: {\n valType: \"number\",\n min: 0,\n editType: \"style\"\n },\n editType: \"style\"\n },\n textfont: {\n color: {\n valType: \"color\",\n editType: \"style\"\n },\n editType: \"style\"\n },\n editType: \"style\"\n },\n unselected: {\n marker: {\n opacity: {\n valType: \"number\",\n min: 0,\n max: 1,\n editType: \"style\"\n },\n color: {\n valType: \"color\",\n editType: \"style\"\n },\n size: {\n valType: \"number\",\n min: 0,\n editType: \"style\"\n },\n editType: \"style\"\n },\n textfont: {\n color: {\n valType: \"color\",\n editType: \"style\"\n },\n editType: \"style\"\n },\n editType: \"style\"\n },\n textposition: {\n valType: \"enumerated\",\n values: [\n \"top left\",\n \"top center\",\n \"top right\",\n \"middle left\",\n \"middle center\",\n \"middle right\",\n \"bottom left\",\n \"bottom center\",\n \"bottom right\"\n ],\n dflt: \"middle center\",\n arrayOk: true,\n editType: \"calc\"\n },\n textfont: fontAttrs({\n editType: \"calc\",\n colorEditType: \"style\",\n arrayOk: true\n }),\n zorder: {\n valType: \"integer\",\n dflt: 0,\n editType: \"plot\"\n }\n };\n }\n });\n\n // src/components/selections/attributes.js\n var require_attributes13 = __commonJS({\n \"src/components/selections/attributes.js\"(exports, module) {\n \"use strict\";\n var annAttrs = require_attributes11();\n var scatterLineAttrs = require_attributes12().line;\n var dash = require_attributes4().dash;\n var extendFlat = require_extend().extendFlat;\n var overrideAll = require_edit_types().overrideAll;\n var templatedArray = require_plot_template().templatedArray;\n var axisPlaceableObjs = require_axis_placeable_objects();\n module.exports = overrideAll(templatedArray(\"selection\", {\n type: {\n valType: \"enumerated\",\n values: [\"rect\", \"path\"]\n },\n xref: extendFlat({}, annAttrs.xref, {}),\n yref: extendFlat({}, annAttrs.yref, {}),\n x0: {\n valType: \"any\"\n },\n x1: {\n valType: \"any\"\n },\n y0: {\n valType: \"any\"\n },\n y1: {\n valType: \"any\"\n },\n path: {\n valType: \"string\",\n editType: \"arraydraw\"\n },\n opacity: {\n valType: \"number\",\n min: 0,\n max: 1,\n dflt: 0.7,\n editType: \"arraydraw\"\n },\n line: {\n color: scatterLineAttrs.color,\n width: extendFlat({}, scatterLineAttrs.width, {\n min: 1,\n dflt: 1\n }),\n dash: extendFlat({}, dash, {\n dflt: \"dot\"\n })\n }\n }), \"arraydraw\", \"from-root\");\n }\n });\n\n // src/components/selections/defaults.js\n var require_defaults6 = __commonJS({\n \"src/components/selections/defaults.js\"(exports, module) {\n \"use strict\";\n var Lib = require_lib();\n var Axes = require_axes();\n var handleArrayContainerDefaults = require_array_container_defaults();\n var attributes = require_attributes13();\n var helpers = require_helpers8();\n module.exports = function supplyLayoutDefaults(layoutIn, layoutOut) {\n handleArrayContainerDefaults(layoutIn, layoutOut, {\n name: \"selections\",\n handleItemDefaults: handleSelectionDefaults\n });\n var selections = layoutOut.selections;\n for (var i = 0; i < selections.length; i++) {\n var selection = selections[i];\n if (!selection) continue;\n if (selection.path === void 0) {\n if (selection.x0 === void 0 || selection.x1 === void 0 || selection.y0 === void 0 || selection.y1 === void 0) {\n layoutOut.selections[i] = null;\n }\n }\n }\n };\n function handleSelectionDefaults(selectionIn, selectionOut, fullLayout) {\n function coerce(attr, dflt) {\n return Lib.coerce(selectionIn, selectionOut, attributes, attr, dflt);\n }\n var path = coerce(\"path\");\n var dfltType = path ? \"path\" : \"rect\";\n var selectionType = coerce(\"type\", dfltType);\n var noPath = selectionType !== \"path\";\n if (noPath) delete selectionOut.path;\n coerce(\"opacity\");\n coerce(\"line.color\");\n coerce(\"line.width\");\n coerce(\"line.dash\");\n var axLetters = [\"x\", \"y\"];\n for (var i = 0; i < 2; i++) {\n var axLetter = axLetters[i];\n var gdMock = { _fullLayout: fullLayout };\n var ax;\n var pos2r;\n var r2pos;\n var axRef = Axes.coerceRef(selectionIn, selectionOut, gdMock, axLetter);\n ax = Axes.getFromId(gdMock, axRef);\n ax._selectionIndices.push(selectionOut._index);\n r2pos = helpers.rangeToShapePosition(ax);\n pos2r = helpers.shapePositionToRange(ax);\n if (noPath) {\n var attr0 = axLetter + \"0\";\n var attr1 = axLetter + \"1\";\n var in0 = selectionIn[attr0];\n var in1 = selectionIn[attr1];\n selectionIn[attr0] = pos2r(selectionIn[attr0], true);\n selectionIn[attr1] = pos2r(selectionIn[attr1], true);\n Axes.coercePosition(selectionOut, gdMock, coerce, axRef, attr0);\n Axes.coercePosition(selectionOut, gdMock, coerce, axRef, attr1);\n var p0 = selectionOut[attr0];\n var p1 = selectionOut[attr1];\n if (p0 !== void 0 && p1 !== void 0) {\n selectionOut[attr0] = r2pos(p0);\n selectionOut[attr1] = r2pos(p1);\n selectionIn[attr0] = in0;\n selectionIn[attr1] = in1;\n }\n }\n }\n if (noPath) {\n Lib.noneOrAll(selectionIn, selectionOut, [\"x0\", \"x1\", \"y0\", \"y1\"]);\n }\n }\n }\n });\n\n // src/components/selections/draw_newselection/defaults.js\n var require_defaults7 = __commonJS({\n \"src/components/selections/draw_newselection/defaults.js\"(exports, module) {\n \"use strict\";\n module.exports = function supplyDrawNewSelectionDefaults(layoutIn, layoutOut, coerce) {\n coerce(\"newselection.mode\");\n var newselectionLineWidth = coerce(\"newselection.line.width\");\n if (newselectionLineWidth) {\n coerce(\"newselection.line.color\");\n coerce(\"newselection.line.dash\");\n }\n coerce(\"activeselection.fillcolor\");\n coerce(\"activeselection.opacity\");\n };\n }\n });\n\n // src/plots/cartesian/include_components.js\n var require_include_components = __commonJS({\n \"src/plots/cartesian/include_components.js\"(exports, module) {\n \"use strict\";\n var Registry = require_registry();\n var Lib = require_lib();\n var axisIds = require_axis_ids();\n module.exports = function makeIncludeComponents(containerArrayName) {\n return function includeComponents(layoutIn, layoutOut) {\n var array = layoutIn[containerArrayName];\n if (!Array.isArray(array)) return;\n var Cartesian = Registry.subplotsRegistry.cartesian;\n var idRegex = Cartesian.idRegex;\n var subplots = layoutOut._subplots;\n var xaList = subplots.xaxis;\n var yaList = subplots.yaxis;\n var cartesianList = subplots.cartesian;\n var hasCartesian = layoutOut._has(\"cartesian\");\n for (var i = 0; i < array.length; i++) {\n var itemi = array[i];\n if (!Lib.isPlainObject(itemi)) continue;\n var xref = axisIds.cleanId(itemi.xref, \"x\", false);\n var yref = axisIds.cleanId(itemi.yref, \"y\", false);\n var hasXref = idRegex.x.test(xref);\n var hasYref = idRegex.y.test(yref);\n if (hasXref || hasYref) {\n if (!hasCartesian) Lib.pushUnique(layoutOut._basePlotModules, Cartesian);\n var newAxis = false;\n if (hasXref && xaList.indexOf(xref) === -1) {\n xaList.push(xref);\n newAxis = true;\n }\n if (hasYref && yaList.indexOf(yref) === -1) {\n yaList.push(yref);\n newAxis = true;\n }\n if (newAxis && hasXref && hasYref) {\n cartesianList.push(xref + yref);\n }\n }\n }\n };\n };\n }\n });\n\n // src/components/selections/index.js\n var require_selections = __commonJS({\n \"src/components/selections/index.js\"(exports, module) {\n \"use strict\";\n var drawModule = require_draw3();\n var select = require_select();\n module.exports = {\n moduleType: \"component\",\n name: \"selections\",\n layoutAttributes: require_attributes13(),\n supplyLayoutDefaults: require_defaults6(),\n supplyDrawNewSelectionDefaults: require_defaults7(),\n includeBasePlot: require_include_components()(\"selections\"),\n draw: drawModule.draw,\n drawOne: drawModule.drawOne,\n reselect: select.reselect,\n prepSelect: select.prepSelect,\n clearOutline: select.clearOutline,\n clearSelectionsCache: select.clearSelectionsCache,\n selectOnClick: select.selectOnClick\n };\n }\n });\n\n // src/plots/cartesian/dragbox.js\n var require_dragbox = __commonJS({\n \"src/plots/cartesian/dragbox.js\"(exports, module) {\n \"use strict\";\n var d3 = require_d3();\n var Lib = require_lib();\n var numberFormat = Lib.numberFormat;\n var tinycolor = require_tinycolor();\n var supportsPassive = require_has_passive_events();\n var Registry = require_registry();\n var strTranslate = Lib.strTranslate;\n var svgTextUtils = require_svg_text_utils();\n var Color = require_color();\n var Drawing = require_drawing();\n var Fx = require_fx();\n var Axes = require_axes();\n var setCursor = require_setcursor();\n var dragElement = require_dragelement();\n var helpers = require_helpers5();\n var selectingOrDrawing = helpers.selectingOrDrawing;\n var freeMode = helpers.freeMode;\n var FROM_TL = require_alignment().FROM_TL;\n var clearGlCanvases = require_clear_gl_canvases();\n var redrawReglTraces = require_subroutines().redrawReglTraces;\n var Plots = require_plots();\n var getFromId = require_axis_ids().getFromId;\n var prepSelect = require_selections().prepSelect;\n var clearOutline = require_selections().clearOutline;\n var selectOnClick = require_selections().selectOnClick;\n var scaleZoom = require_scale_zoom();\n var constants = require_constants2();\n var MINDRAG = constants.MINDRAG;\n var MINZOOM = constants.MINZOOM;\n var SHOWZOOMOUTTIP = true;\n function makeDragBox(gd, plotinfo, x, y, w, h, ns, ew) {\n var zoomlayer = gd._fullLayout._zoomlayer;\n var isMainDrag = ns + ew === \"nsew\";\n var singleEnd = (ns + ew).length === 1;\n var xa0, ya0;\n var xaHash, yaHash;\n var xaxes, yaxes;\n var xs, ys;\n var pw, ph;\n var links;\n var matches;\n var xActive, yActive;\n var allFixedRanges;\n var editX, editY;\n var hasScatterGl, hasSplom, hasSVG;\n var updates;\n var scaleX;\n var scaleY;\n x += plotinfo.yaxis._shift;\n function recomputeAxisLists() {\n xa0 = plotinfo.xaxis;\n ya0 = plotinfo.yaxis;\n pw = xa0._length;\n ph = ya0._length;\n xs = xa0._offset;\n ys = ya0._offset;\n xaHash = {};\n xaHash[xa0._id] = xa0;\n yaHash = {};\n yaHash[ya0._id] = ya0;\n if (ns && ew) {\n var overlays = plotinfo.overlays;\n for (var i = 0; i < overlays.length; i++) {\n var xa = overlays[i].xaxis;\n xaHash[xa._id] = xa;\n var ya = overlays[i].yaxis;\n yaHash[ya._id] = ya;\n }\n }\n xaxes = hashValues(xaHash);\n yaxes = hashValues(yaHash);\n xActive = isDirectionActive(xaxes, ew);\n yActive = isDirectionActive(yaxes, ns);\n allFixedRanges = !yActive && !xActive;\n matches = calcLinks(gd, gd._fullLayout._axisMatchGroups, xaHash, yaHash);\n links = calcLinks(gd, gd._fullLayout._axisConstraintGroups, xaHash, yaHash, matches);\n var spConstrained = links.isSubplotConstrained || matches.isSubplotConstrained;\n editX = ew || spConstrained;\n editY = ns || spConstrained;\n var fullLayout = gd._fullLayout;\n hasScatterGl = fullLayout._has(\"scattergl\");\n hasSplom = fullLayout._has(\"splom\");\n hasSVG = fullLayout._has(\"svg\");\n }\n recomputeAxisLists();\n var cursor = getDragCursor(yActive + xActive, gd._fullLayout.dragmode, isMainDrag);\n var dragger = makeRectDragger(plotinfo, ns + ew + \"drag\", cursor, x, y, w, h);\n if (allFixedRanges && !isMainDrag) {\n dragger.onmousedown = null;\n dragger.style.pointerEvents = \"none\";\n return dragger;\n }\n var dragOptions = {\n element: dragger,\n gd,\n plotinfo\n };\n dragOptions.prepFn = function(e, startX, startY) {\n var dragModePrev = dragOptions.dragmode;\n var dragModeNow = gd._fullLayout.dragmode;\n if (dragModeNow !== dragModePrev) {\n dragOptions.dragmode = dragModeNow;\n }\n recomputeAxisLists();\n scaleX = gd._fullLayout._invScaleX;\n scaleY = gd._fullLayout._invScaleY;\n if (!allFixedRanges) {\n if (isMainDrag) {\n if (e.shiftKey) {\n if (dragModeNow === \"pan\") dragModeNow = \"zoom\";\n else if (!selectingOrDrawing(dragModeNow)) dragModeNow = \"pan\";\n } else if (e.ctrlKey) {\n dragModeNow = \"pan\";\n }\n } else {\n dragModeNow = \"pan\";\n }\n }\n if (freeMode(dragModeNow)) dragOptions.minDrag = 1;\n else dragOptions.minDrag = void 0;\n if (selectingOrDrawing(dragModeNow)) {\n dragOptions.xaxes = xaxes;\n dragOptions.yaxes = yaxes;\n prepSelect(e, startX, startY, dragOptions, dragModeNow);\n } else {\n dragOptions.clickFn = clickFn;\n if (selectingOrDrawing(dragModePrev)) {\n clearAndResetSelect();\n }\n if (!allFixedRanges) {\n if (dragModeNow === \"zoom\") {\n dragOptions.moveFn = zoomMove;\n dragOptions.doneFn = zoomDone;\n dragOptions.minDrag = 1;\n zoomPrep(e, startX, startY);\n } else if (dragModeNow === \"pan\") {\n dragOptions.moveFn = plotDrag;\n dragOptions.doneFn = dragTail;\n }\n }\n }\n gd._fullLayout._redrag = function() {\n var dragDataNow = gd._dragdata;\n if (dragDataNow && dragDataNow.element === dragger) {\n var dragModeNow2 = gd._fullLayout.dragmode;\n if (!selectingOrDrawing(dragModeNow2)) {\n recomputeAxisLists();\n updateSubplots([0, 0, pw, ph]);\n dragOptions.moveFn(dragDataNow.dx, dragDataNow.dy);\n }\n }\n };\n };\n function clearAndResetSelect() {\n dragOptions.plotinfo.selection = false;\n clearOutline(gd);\n }\n function clickFn(numClicks, evt) {\n var gd2 = dragOptions.gd;\n if (gd2._fullLayout._activeShapeIndex >= 0) {\n gd2._fullLayout._deactivateShape(gd2);\n return;\n }\n var clickmode = gd2._fullLayout.clickmode;\n removeZoombox(gd2);\n if (numClicks === 2 && !singleEnd) doubleClick();\n if (isMainDrag) {\n if (clickmode.indexOf(\"select\") > -1) {\n selectOnClick(evt, gd2, xaxes, yaxes, plotinfo.id, dragOptions);\n }\n if (clickmode.indexOf(\"event\") > -1) {\n Fx.click(gd2, evt, plotinfo.id);\n }\n } else if (numClicks === 1 && singleEnd) {\n var ax = ns ? ya0 : xa0;\n var end = ns === \"s\" || ew === \"w\" ? 0 : 1;\n var attrStr = ax._name + \".range[\" + end + \"]\";\n var initialText = getEndText(ax, end);\n var hAlign = \"left\";\n var vAlign = \"middle\";\n if (ax.fixedrange) return;\n if (ns) {\n vAlign = ns === \"n\" ? \"top\" : \"bottom\";\n if (ax.side === \"right\") hAlign = \"right\";\n } else if (ew === \"e\") hAlign = \"right\";\n if (gd2._context.showAxisRangeEntryBoxes) {\n d3.select(dragger).call(svgTextUtils.makeEditable, {\n gd: gd2,\n immediate: true,\n background: gd2._fullLayout.paper_bgcolor,\n text: String(initialText),\n fill: ax.tickfont ? ax.tickfont.color : \"#444\",\n horizontalAlign: hAlign,\n verticalAlign: vAlign\n }).on(\"edit\", function(text) {\n var v = ax.d2r(text);\n if (v !== void 0) {\n Registry.call(\"_guiRelayout\", gd2, attrStr, v);\n }\n });\n }\n }\n }\n dragElement.init(dragOptions);\n var x0, y0;\n var box;\n var lum;\n var path0;\n var dimmed;\n var zoomMode;\n var zb;\n var corners;\n var zoomDragged;\n function zoomPrep(e, startX, startY) {\n var dragBBox = dragger.getBoundingClientRect();\n x0 = startX - dragBBox.left;\n y0 = startY - dragBBox.top;\n gd._fullLayout._calcInverseTransform(gd);\n var transformedCoords = Lib.apply3DTransform(gd._fullLayout._invTransform)(x0, y0);\n x0 = transformedCoords[0];\n y0 = transformedCoords[1];\n box = { l: x0, r: x0, w: 0, t: y0, b: y0, h: 0 };\n lum = gd._hmpixcount ? gd._hmlumcount / gd._hmpixcount : tinycolor(gd._fullLayout.plot_bgcolor).getLuminance();\n path0 = \"M0,0H\" + pw + \"V\" + ph + \"H0V0\";\n dimmed = false;\n zoomMode = \"xy\";\n zoomDragged = false;\n zb = makeZoombox(zoomlayer, lum, xs, ys, path0);\n corners = makeCorners(zoomlayer, xs, ys);\n }\n function zoomMove(dx0, dy0) {\n if (gd._transitioningWithDuration) {\n return false;\n }\n var x1 = Math.max(0, Math.min(pw, scaleX * dx0 + x0));\n var y1 = Math.max(0, Math.min(ph, scaleY * dy0 + y0));\n var dx = Math.abs(x1 - x0);\n var dy = Math.abs(y1 - y0);\n box.l = Math.min(x0, x1);\n box.r = Math.max(x0, x1);\n box.t = Math.min(y0, y1);\n box.b = Math.max(y0, y1);\n function noZoom() {\n zoomMode = \"\";\n box.r = box.l;\n box.t = box.b;\n corners.attr(\"d\", \"M0,0Z\");\n }\n if (links.isSubplotConstrained) {\n if (dx > MINZOOM || dy > MINZOOM) {\n zoomMode = \"xy\";\n if (dx / pw > dy / ph) {\n dy = dx * ph / pw;\n if (y0 > y1) box.t = y0 - dy;\n else box.b = y0 + dy;\n } else {\n dx = dy * pw / ph;\n if (x0 > x1) box.l = x0 - dx;\n else box.r = x0 + dx;\n }\n corners.attr(\"d\", xyCorners(box));\n } else {\n noZoom();\n }\n } else if (matches.isSubplotConstrained) {\n if (dx > MINZOOM || dy > MINZOOM) {\n zoomMode = \"xy\";\n var r0 = Math.min(box.l / pw, (ph - box.b) / ph);\n var r1 = Math.max(box.r / pw, (ph - box.t) / ph);\n box.l = r0 * pw;\n box.r = r1 * pw;\n box.b = (1 - r0) * ph;\n box.t = (1 - r1) * ph;\n corners.attr(\"d\", xyCorners(box));\n } else {\n noZoom();\n }\n } else if (!yActive || dy < Math.min(Math.max(dx * 0.6, MINDRAG), MINZOOM)) {\n if (dx < MINDRAG || !xActive) {\n noZoom();\n } else {\n box.t = 0;\n box.b = ph;\n zoomMode = \"x\";\n corners.attr(\"d\", xCorners(box, y0));\n }\n } else if (!xActive || dx < Math.min(dy * 0.6, MINZOOM)) {\n box.l = 0;\n box.r = pw;\n zoomMode = \"y\";\n corners.attr(\"d\", yCorners(box, x0));\n } else {\n zoomMode = \"xy\";\n corners.attr(\"d\", xyCorners(box));\n }\n box.w = box.r - box.l;\n box.h = box.b - box.t;\n if (zoomMode) zoomDragged = true;\n gd._dragged = zoomDragged;\n updateZoombox(zb, corners, box, path0, dimmed, lum);\n computeZoomUpdates();\n gd.emit(\"plotly_relayouting\", updates);\n dimmed = true;\n }\n function computeZoomUpdates() {\n updates = {};\n if (zoomMode === \"xy\" || zoomMode === \"x\") {\n zoomAxRanges(xaxes, box.l / pw, box.r / pw, updates, links.xaxes);\n updateMatchedAxRange(\"x\", updates);\n }\n if (zoomMode === \"xy\" || zoomMode === \"y\") {\n zoomAxRanges(yaxes, (ph - box.b) / ph, (ph - box.t) / ph, updates, links.yaxes);\n updateMatchedAxRange(\"y\", updates);\n }\n }\n function zoomDone() {\n computeZoomUpdates();\n removeZoombox(gd);\n dragTail();\n showDoubleClickNotifier(gd);\n }\n var scrollViewBox = [0, 0, pw, ph];\n var redrawTimer = null;\n var REDRAWDELAY = constants.REDRAWDELAY;\n var mainplot = plotinfo.mainplot ? gd._fullLayout._plots[plotinfo.mainplot] : plotinfo;\n function zoomWheel(e) {\n if (!gd._context._scrollZoom.cartesian && !gd._fullLayout._enablescrollzoom) {\n return;\n }\n clearAndResetSelect();\n if (gd._transitioningWithDuration) {\n e.preventDefault();\n e.stopPropagation();\n return;\n }\n recomputeAxisLists();\n clearTimeout(redrawTimer);\n var wheelDelta = -e.deltaY;\n if (!isFinite(wheelDelta)) wheelDelta = e.wheelDelta / 10;\n if (!isFinite(wheelDelta)) {\n Lib.log(\"Did not find wheel motion attributes: \", e);\n return;\n }\n var zoom = Math.exp(-Math.min(Math.max(wheelDelta, -20), 20) / 200);\n var gbb = mainplot.draglayer.select(\".nsewdrag\").node().getBoundingClientRect();\n var xfrac = (e.clientX - gbb.left) / gbb.width;\n var yfrac = (gbb.bottom - e.clientY) / gbb.height;\n var i;\n function zoomWheelOneAxis(ax, centerFraction, zoom2) {\n if (ax.fixedrange) return;\n var axRange = Lib.simpleMap(ax.range, ax.r2l);\n var v0 = axRange[0] + (axRange[1] - axRange[0]) * centerFraction;\n function doZoom(v) {\n return ax.l2r(v0 + (v - v0) * zoom2);\n }\n ax.range = axRange.map(doZoom);\n }\n if (editX) {\n if (!ew) xfrac = 0.5;\n for (i = 0; i < xaxes.length; i++) {\n zoomWheelOneAxis(xaxes[i], xfrac, zoom);\n }\n updateMatchedAxRange(\"x\");\n scrollViewBox[2] *= zoom;\n scrollViewBox[0] += scrollViewBox[2] * xfrac * (1 / zoom - 1);\n }\n if (editY) {\n if (!ns) yfrac = 0.5;\n for (i = 0; i < yaxes.length; i++) {\n zoomWheelOneAxis(yaxes[i], yfrac, zoom);\n }\n updateMatchedAxRange(\"y\");\n scrollViewBox[3] *= zoom;\n scrollViewBox[1] += scrollViewBox[3] * (1 - yfrac) * (1 / zoom - 1);\n }\n updateSubplots(scrollViewBox);\n ticksAndAnnotations();\n gd.emit(\"plotly_relayouting\", updates);\n redrawTimer = setTimeout(function() {\n if (!gd._fullLayout) return;\n scrollViewBox = [0, 0, pw, ph];\n dragTail();\n }, REDRAWDELAY);\n e.preventDefault();\n return;\n }\n if (ns.length * ew.length !== 1) {\n attachWheelEventHandler(dragger, zoomWheel);\n }\n function plotDrag(dx, dy) {\n dx = dx * scaleX;\n dy = dy * scaleY;\n if (gd._transitioningWithDuration) {\n return;\n }\n gd._fullLayout._replotting = true;\n if (xActive === \"ew\" || yActive === \"ns\") {\n var spDx = xActive ? -dx : 0;\n var spDy = yActive ? -dy : 0;\n if (matches.isSubplotConstrained) {\n if (xActive && yActive) {\n var frac = (dx / pw - dy / ph) / 2;\n dx = frac * pw;\n dy = -frac * ph;\n spDx = -dx;\n spDy = -dy;\n }\n if (yActive) {\n spDx = -spDy * pw / ph;\n } else {\n spDy = -spDx * ph / pw;\n }\n }\n if (xActive) {\n dragAxList(xaxes, dx);\n updateMatchedAxRange(\"x\");\n }\n if (yActive) {\n dragAxList(yaxes, dy);\n updateMatchedAxRange(\"y\");\n }\n updateSubplots([spDx, spDy, pw, ph]);\n ticksAndAnnotations();\n gd.emit(\"plotly_relayouting\", updates);\n return;\n }\n function dz(axArray, end, d) {\n var otherEnd = 1 - end;\n var movedAx;\n var newLinearizedEnd;\n for (var i2 = 0; i2 < axArray.length; i2++) {\n var axi = axArray[i2];\n if (axi.fixedrange) continue;\n movedAx = axi;\n newLinearizedEnd = axi._rl[otherEnd] + (axi._rl[end] - axi._rl[otherEnd]) / dZoom(d / axi._length);\n var newEnd = axi.l2r(newLinearizedEnd);\n if (newEnd !== false && newEnd !== void 0) axi.range[end] = newEnd;\n }\n return movedAx._length * (movedAx._rl[end] - newLinearizedEnd) / (movedAx._rl[end] - movedAx._rl[otherEnd]);\n }\n var dxySign = xActive === \"w\" === (yActive === \"n\") ? 1 : -1;\n if (xActive && yActive && (links.isSubplotConstrained || matches.isSubplotConstrained)) {\n var dxyFraction = (dx / pw + dxySign * dy / ph) / 2;\n dx = dxyFraction * pw;\n dy = dxySign * dxyFraction * ph;\n }\n var xStart, yStart;\n if (xActive === \"w\") dx = dz(xaxes, 0, dx);\n else if (xActive === \"e\") dx = dz(xaxes, 1, -dx);\n else if (!xActive) dx = 0;\n if (yActive === \"n\") dy = dz(yaxes, 1, dy);\n else if (yActive === \"s\") dy = dz(yaxes, 0, -dy);\n else if (!yActive) dy = 0;\n xStart = xActive === \"w\" ? dx : 0;\n yStart = yActive === \"n\" ? dy : 0;\n if (links.isSubplotConstrained && !matches.isSubplotConstrained || // NW or SE on matching axes - create a symmetric zoom\n matches.isSubplotConstrained && xActive && yActive && dxySign > 0) {\n var i;\n if (matches.isSubplotConstrained || !xActive && yActive.length === 1) {\n for (i = 0; i < xaxes.length; i++) {\n xaxes[i].range = xaxes[i]._r.slice();\n scaleZoom(xaxes[i], 1 - dy / ph);\n }\n dx = dy * pw / ph;\n xStart = dx / 2;\n }\n if (matches.isSubplotConstrained || !yActive && xActive.length === 1) {\n for (i = 0; i < yaxes.length; i++) {\n yaxes[i].range = yaxes[i]._r.slice();\n scaleZoom(yaxes[i], 1 - dx / pw);\n }\n dy = dx * ph / pw;\n yStart = dy / 2;\n }\n }\n if (!matches.isSubplotConstrained || !yActive) {\n updateMatchedAxRange(\"x\");\n }\n if (!matches.isSubplotConstrained || !xActive) {\n updateMatchedAxRange(\"y\");\n }\n var xSize = pw - dx;\n var ySize = ph - dy;\n if (matches.isSubplotConstrained && !(xActive && yActive)) {\n if (xActive) {\n yStart = xStart ? 0 : dx * ph / pw;\n ySize = xSize * ph / pw;\n } else {\n xStart = yStart ? 0 : dy * pw / ph;\n xSize = ySize * pw / ph;\n }\n }\n updateSubplots([xStart, yStart, xSize, ySize]);\n ticksAndAnnotations();\n gd.emit(\"plotly_relayouting\", updates);\n }\n function updateMatchedAxRange(axLetter, out) {\n var matchedAxes = matches.isSubplotConstrained ? { x: yaxes, y: xaxes }[axLetter] : matches[axLetter + \"axes\"];\n var constrainedAxes = matches.isSubplotConstrained ? { x: xaxes, y: yaxes }[axLetter] : [];\n for (var i = 0; i < matchedAxes.length; i++) {\n var ax = matchedAxes[i];\n var axId = ax._id;\n var axId2 = matches.xLinks[axId] || matches.yLinks[axId];\n var ax2 = constrainedAxes[0] || xaHash[axId2] || yaHash[axId2];\n if (ax2) {\n if (out) {\n out[ax._name + \".range[0]\"] = out[ax2._name + \".range[0]\"];\n out[ax._name + \".range[1]\"] = out[ax2._name + \".range[1]\"];\n } else {\n ax.range = ax2.range.slice();\n }\n }\n }\n }\n function ticksAndAnnotations() {\n var activeAxIds = [];\n var i;\n function pushActiveAxIds(axList) {\n for (i = 0; i < axList.length; i++) {\n if (!axList[i].fixedrange) activeAxIds.push(axList[i]._id);\n }\n }\n function pushActiveAxIdsSynced(axList, axisType) {\n for (i = 0; i < axList.length; i++) {\n var axListI = axList[i];\n var axListIType = axListI[axisType];\n if (!axListI.fixedrange && axListIType.tickmode === \"sync\") activeAxIds.push(axListIType._id);\n }\n }\n if (editX) {\n pushActiveAxIds(xaxes);\n pushActiveAxIds(links.xaxes);\n pushActiveAxIds(matches.xaxes);\n pushActiveAxIdsSynced(plotinfo.overlays, \"xaxis\");\n }\n if (editY) {\n pushActiveAxIds(yaxes);\n pushActiveAxIds(links.yaxes);\n pushActiveAxIds(matches.yaxes);\n pushActiveAxIdsSynced(plotinfo.overlays, \"yaxis\");\n }\n updates = {};\n for (i = 0; i < activeAxIds.length; i++) {\n var axId = activeAxIds[i];\n var ax = getFromId(gd, axId);\n Axes.drawOne(gd, ax, { skipTitle: true });\n updates[ax._name + \".range[0]\"] = ax.range[0];\n updates[ax._name + \".range[1]\"] = ax.range[1];\n }\n Axes.redrawComponents(gd, activeAxIds);\n }\n function doubleClick() {\n if (gd._transitioningWithDuration) return;\n var doubleClickConfig = gd._context.doubleClick;\n var axList = [];\n if (xActive) axList = axList.concat(xaxes);\n if (yActive) axList = axList.concat(yaxes);\n if (matches.xaxes) axList = axList.concat(matches.xaxes);\n if (matches.yaxes) axList = axList.concat(matches.yaxes);\n var attrs = {};\n var ax, i;\n if (doubleClickConfig === \"reset+autosize\") {\n doubleClickConfig = \"autosize\";\n for (i = 0; i < axList.length; i++) {\n ax = axList[i];\n var r0 = ax._rangeInitial0;\n var r1 = ax._rangeInitial1;\n var hasRangeInitial = r0 !== void 0 || r1 !== void 0;\n if (hasRangeInitial && (r0 !== void 0 && r0 !== ax.range[0] || r1 !== void 0 && r1 !== ax.range[1]) || !hasRangeInitial && ax.autorange !== true) {\n doubleClickConfig = \"reset\";\n break;\n }\n }\n }\n if (doubleClickConfig === \"autosize\") {\n for (i = 0; i < axList.length; i++) {\n ax = axList[i];\n if (!ax.fixedrange) attrs[ax._name + \".autorange\"] = true;\n }\n } else if (doubleClickConfig === \"reset\") {\n if (xActive || links.isSubplotConstrained) axList = axList.concat(links.xaxes);\n if (yActive && !links.isSubplotConstrained) axList = axList.concat(links.yaxes);\n if (links.isSubplotConstrained) {\n if (!xActive) axList = axList.concat(xaxes);\n else if (!yActive) axList = axList.concat(yaxes);\n }\n for (i = 0; i < axList.length; i++) {\n ax = axList[i];\n if (!ax.fixedrange) {\n var axName = ax._name;\n var autorangeInitial = ax._autorangeInitial;\n if (ax._rangeInitial0 === void 0 && ax._rangeInitial1 === void 0) {\n attrs[axName + \".autorange\"] = true;\n } else if (ax._rangeInitial0 === void 0) {\n attrs[axName + \".autorange\"] = autorangeInitial;\n attrs[axName + \".range\"] = [null, ax._rangeInitial1];\n } else if (ax._rangeInitial1 === void 0) {\n attrs[axName + \".range\"] = [ax._rangeInitial0, null];\n attrs[axName + \".autorange\"] = autorangeInitial;\n } else {\n attrs[axName + \".range\"] = [ax._rangeInitial0, ax._rangeInitial1];\n }\n }\n }\n }\n gd.emit(\"plotly_doubleclick\", null);\n Registry.call(\"_guiRelayout\", gd, attrs);\n }\n function dragTail() {\n updateSubplots([0, 0, pw, ph]);\n Lib.syncOrAsync([\n Plots.previousPromises,\n function() {\n gd._fullLayout._replotting = false;\n Registry.call(\"_guiRelayout\", gd, updates);\n }\n ], gd);\n }\n function updateSubplots(viewBox) {\n var fullLayout = gd._fullLayout;\n var plotinfos = fullLayout._plots;\n var subplots = fullLayout._subplots.cartesian;\n var i, sp, xa, ya;\n if (hasSplom) {\n Registry.subplotsRegistry.splom.drag(gd);\n }\n if (hasScatterGl) {\n for (i = 0; i < subplots.length; i++) {\n sp = plotinfos[subplots[i]];\n xa = sp.xaxis;\n ya = sp.yaxis;\n if (sp._scene) {\n if (xa.limitRange) xa.limitRange();\n if (ya.limitRange) ya.limitRange();\n var xrng = Lib.simpleMap(xa.range, xa.r2l);\n var yrng = Lib.simpleMap(ya.range, ya.r2l);\n sp._scene.update({ range: [xrng[0], yrng[0], xrng[1], yrng[1]] });\n }\n }\n }\n if (hasSplom || hasScatterGl) {\n clearGlCanvases(gd);\n redrawReglTraces(gd);\n }\n if (hasSVG) {\n var xScaleFactor = viewBox[2] / xa0._length;\n var yScaleFactor = viewBox[3] / ya0._length;\n for (i = 0; i < subplots.length; i++) {\n sp = plotinfos[subplots[i]];\n xa = sp.xaxis;\n ya = sp.yaxis;\n var editX2 = (editX || matches.isSubplotConstrained) && !xa.fixedrange && xaHash[xa._id];\n var editY2 = (editY || matches.isSubplotConstrained) && !ya.fixedrange && yaHash[ya._id];\n var xScaleFactor2, yScaleFactor2;\n var clipDx, clipDy;\n if (editX2) {\n xScaleFactor2 = xScaleFactor;\n clipDx = ew || matches.isSubplotConstrained ? viewBox[0] : getShift(xa, xScaleFactor2);\n } else if (matches.xaHash[xa._id]) {\n xScaleFactor2 = xScaleFactor;\n clipDx = viewBox[0] * xa._length / xa0._length;\n } else if (matches.yaHash[xa._id]) {\n xScaleFactor2 = yScaleFactor;\n clipDx = yActive === \"ns\" ? -viewBox[1] * xa._length / ya0._length : getShift(xa, xScaleFactor2, { n: \"top\", s: \"bottom\" }[yActive]);\n } else {\n xScaleFactor2 = getLinkedScaleFactor(xa, xScaleFactor, yScaleFactor);\n clipDx = scaleAndGetShift(xa, xScaleFactor2);\n }\n if (xScaleFactor2 > 1 && (xa.maxallowed !== void 0 && editX === (xa.range[0] < xa.range[1] ? \"e\" : \"w\") || xa.minallowed !== void 0 && editX === (xa.range[0] < xa.range[1] ? \"w\" : \"e\"))) {\n xScaleFactor2 = 1;\n clipDx = 0;\n }\n if (editY2) {\n yScaleFactor2 = yScaleFactor;\n clipDy = ns || matches.isSubplotConstrained ? viewBox[1] : getShift(ya, yScaleFactor2);\n } else if (matches.yaHash[ya._id]) {\n yScaleFactor2 = yScaleFactor;\n clipDy = viewBox[1] * ya._length / ya0._length;\n } else if (matches.xaHash[ya._id]) {\n yScaleFactor2 = xScaleFactor;\n clipDy = xActive === \"ew\" ? -viewBox[0] * ya._length / xa0._length : getShift(ya, yScaleFactor2, { e: \"right\", w: \"left\" }[xActive]);\n } else {\n yScaleFactor2 = getLinkedScaleFactor(ya, xScaleFactor, yScaleFactor);\n clipDy = scaleAndGetShift(ya, yScaleFactor2);\n }\n if (yScaleFactor2 > 1 && (ya.maxallowed !== void 0 && editY === (ya.range[0] < ya.range[1] ? \"n\" : \"s\") || ya.minallowed !== void 0 && editY === (ya.range[0] < ya.range[1] ? \"s\" : \"n\"))) {\n yScaleFactor2 = 1;\n clipDy = 0;\n }\n if (!xScaleFactor2 && !yScaleFactor2) {\n continue;\n }\n if (!xScaleFactor2) xScaleFactor2 = 1;\n if (!yScaleFactor2) yScaleFactor2 = 1;\n var plotDx = xa._offset - clipDx / xScaleFactor2;\n var plotDy = ya._offset - clipDy / yScaleFactor2;\n sp.clipRect.call(Drawing.setTranslate, clipDx, clipDy).call(Drawing.setScale, xScaleFactor2, yScaleFactor2);\n sp.plot.call(Drawing.setTranslate, plotDx, plotDy).call(Drawing.setScale, 1 / xScaleFactor2, 1 / yScaleFactor2);\n if (xScaleFactor2 !== sp.xScaleFactor || yScaleFactor2 !== sp.yScaleFactor) {\n Drawing.setPointGroupScale(sp.zoomScalePts, xScaleFactor2, yScaleFactor2);\n Drawing.setTextPointsScale(sp.zoomScaleTxt, xScaleFactor2, yScaleFactor2);\n }\n Drawing.hideOutsideRangePoints(sp.clipOnAxisFalseTraces, sp);\n sp.xScaleFactor = xScaleFactor2;\n sp.yScaleFactor = yScaleFactor2;\n }\n }\n }\n function getLinkedScaleFactor(ax, xScaleFactor, yScaleFactor) {\n if (ax.fixedrange) return 0;\n if (editX && links.xaHash[ax._id]) {\n return xScaleFactor;\n }\n if (editY && (links.isSubplotConstrained ? links.xaHash : links.yaHash)[ax._id]) {\n return yScaleFactor;\n }\n return 0;\n }\n function scaleAndGetShift(ax, scaleFactor) {\n if (scaleFactor) {\n ax.range = ax._r.slice();\n scaleZoom(ax, scaleFactor);\n return getShift(ax, scaleFactor);\n }\n return 0;\n }\n function getShift(ax, scaleFactor, from) {\n return ax._length * (1 - scaleFactor) * FROM_TL[from || ax.constraintoward || \"middle\"];\n }\n return dragger;\n }\n function makeDragger(plotinfo, nodeName, dragClass, cursor) {\n var dragger3 = Lib.ensureSingle(plotinfo.draglayer, nodeName, dragClass, function(s) {\n s.classed(\"drag\", true).style({ fill: \"transparent\", \"stroke-width\": 0 }).attr(\"data-subplot\", plotinfo.id);\n });\n dragger3.call(setCursor, cursor);\n return dragger3.node();\n }\n function makeRectDragger(plotinfo, dragClass, cursor, x, y, w, h) {\n var dragger = makeDragger(plotinfo, \"rect\", dragClass, cursor);\n d3.select(dragger).call(Drawing.setRect, x, y, w, h);\n return dragger;\n }\n function isDirectionActive(axList, activeVal) {\n for (var i = 0; i < axList.length; i++) {\n if (!axList[i].fixedrange) return activeVal;\n }\n return \"\";\n }\n function getEndText(ax, end) {\n var initialVal = ax.range[end];\n var diff = Math.abs(initialVal - ax.range[1 - end]);\n var dig;\n if (ax.type === \"date\") {\n return initialVal;\n } else if (ax.type === \"log\") {\n dig = Math.ceil(Math.max(0, -Math.log(diff) / Math.LN10)) + 3;\n return numberFormat(\".\" + dig + \"g\")(Math.pow(10, initialVal));\n } else {\n dig = Math.floor(Math.log(Math.abs(initialVal)) / Math.LN10) - Math.floor(Math.log(diff) / Math.LN10) + 4;\n return numberFormat(\".\" + String(dig) + \"g\")(initialVal);\n }\n }\n function zoomAxRanges(axList, r0Fraction, r1Fraction, updates, linkedAxes) {\n for (var i = 0; i < axList.length; i++) {\n var axi = axList[i];\n if (axi.fixedrange) continue;\n if (axi.rangebreaks) {\n var isY = axi._id.charAt(0) === \"y\";\n var r0F = isY ? 1 - r0Fraction : r0Fraction;\n var r1F = isY ? 1 - r1Fraction : r1Fraction;\n updates[axi._name + \".range[0]\"] = axi.l2r(axi.p2l(r0F * axi._length));\n updates[axi._name + \".range[1]\"] = axi.l2r(axi.p2l(r1F * axi._length));\n } else {\n var axRangeLinear0 = axi._rl[0];\n var axRangeLinearSpan = axi._rl[1] - axRangeLinear0;\n updates[axi._name + \".range[0]\"] = axi.l2r(axRangeLinear0 + axRangeLinearSpan * r0Fraction);\n updates[axi._name + \".range[1]\"] = axi.l2r(axRangeLinear0 + axRangeLinearSpan * r1Fraction);\n }\n }\n if (linkedAxes && linkedAxes.length) {\n var linkedR0Fraction = (r0Fraction + (1 - r1Fraction)) / 2;\n zoomAxRanges(linkedAxes, linkedR0Fraction, 1 - linkedR0Fraction, updates, []);\n }\n }\n function dragAxList(axList, pix) {\n for (var i = 0; i < axList.length; i++) {\n var axi = axList[i];\n if (!axi.fixedrange) {\n if (axi.rangebreaks) {\n var p0 = 0;\n var p1 = axi._length;\n var d0 = axi.p2l(p0 + pix) - axi.p2l(p0);\n var d1 = axi.p2l(p1 + pix) - axi.p2l(p1);\n var delta = (d0 + d1) / 2;\n axi.range = [\n axi.l2r(axi._rl[0] - delta),\n axi.l2r(axi._rl[1] - delta)\n ];\n } else {\n axi.range = [\n axi.l2r(axi._rl[0] - pix / axi._m),\n axi.l2r(axi._rl[1] - pix / axi._m)\n ];\n }\n if (axi.limitRange) axi.limitRange();\n }\n }\n }\n function dZoom(d) {\n return 1 - (d >= 0 ? Math.min(d, 0.9) : 1 / (1 / Math.max(d, -0.3) + 3.222));\n }\n function getDragCursor(nsew, dragmode, isMainDrag) {\n if (!nsew) return \"pointer\";\n if (nsew === \"nsew\") {\n if (isMainDrag) return \"\";\n if (dragmode === \"pan\") return \"move\";\n return \"crosshair\";\n }\n return nsew.toLowerCase() + \"-resize\";\n }\n function makeZoombox(zoomlayer, lum, xs, ys, path0) {\n return zoomlayer.append(\"path\").attr(\"class\", \"zoombox\").style({\n fill: lum > 0.2 ? \"rgba(0,0,0,0)\" : \"rgba(255,255,255,0)\",\n \"stroke-width\": 0\n }).attr(\"transform\", strTranslate(xs, ys)).attr(\"d\", path0 + \"Z\");\n }\n function makeCorners(zoomlayer, xs, ys) {\n return zoomlayer.append(\"path\").attr(\"class\", \"zoombox-corners\").style({\n fill: Color.background,\n stroke: Color.defaultLine,\n \"stroke-width\": 1,\n opacity: 0\n }).attr(\"transform\", strTranslate(xs, ys)).attr(\"d\", \"M0,0Z\");\n }\n function updateZoombox(zb, corners, box, path0, dimmed, lum) {\n zb.attr(\n \"d\",\n path0 + \"M\" + box.l + \",\" + box.t + \"v\" + box.h + \"h\" + box.w + \"v-\" + box.h + \"h-\" + box.w + \"Z\"\n );\n transitionZoombox(zb, corners, dimmed, lum);\n }\n function transitionZoombox(zb, corners, dimmed, lum) {\n if (!dimmed) {\n zb.transition().style(\"fill\", lum > 0.2 ? \"rgba(0,0,0,0.4)\" : \"rgba(255,255,255,0.3)\").duration(200);\n corners.transition().style(\"opacity\", 1).duration(200);\n }\n }\n function removeZoombox(gd) {\n d3.select(gd).selectAll(\".zoombox,.js-zoombox-backdrop,.js-zoombox-menu,.zoombox-corners\").remove();\n }\n function showDoubleClickNotifier(gd) {\n if (SHOWZOOMOUTTIP && gd.data && gd._context.showTips) {\n Lib.notifier(Lib._(gd, \"Double-click to zoom back out\"), \"long\");\n SHOWZOOMOUTTIP = false;\n }\n }\n function xCorners(box, y0) {\n return \"M\" + (box.l - 0.5) + \",\" + (y0 - MINZOOM - 0.5) + \"h-3v\" + (2 * MINZOOM + 1) + \"h3ZM\" + (box.r + 0.5) + \",\" + (y0 - MINZOOM - 0.5) + \"h3v\" + (2 * MINZOOM + 1) + \"h-3Z\";\n }\n function yCorners(box, x0) {\n return \"M\" + (x0 - MINZOOM - 0.5) + \",\" + (box.t - 0.5) + \"v-3h\" + (2 * MINZOOM + 1) + \"v3ZM\" + (x0 - MINZOOM - 0.5) + \",\" + (box.b + 0.5) + \"v3h\" + (2 * MINZOOM + 1) + \"v-3Z\";\n }\n function xyCorners(box) {\n var clen = Math.floor(Math.min(box.b - box.t, box.r - box.l, MINZOOM) / 2);\n return \"M\" + (box.l - 3.5) + \",\" + (box.t - 0.5 + clen) + \"h3v\" + -clen + \"h\" + clen + \"v-3h-\" + (clen + 3) + \"ZM\" + (box.r + 3.5) + \",\" + (box.t - 0.5 + clen) + \"h-3v\" + -clen + \"h\" + -clen + \"v-3h\" + (clen + 3) + \"ZM\" + (box.r + 3.5) + \",\" + (box.b + 0.5 - clen) + \"h-3v\" + clen + \"h\" + -clen + \"v3h\" + (clen + 3) + \"ZM\" + (box.l - 3.5) + \",\" + (box.b + 0.5 - clen) + \"h3v\" + clen + \"h\" + clen + \"v3h-\" + (clen + 3) + \"Z\";\n }\n function calcLinks(gd, groups, xaHash, yaHash, exclude) {\n var isSubplotConstrained = false;\n var xLinks = {};\n var yLinks = {};\n var xID, yID, xLinkID, yLinkID;\n var xExclude = (exclude || {}).xaHash;\n var yExclude = (exclude || {}).yaHash;\n for (var i = 0; i < groups.length; i++) {\n var group = groups[i];\n for (xID in xaHash) {\n if (group[xID]) {\n for (xLinkID in group) {\n if (!(exclude && (xExclude[xLinkID] || yExclude[xLinkID])) && !(xLinkID.charAt(0) === \"x\" ? xaHash : yaHash)[xLinkID]) {\n xLinks[xLinkID] = xID;\n }\n }\n for (yID in yaHash) {\n if (!(exclude && (xExclude[yID] || yExclude[yID])) && group[yID]) {\n isSubplotConstrained = true;\n }\n }\n }\n }\n for (yID in yaHash) {\n if (group[yID]) {\n for (yLinkID in group) {\n if (!(exclude && (xExclude[yLinkID] || yExclude[yLinkID])) && !(yLinkID.charAt(0) === \"x\" ? xaHash : yaHash)[yLinkID]) {\n yLinks[yLinkID] = yID;\n }\n }\n }\n }\n }\n if (isSubplotConstrained) {\n Lib.extendFlat(xLinks, yLinks);\n yLinks = {};\n }\n var xaHashLinked = {};\n var xaxesLinked = [];\n for (xLinkID in xLinks) {\n var xa = getFromId(gd, xLinkID);\n xaxesLinked.push(xa);\n xaHashLinked[xa._id] = xa;\n }\n var yaHashLinked = {};\n var yaxesLinked = [];\n for (yLinkID in yLinks) {\n var ya = getFromId(gd, yLinkID);\n yaxesLinked.push(ya);\n yaHashLinked[ya._id] = ya;\n }\n return {\n xaHash: xaHashLinked,\n yaHash: yaHashLinked,\n xaxes: xaxesLinked,\n yaxes: yaxesLinked,\n xLinks,\n yLinks,\n isSubplotConstrained\n };\n }\n function attachWheelEventHandler(element, handler) {\n if (!supportsPassive) {\n if (element.onwheel !== void 0) element.onwheel = handler;\n else if (element.onmousewheel !== void 0) element.onmousewheel = handler;\n else if (!element.isAddedWheelEvent) {\n element.isAddedWheelEvent = true;\n element.addEventListener(\"wheel\", handler, { passive: false });\n }\n } else {\n var wheelEventName = element.onwheel !== void 0 ? \"wheel\" : \"mousewheel\";\n if (element._onwheel) {\n element.removeEventListener(wheelEventName, element._onwheel);\n }\n element._onwheel = handler;\n element.addEventListener(wheelEventName, handler, { passive: false });\n }\n }\n function hashValues(hash) {\n var out = [];\n for (var k in hash) out.push(hash[k]);\n return out;\n }\n module.exports = {\n makeDragBox,\n makeDragger,\n makeRectDragger,\n makeZoombox,\n makeCorners,\n updateZoombox,\n xyCorners,\n transitionZoombox,\n removeZoombox,\n showDoubleClickNotifier,\n attachWheelEventHandler\n };\n }\n });\n\n // src/plots/cartesian/graph_interact.js\n var require_graph_interact = __commonJS({\n \"src/plots/cartesian/graph_interact.js\"(exports) {\n \"use strict\";\n var d3 = require_d3();\n var Fx = require_fx();\n var dragElement = require_dragelement();\n var setCursor = require_setcursor();\n var makeDragBox = require_dragbox().makeDragBox;\n var DRAGGERSIZE = require_constants2().DRAGGERSIZE;\n exports.initInteractions = function initInteractions(gd) {\n var fullLayout = gd._fullLayout;\n if (gd._context.staticPlot) {\n d3.select(gd).selectAll(\".drag\").remove();\n return;\n }\n if (!fullLayout._has(\"cartesian\") && !fullLayout._has(\"splom\")) return;\n var subplots = Object.keys(fullLayout._plots || {}).sort(function(a, b) {\n if ((fullLayout._plots[a].mainplot && true) === (fullLayout._plots[b].mainplot && true)) {\n var aParts = a.split(\"y\");\n var bParts = b.split(\"y\");\n return aParts[0] === bParts[0] ? Number(aParts[1] || 1) - Number(bParts[1] || 1) : Number(aParts[0] || 1) - Number(bParts[0] || 1);\n }\n return fullLayout._plots[a].mainplot ? 1 : -1;\n });\n subplots.forEach(function(subplot) {\n var plotinfo = fullLayout._plots[subplot];\n var xa = plotinfo.xaxis;\n var ya = plotinfo.yaxis;\n if (!plotinfo.mainplot) {\n var maindrag = makeDragBox(\n gd,\n plotinfo,\n xa._offset,\n ya._offset,\n xa._length,\n ya._length,\n \"ns\",\n \"ew\"\n );\n maindrag.onmousemove = function(evt) {\n gd._fullLayout._rehover = function() {\n if (gd._fullLayout._hoversubplot === subplot && gd._fullLayout._plots[subplot]) {\n Fx.hover(gd, evt, subplot);\n }\n };\n Fx.hover(gd, evt, subplot);\n gd._fullLayout._lasthover = maindrag;\n gd._fullLayout._hoversubplot = subplot;\n };\n maindrag.onmouseout = function(evt) {\n if (gd._dragging) return;\n gd._fullLayout._hoversubplot = null;\n dragElement.unhover(gd, evt);\n };\n if (gd._context.showAxisDragHandles) {\n makeDragBox(\n gd,\n plotinfo,\n xa._offset - DRAGGERSIZE,\n ya._offset - DRAGGERSIZE,\n DRAGGERSIZE,\n DRAGGERSIZE,\n \"n\",\n \"w\"\n );\n makeDragBox(\n gd,\n plotinfo,\n xa._offset + xa._length,\n ya._offset - DRAGGERSIZE,\n DRAGGERSIZE,\n DRAGGERSIZE,\n \"n\",\n \"e\"\n );\n makeDragBox(\n gd,\n plotinfo,\n xa._offset - DRAGGERSIZE,\n ya._offset + ya._length,\n DRAGGERSIZE,\n DRAGGERSIZE,\n \"s\",\n \"w\"\n );\n makeDragBox(\n gd,\n plotinfo,\n xa._offset + xa._length,\n ya._offset + ya._length,\n DRAGGERSIZE,\n DRAGGERSIZE,\n \"s\",\n \"e\"\n );\n }\n }\n if (gd._context.showAxisDragHandles) {\n if (subplot === xa._mainSubplot) {\n var y0 = xa._mainLinePosition;\n if (xa.side === \"top\") y0 -= DRAGGERSIZE;\n makeDragBox(\n gd,\n plotinfo,\n xa._offset + xa._length * 0.1,\n y0,\n xa._length * 0.8,\n DRAGGERSIZE,\n \"\",\n \"ew\"\n );\n makeDragBox(\n gd,\n plotinfo,\n xa._offset,\n y0,\n xa._length * 0.1,\n DRAGGERSIZE,\n \"\",\n \"w\"\n );\n makeDragBox(\n gd,\n plotinfo,\n xa._offset + xa._length * 0.9,\n y0,\n xa._length * 0.1,\n DRAGGERSIZE,\n \"\",\n \"e\"\n );\n }\n if (subplot === ya._mainSubplot) {\n var x0 = ya._mainLinePosition;\n if (ya.side !== \"right\") x0 -= DRAGGERSIZE;\n makeDragBox(\n gd,\n plotinfo,\n x0,\n ya._offset + ya._length * 0.1,\n DRAGGERSIZE,\n ya._length * 0.8,\n \"ns\",\n \"\"\n );\n makeDragBox(\n gd,\n plotinfo,\n x0,\n ya._offset + ya._length * 0.9,\n DRAGGERSIZE,\n ya._length * 0.1,\n \"s\",\n \"\"\n );\n makeDragBox(\n gd,\n plotinfo,\n x0,\n ya._offset,\n DRAGGERSIZE,\n ya._length * 0.1,\n \"n\",\n \"\"\n );\n }\n }\n });\n var hoverLayer = fullLayout._hoverlayer.node();\n hoverLayer.onmousemove = function(evt) {\n evt.target = gd._fullLayout._lasthover;\n Fx.hover(gd, evt, fullLayout._hoversubplot);\n };\n hoverLayer.onclick = function(evt) {\n evt.target = gd._fullLayout._lasthover;\n Fx.click(gd, evt);\n };\n hoverLayer.onmousedown = function(evt) {\n gd._fullLayout._lasthover.onmousedown(evt);\n };\n exports.updateFx(gd);\n };\n exports.updateFx = function(gd) {\n var fullLayout = gd._fullLayout;\n var cursor = fullLayout.dragmode === \"pan\" ? \"move\" : \"crosshair\";\n setCursor(fullLayout._draggers, cursor);\n };\n }\n });\n\n // src/plot_api/container_array_match.js\n var require_container_array_match = __commonJS({\n \"src/plot_api/container_array_match.js\"(exports, module) {\n \"use strict\";\n var Registry = require_registry();\n module.exports = function containerArrayMatch(astr) {\n var rootContainers = Registry.layoutArrayContainers;\n var regexpContainers = Registry.layoutArrayRegexes;\n var rootPart = astr.split(\"[\")[0];\n var arrayStr;\n var match;\n for (var i = 0; i < regexpContainers.length; i++) {\n match = astr.match(regexpContainers[i]);\n if (match && match.index === 0) {\n arrayStr = match[0];\n break;\n }\n }\n if (!arrayStr) arrayStr = rootContainers[rootContainers.indexOf(rootPart)];\n if (!arrayStr) return false;\n var tail = astr.substr(arrayStr.length);\n if (!tail) return { array: arrayStr, index: \"\", property: \"\" };\n match = tail.match(/^\\[(0|[1-9][0-9]*)\\](\\.(.+))?$/);\n if (!match) return false;\n return { array: arrayStr, index: Number(match[1]), property: match[3] || \"\" };\n };\n }\n });\n\n // src/plot_api/manage_arrays.js\n var require_manage_arrays = __commonJS({\n \"src/plot_api/manage_arrays.js\"(exports) {\n \"use strict\";\n var isPlainObject = require_is_plain_object();\n var noop = require_noop();\n var Loggers = require_loggers();\n var sorterAsc = require_search().sorterAsc;\n var Registry = require_registry();\n exports.containerArrayMatch = require_container_array_match();\n var isAddVal = exports.isAddVal = function isAddVal2(val) {\n return val === \"add\" || isPlainObject(val);\n };\n var isRemoveVal = exports.isRemoveVal = function isRemoveVal2(val) {\n return val === null || val === \"remove\";\n };\n exports.applyContainerArrayChanges = function applyContainerArrayChanges(gd, np, edits, flags, _nestedProperty) {\n var componentType = np.astr;\n var supplyComponentDefaults = Registry.getComponentMethod(componentType, \"supplyLayoutDefaults\");\n var draw = Registry.getComponentMethod(componentType, \"draw\");\n var drawOne = Registry.getComponentMethod(componentType, \"drawOne\");\n var replotLater = flags.replot || flags.recalc || supplyComponentDefaults === noop || draw === noop;\n var layout = gd.layout;\n var fullLayout = gd._fullLayout;\n if (edits[\"\"]) {\n if (Object.keys(edits).length > 1) {\n Loggers.warn(\n \"Full array edits are incompatible with other edits\",\n componentType\n );\n }\n var fullVal = edits[\"\"][\"\"];\n if (isRemoveVal(fullVal)) np.set(null);\n else if (Array.isArray(fullVal)) np.set(fullVal);\n else {\n Loggers.warn(\"Unrecognized full array edit value\", componentType, fullVal);\n return true;\n }\n if (replotLater) return false;\n supplyComponentDefaults(layout, fullLayout);\n draw(gd);\n return true;\n }\n var componentNums = Object.keys(edits).map(Number).sort(sorterAsc);\n var componentArrayIn = np.get();\n var componentArray = componentArrayIn || [];\n var componentArrayFull = _nestedProperty(fullLayout, componentType).get();\n var deletes = [];\n var firstIndexChange = -1;\n var maxIndex = componentArray.length;\n var i;\n var j;\n var componentNum;\n var objEdits;\n var objKeys;\n var objVal;\n var adding, prefix;\n for (i = 0; i < componentNums.length; i++) {\n componentNum = componentNums[i];\n objEdits = edits[componentNum];\n objKeys = Object.keys(objEdits);\n objVal = objEdits[\"\"], adding = isAddVal(objVal);\n if (componentNum < 0 || componentNum > componentArray.length - (adding ? 0 : 1)) {\n Loggers.warn(\"index out of range\", componentType, componentNum);\n continue;\n }\n if (objVal !== void 0) {\n if (objKeys.length > 1) {\n Loggers.warn(\n \"Insertion & removal are incompatible with edits to the same index.\",\n componentType,\n componentNum\n );\n }\n if (isRemoveVal(objVal)) {\n deletes.push(componentNum);\n } else if (adding) {\n if (objVal === \"add\") objVal = {};\n componentArray.splice(componentNum, 0, objVal);\n if (componentArrayFull) componentArrayFull.splice(componentNum, 0, {});\n } else {\n Loggers.warn(\n \"Unrecognized full object edit value\",\n componentType,\n componentNum,\n objVal\n );\n }\n if (firstIndexChange === -1) firstIndexChange = componentNum;\n } else {\n for (j = 0; j < objKeys.length; j++) {\n prefix = componentType + \"[\" + componentNum + \"].\";\n _nestedProperty(componentArray[componentNum], objKeys[j], prefix).set(objEdits[objKeys[j]]);\n }\n }\n }\n for (i = deletes.length - 1; i >= 0; i--) {\n componentArray.splice(deletes[i], 1);\n if (componentArrayFull) componentArrayFull.splice(deletes[i], 1);\n }\n if (!componentArray.length) np.set(null);\n else if (!componentArrayIn) np.set(componentArray);\n if (replotLater) return false;\n supplyComponentDefaults(layout, fullLayout);\n if (drawOne !== noop) {\n var indicesToDraw;\n if (firstIndexChange === -1) {\n indicesToDraw = componentNums;\n } else {\n maxIndex = Math.max(componentArray.length, maxIndex);\n indicesToDraw = [];\n for (i = 0; i < componentNums.length; i++) {\n componentNum = componentNums[i];\n if (componentNum >= firstIndexChange) break;\n indicesToDraw.push(componentNum);\n }\n for (i = firstIndexChange; i < maxIndex; i++) {\n indicesToDraw.push(i);\n }\n }\n for (i = 0; i < indicesToDraw.length; i++) {\n drawOne(gd, indicesToDraw[i]);\n }\n } else draw(gd);\n return true;\n };\n }\n });\n\n // src/plot_api/helpers.js\n var require_helpers9 = __commonJS({\n \"src/plot_api/helpers.js\"(exports) {\n \"use strict\";\n var isNumeric = require_fast_isnumeric();\n var m4FromQuat = require_fromQuat();\n var Registry = require_registry();\n var Lib = require_lib();\n var Plots = require_plots();\n var AxisIds = require_axis_ids();\n var Color = require_color();\n var cleanId = AxisIds.cleanId;\n var getFromTrace = AxisIds.getFromTrace;\n var traceIs = Registry.traceIs;\n exports.clearPromiseQueue = function(gd) {\n if (Array.isArray(gd._promises) && gd._promises.length > 0) {\n Lib.log(\"Clearing previous rejected promises from queue.\");\n }\n gd._promises = [];\n };\n exports.cleanLayout = function(layout) {\n var i, j;\n if (!layout) layout = {};\n if (layout.xaxis1) {\n if (!layout.xaxis) layout.xaxis = layout.xaxis1;\n delete layout.xaxis1;\n }\n if (layout.yaxis1) {\n if (!layout.yaxis) layout.yaxis = layout.yaxis1;\n delete layout.yaxis1;\n }\n if (layout.scene1) {\n if (!layout.scene) layout.scene = layout.scene1;\n delete layout.scene1;\n }\n var axisAttrRegex = (Plots.subplotsRegistry.cartesian || {}).attrRegex;\n var polarAttrRegex = (Plots.subplotsRegistry.polar || {}).attrRegex;\n var ternaryAttrRegex = (Plots.subplotsRegistry.ternary || {}).attrRegex;\n var sceneAttrRegex = (Plots.subplotsRegistry.gl3d || {}).attrRegex;\n var keys = Object.keys(layout);\n for (i = 0; i < keys.length; i++) {\n var key = keys[i];\n if (axisAttrRegex && axisAttrRegex.test(key)) {\n var ax = layout[key];\n if (ax.anchor && ax.anchor !== \"free\") {\n ax.anchor = cleanId(ax.anchor);\n }\n if (ax.overlaying) ax.overlaying = cleanId(ax.overlaying);\n if (!ax.type) {\n if (ax.isdate) ax.type = \"date\";\n else if (ax.islog) ax.type = \"log\";\n else if (ax.isdate === false && ax.islog === false) ax.type = \"linear\";\n }\n if (ax.autorange === \"withzero\" || ax.autorange === \"tozero\") {\n ax.autorange = true;\n ax.rangemode = \"tozero\";\n }\n if (ax.insiderange) delete ax.range;\n delete ax.islog;\n delete ax.isdate;\n delete ax.categories;\n if (emptyContainer(ax, \"domain\")) delete ax.domain;\n }\n }\n var annotationsLen = Array.isArray(layout.annotations) ? layout.annotations.length : 0;\n for (i = 0; i < annotationsLen; i++) {\n var ann = layout.annotations[i];\n if (!Lib.isPlainObject(ann)) continue;\n cleanAxRef(ann, \"xref\");\n cleanAxRef(ann, \"yref\");\n }\n var shapesLen = Array.isArray(layout.shapes) ? layout.shapes.length : 0;\n for (i = 0; i < shapesLen; i++) {\n var shape = layout.shapes[i];\n if (!Lib.isPlainObject(shape)) continue;\n cleanAxRef(shape, \"xref\");\n cleanAxRef(shape, \"yref\");\n }\n var imagesLen = Array.isArray(layout.images) ? layout.images.length : 0;\n for (i = 0; i < imagesLen; i++) {\n var image = layout.images[i];\n if (!Lib.isPlainObject(image)) continue;\n cleanAxRef(image, \"xref\");\n cleanAxRef(image, \"yref\");\n }\n var legend = layout.legend;\n if (legend) {\n if (legend.x > 3) {\n legend.x = 1.02;\n legend.xanchor = \"left\";\n } else if (legend.x < -2) {\n legend.x = -0.02;\n legend.xanchor = \"right\";\n }\n if (legend.y > 3) {\n legend.y = 1.02;\n legend.yanchor = \"bottom\";\n } else if (legend.y < -2) {\n legend.y = -0.02;\n legend.yanchor = \"top\";\n }\n }\n if (layout.dragmode === \"rotate\") layout.dragmode = \"orbit\";\n Color.clean(layout);\n if (layout.template && layout.template.layout) {\n exports.cleanLayout(layout.template.layout);\n }\n return layout;\n };\n function cleanAxRef(container, attr) {\n var valIn = container[attr];\n var axLetter = attr.charAt(0);\n if (valIn && valIn !== \"paper\") {\n container[attr] = cleanId(valIn, axLetter, true);\n }\n }\n exports.cleanData = function(data) {\n for (var tracei = 0; tracei < data.length; tracei++) {\n var trace = data[tracei];\n var i;\n if (trace.type === \"histogramy\" && \"xbins\" in trace && !(\"ybins\" in trace)) {\n trace.ybins = trace.xbins;\n delete trace.xbins;\n }\n if (trace.type === \"histogramy\") exports.swapXYData(trace);\n if (trace.type === \"histogramx\" || trace.type === \"histogramy\") {\n trace.type = \"histogram\";\n }\n if (\"scl\" in trace && !(\"colorscale\" in trace)) {\n trace.colorscale = trace.scl;\n delete trace.scl;\n }\n if (\"reversescl\" in trace && !(\"reversescale\" in trace)) {\n trace.reversescale = trace.reversescl;\n delete trace.reversescl;\n }\n if (trace.xaxis) trace.xaxis = cleanId(trace.xaxis, \"x\");\n if (trace.yaxis) trace.yaxis = cleanId(trace.yaxis, \"y\");\n if (traceIs(trace, \"gl3d\") && trace.scene) {\n trace.scene = Plots.subplotsRegistry.gl3d.cleanId(trace.scene);\n }\n if (!traceIs(trace, \"pie-like\") && !traceIs(trace, \"bar-like\")) {\n if (Array.isArray(trace.textposition)) {\n for (i = 0; i < trace.textposition.length; i++) {\n trace.textposition[i] = cleanTextPosition(trace.textposition[i]);\n }\n } else if (trace.textposition) {\n trace.textposition = cleanTextPosition(trace.textposition);\n }\n }\n var _module = Registry.getModule(trace);\n if (_module && _module.colorbar) {\n var containerName = _module.colorbar.container;\n var container = containerName ? trace[containerName] : trace;\n if (container && container.colorscale) {\n if (container.colorscale === \"YIGnBu\") container.colorscale = \"YlGnBu\";\n if (container.colorscale === \"YIOrRd\") container.colorscale = \"YlOrRd\";\n }\n }\n if (trace.type === \"surface\" && Lib.isPlainObject(trace.contours)) {\n var dims = [\"x\", \"y\", \"z\"];\n for (i = 0; i < dims.length; i++) {\n var opts = trace.contours[dims[i]];\n if (!Lib.isPlainObject(opts)) continue;\n if (opts.highlightColor) {\n opts.highlightcolor = opts.highlightColor;\n delete opts.highlightColor;\n }\n if (opts.highlightWidth) {\n opts.highlightwidth = opts.highlightWidth;\n delete opts.highlightWidth;\n }\n }\n }\n if (trace.type === \"candlestick\" || trace.type === \"ohlc\") {\n var increasingShowlegend = (trace.increasing || {}).showlegend !== false;\n var decreasingShowlegend = (trace.decreasing || {}).showlegend !== false;\n var increasingName = cleanFinanceDir(trace.increasing);\n var decreasingName = cleanFinanceDir(trace.decreasing);\n if (increasingName !== false && decreasingName !== false) {\n var newName = commonPrefix(\n increasingName,\n decreasingName,\n increasingShowlegend,\n decreasingShowlegend\n );\n if (newName) trace.name = newName;\n } else if ((increasingName || decreasingName) && !trace.name) {\n trace.name = increasingName || decreasingName;\n }\n }\n if (emptyContainer(trace, \"line\")) delete trace.line;\n if (\"marker\" in trace) {\n if (emptyContainer(trace.marker, \"line\")) delete trace.marker.line;\n if (emptyContainer(trace, \"marker\")) delete trace.marker;\n }\n Color.clean(trace);\n if (trace.autobinx) {\n delete trace.autobinx;\n delete trace.xbins;\n }\n if (trace.autobiny) {\n delete trace.autobiny;\n delete trace.ybins;\n }\n }\n };\n function cleanFinanceDir(dirContainer) {\n if (!Lib.isPlainObject(dirContainer)) return false;\n var dirName = dirContainer.name;\n delete dirContainer.name;\n delete dirContainer.showlegend;\n return (typeof dirName === \"string\" || typeof dirName === \"number\") && String(dirName);\n }\n function commonPrefix(name1, name2, show1, show2) {\n if (show1 && !show2) return name1;\n if (show2 && !show1) return name2;\n if (!name1.trim()) return name2;\n if (!name2.trim()) return name1;\n var minLen = Math.min(name1.length, name2.length);\n var i;\n for (i = 0; i < minLen; i++) {\n if (name1.charAt(i) !== name2.charAt(i)) break;\n }\n var out = name1.substr(0, i);\n return out.trim();\n }\n function cleanTextPosition(textposition) {\n var posY = \"middle\";\n var posX = \"center\";\n if (typeof textposition === \"string\") {\n if (textposition.indexOf(\"top\") !== -1) posY = \"top\";\n else if (textposition.indexOf(\"bottom\") !== -1) posY = \"bottom\";\n if (textposition.indexOf(\"left\") !== -1) posX = \"left\";\n else if (textposition.indexOf(\"right\") !== -1) posX = \"right\";\n }\n return posY + \" \" + posX;\n }\n function emptyContainer(outer, innerStr) {\n return innerStr in outer && typeof outer[innerStr] === \"object\" && Object.keys(outer[innerStr]).length === 0;\n }\n exports.swapXYData = function(trace) {\n var i;\n Lib.swapAttrs(trace, [\"?\", \"?0\", \"d?\", \"?bins\", \"nbins?\", \"autobin?\", \"?src\", \"error_?\"]);\n if (Array.isArray(trace.z) && Array.isArray(trace.z[0])) {\n if (trace.transpose) delete trace.transpose;\n else trace.transpose = true;\n }\n if (trace.error_x && trace.error_y) {\n var errorY = trace.error_y;\n var copyYstyle = \"copy_ystyle\" in errorY ? errorY.copy_ystyle : !(errorY.color || errorY.thickness || errorY.width);\n Lib.swapAttrs(trace, [\"error_?.copy_ystyle\"]);\n if (copyYstyle) {\n Lib.swapAttrs(trace, [\"error_?.color\", \"error_?.thickness\", \"error_?.width\"]);\n }\n }\n if (typeof trace.hoverinfo === \"string\") {\n var hoverInfoParts = trace.hoverinfo.split(\"+\");\n for (i = 0; i < hoverInfoParts.length; i++) {\n if (hoverInfoParts[i] === \"x\") hoverInfoParts[i] = \"y\";\n else if (hoverInfoParts[i] === \"y\") hoverInfoParts[i] = \"x\";\n }\n trace.hoverinfo = hoverInfoParts.join(\"+\");\n }\n };\n exports.coerceTraceIndices = function(gd, traceIndices) {\n if (isNumeric(traceIndices)) {\n return [traceIndices];\n } else if (!Array.isArray(traceIndices) || !traceIndices.length) {\n return gd.data.map(function(_, i2) {\n return i2;\n });\n } else if (Array.isArray(traceIndices)) {\n var traceIndicesOut = [];\n for (var i = 0; i < traceIndices.length; i++) {\n if (Lib.isIndex(traceIndices[i], gd.data.length)) {\n traceIndicesOut.push(traceIndices[i]);\n } else {\n Lib.warn(\"trace index (\", traceIndices[i], \") is not a number or is out of bounds\");\n }\n }\n return traceIndicesOut;\n }\n return traceIndices;\n };\n exports.manageArrayContainers = function(np, newVal, undoit) {\n var obj = np.obj;\n var parts = np.parts;\n var pLength = parts.length;\n var pLast = parts[pLength - 1];\n var pLastIsNumber = isNumeric(pLast);\n if (pLastIsNumber && newVal === null) {\n var contPath = parts.slice(0, pLength - 1).join(\".\");\n var cont = Lib.nestedProperty(obj, contPath).get();\n cont.splice(pLast, 1);\n } else if (pLastIsNumber && np.get() === void 0) {\n if (np.get() === void 0) undoit[np.astr] = null;\n np.set(newVal);\n } else {\n np.set(newVal);\n }\n };\n var ATTR_TAIL_RE = /(\\.[^\\[\\]\\.]+|\\[[^\\[\\]\\.]+\\])$/;\n function getParent(attr) {\n var tail = attr.search(ATTR_TAIL_RE);\n if (tail > 0) return attr.substr(0, tail);\n }\n exports.hasParent = function(aobj, attr) {\n var attrParent = getParent(attr);\n while (attrParent) {\n if (attrParent in aobj) return true;\n attrParent = getParent(attrParent);\n }\n return false;\n };\n var axLetters = [\"x\", \"y\", \"z\"];\n exports.clearAxisTypes = function(gd, traces, layoutUpdate) {\n for (var i = 0; i < traces.length; i++) {\n var trace = gd._fullData[i];\n for (var j = 0; j < 3; j++) {\n var ax = getFromTrace(gd, trace, axLetters[j]);\n if (ax && ax.type !== \"log\") {\n var axAttr = ax._name;\n var sceneName = ax._id.substr(1);\n if (sceneName.substr(0, 5) === \"scene\") {\n if (layoutUpdate[sceneName] !== void 0) continue;\n axAttr = sceneName + \".\" + axAttr;\n }\n var typeAttr = axAttr + \".type\";\n if (layoutUpdate[axAttr] === void 0 && layoutUpdate[typeAttr] === void 0) {\n Lib.nestedProperty(gd.layout, typeAttr).set(null);\n }\n }\n }\n }\n };\n }\n });\n\n // src/plot_api/plot_api.js\n var require_plot_api = __commonJS({\n \"src/plot_api/plot_api.js\"(exports) {\n \"use strict\";\n var d3 = require_d3();\n var isNumeric = require_fast_isnumeric();\n var hasHover = require_has_hover();\n var Lib = require_lib();\n var nestedProperty = Lib.nestedProperty;\n var Events = require_events2();\n var Queue = require_queue();\n var Registry = require_registry();\n var PlotSchema = require_plot_schema();\n var Plots = require_plots();\n var Axes = require_axes();\n var handleRangeDefaults = require_range_defaults();\n var cartesianLayoutAttributes = require_layout_attributes4();\n var Drawing = require_drawing();\n var Color = require_color();\n var initInteractions = require_graph_interact().initInteractions;\n var xmlnsNamespaces = require_xmlns_namespaces();\n var clearOutline = require_selections().clearOutline;\n var dfltConfig = require_plot_config().dfltConfig;\n var manageArrays = require_manage_arrays();\n var helpers = require_helpers9();\n var subroutines = require_subroutines();\n var editTypes = require_edit_types();\n var AX_NAME_PATTERN = require_constants2().AX_NAME_PATTERN;\n var numericNameWarningCount = 0;\n var numericNameWarningCountLimit = 5;\n function _doPlot(gd, data, layout, config) {\n var frames;\n gd = Lib.getGraphDiv(gd);\n Events.init(gd);\n if (Lib.isPlainObject(data)) {\n var obj = data;\n data = obj.data;\n layout = obj.layout;\n config = obj.config;\n frames = obj.frames;\n }\n var okToPlot = Events.triggerHandler(gd, \"plotly_beforeplot\", [data, layout, config]);\n if (okToPlot === false) return Promise.reject();\n if (!data && !layout && !Lib.isPlotDiv(gd)) {\n Lib.warn(\"Calling _doPlot as if redrawing but this container doesn't yet have a plot.\", gd);\n }\n function addFrames2() {\n if (frames) {\n return exports.addFrames(gd, frames);\n }\n }\n setPlotContext(gd, config);\n if (!layout) layout = {};\n d3.select(gd).classed(\"js-plotly-plot\", true);\n Drawing.makeTester();\n if (!Array.isArray(gd._promises)) gd._promises = [];\n var graphWasEmpty = (gd.data || []).length === 0 && Array.isArray(data);\n if (Array.isArray(data)) {\n helpers.cleanData(data);\n if (graphWasEmpty) gd.data = data;\n else gd.data.push.apply(gd.data, data);\n gd.empty = false;\n }\n if (!gd.layout || graphWasEmpty) {\n gd.layout = helpers.cleanLayout(layout);\n }\n Plots.supplyDefaults(gd);\n var fullLayout = gd._fullLayout;\n var hasCartesian = fullLayout._has(\"cartesian\");\n fullLayout._replotting = true;\n if (graphWasEmpty || fullLayout._shouldCreateBgLayer) {\n makePlotFramework(gd);\n if (fullLayout._shouldCreateBgLayer) {\n delete fullLayout._shouldCreateBgLayer;\n }\n }\n Drawing.initGradients(gd);\n Drawing.initPatterns(gd);\n if (graphWasEmpty) Axes.saveShowSpikeInitial(gd);\n var recalc = !gd.calcdata || gd.calcdata.length !== (gd._fullData || []).length;\n if (recalc) Plots.doCalcdata(gd);\n for (var i = 0; i < gd.calcdata.length; i++) {\n gd.calcdata[i][0].trace = gd._fullData[i];\n }\n if (gd._context.responsive) {\n if (!gd._responsiveChartHandler) {\n gd._responsiveChartHandler = function() {\n if (!Lib.isHidden(gd)) Plots.resize(gd);\n };\n window.addEventListener(\"resize\", gd._responsiveChartHandler);\n }\n } else {\n Lib.clearResponsive(gd);\n }\n var oldMargins = Lib.extendFlat({}, fullLayout._size);\n var drawFrameworkCalls = 0;\n function drawFramework() {\n var basePlotModules = fullLayout._basePlotModules;\n for (var i2 = 0; i2 < basePlotModules.length; i2++) {\n if (basePlotModules[i2].drawFramework) {\n basePlotModules[i2].drawFramework(gd);\n }\n }\n if (!fullLayout._glcanvas && fullLayout._has(\"gl\")) {\n fullLayout._glcanvas = fullLayout._glcontainer.selectAll(\".gl-canvas\").data([{\n key: \"contextLayer\",\n context: true,\n pick: false\n }, {\n key: \"focusLayer\",\n context: false,\n pick: false\n }, {\n key: \"pickLayer\",\n context: false,\n pick: true\n }], function(d) {\n return d.key;\n });\n fullLayout._glcanvas.enter().append(\"canvas\").attr(\"class\", function(d) {\n return \"gl-canvas gl-canvas-\" + d.key.replace(\"Layer\", \"\");\n }).style({\n position: \"absolute\",\n top: 0,\n left: 0,\n overflow: \"visible\",\n \"pointer-events\": \"none\"\n });\n }\n var plotGlPixelRatio = gd._context.plotGlPixelRatio;\n if (fullLayout._glcanvas) {\n fullLayout._glcanvas.attr(\"width\", fullLayout.width * plotGlPixelRatio).attr(\"height\", fullLayout.height * plotGlPixelRatio).style(\"width\", fullLayout.width + \"px\").style(\"height\", fullLayout.height + \"px\");\n var regl = fullLayout._glcanvas.data()[0].regl;\n if (regl) {\n if (Math.floor(fullLayout.width * plotGlPixelRatio) !== regl._gl.drawingBufferWidth || Math.floor(fullLayout.height * plotGlPixelRatio) !== regl._gl.drawingBufferHeight) {\n var msg = \"WebGL context buffer and canvas dimensions do not match due to browser/WebGL bug.\";\n if (drawFrameworkCalls) {\n Lib.error(msg);\n } else {\n Lib.log(msg + \" Clearing graph and plotting again.\");\n Plots.cleanPlot([], {}, gd._fullData, fullLayout);\n Plots.supplyDefaults(gd);\n fullLayout = gd._fullLayout;\n Plots.doCalcdata(gd);\n drawFrameworkCalls++;\n return drawFramework();\n }\n }\n }\n }\n if (fullLayout.modebar.orientation === \"h\") {\n fullLayout._modebardiv.style(\"height\", null).style(\"width\", \"100%\");\n } else {\n fullLayout._modebardiv.style(\"width\", null).style(\"height\", fullLayout.height + \"px\");\n }\n return Plots.previousPromises(gd);\n }\n function marginPushers() {\n Plots.clearAutoMarginIds(gd);\n subroutines.drawMarginPushers(gd);\n Axes.allowAutoMargin(gd);\n if (gd._fullLayout.title.text && gd._fullLayout.title.automargin) Plots.allowAutoMargin(gd, \"title.automargin\");\n if (fullLayout._has(\"pie\")) {\n var fullData = gd._fullData;\n for (var i2 = 0; i2 < fullData.length; i2++) {\n var trace = fullData[i2];\n if (trace.type === \"pie\" && trace.automargin) {\n Plots.allowAutoMargin(gd, \"pie.\" + trace.uid + \".automargin\");\n }\n }\n }\n Plots.doAutoMargin(gd);\n return Plots.previousPromises(gd);\n }\n function marginPushersAgain() {\n if (!Plots.didMarginChange(oldMargins, fullLayout._size)) return;\n return Lib.syncOrAsync([\n marginPushers,\n subroutines.layoutStyles\n ], gd);\n }\n function positionAndAutorange() {\n if (!recalc) {\n doAutoRangeAndConstraints();\n return;\n }\n return Lib.syncOrAsync([\n Registry.getComponentMethod(\"shapes\", \"calcAutorange\"),\n Registry.getComponentMethod(\"annotations\", \"calcAutorange\"),\n doAutoRangeAndConstraints\n ], gd);\n }\n function doAutoRangeAndConstraints() {\n if (gd._transitioning) return;\n subroutines.doAutoRangeAndConstraints(gd);\n if (graphWasEmpty) Axes.saveRangeInitial(gd);\n Registry.getComponentMethod(\"rangeslider\", \"calcAutorange\")(gd);\n }\n function drawAxes() {\n return Axes.draw(gd, graphWasEmpty ? \"\" : \"redraw\");\n }\n var seq = [\n Plots.previousPromises,\n addFrames2,\n drawFramework,\n marginPushers,\n marginPushersAgain\n ];\n if (hasCartesian) seq.push(positionAndAutorange);\n seq.push(subroutines.layoutStyles);\n if (hasCartesian) {\n seq.push(\n drawAxes,\n function insideTickLabelsAutorange(gd2) {\n var insideTickLabelsUpdaterange = gd2._fullLayout._insideTickLabelsUpdaterange;\n if (insideTickLabelsUpdaterange) {\n gd2._fullLayout._insideTickLabelsUpdaterange = void 0;\n return relayout(gd2, insideTickLabelsUpdaterange).then(function() {\n Axes.saveRangeInitial(gd2, true);\n });\n }\n }\n );\n }\n seq.push(\n subroutines.drawData,\n subroutines.finalDraw,\n initInteractions,\n Plots.addLinks,\n Plots.rehover,\n Plots.redrag,\n Plots.reselect,\n // TODO: doAutoMargin is only needed here for axis automargin, which\n // happens outside of marginPushers where all the other automargins are\n // calculated. Would be much better to separate margin calculations from\n // component drawing - see https://github.com/plotly/plotly.js/issues/2704\n Plots.doAutoMargin,\n Plots.previousPromises\n );\n var plotDone = Lib.syncOrAsync(seq, gd);\n if (!plotDone || !plotDone.then) plotDone = Promise.resolve();\n return plotDone.then(function() {\n emitAfterPlot(gd);\n return gd;\n });\n }\n function emitAfterPlot(gd) {\n var fullLayout = gd._fullLayout;\n if (fullLayout._redrawFromAutoMarginCount) {\n fullLayout._redrawFromAutoMarginCount--;\n } else {\n gd.emit(\"plotly_afterplot\");\n }\n }\n function setPlotConfig(obj) {\n return Lib.extendFlat(dfltConfig, obj);\n }\n function setBackground(gd, bgColor) {\n try {\n gd._fullLayout._paper.style(\"background\", bgColor);\n } catch (e) {\n Lib.error(e);\n }\n }\n function opaqueSetBackground(gd, bgColor) {\n var blend = Color.combine(bgColor, \"white\");\n setBackground(gd, blend);\n }\n function setPlotContext(gd, config) {\n if (!gd._context) {\n gd._context = Lib.extendDeep({}, dfltConfig);\n var base = d3.select(\"base\");\n gd._context._baseUrl = base.size() && base.attr(\"href\") ? window.location.href.split(\"#\")[0] : \"\";\n }\n var context = gd._context;\n var i, keys, key;\n if (config) {\n keys = Object.keys(config);\n for (i = 0; i < keys.length; i++) {\n key = keys[i];\n if (key === \"editable\" || key === \"edits\") continue;\n if (key in context) {\n if (key === \"setBackground\" && config[key] === \"opaque\") {\n context[key] = opaqueSetBackground;\n } else {\n context[key] = config[key];\n }\n }\n }\n var editable = config.editable;\n if (editable !== void 0) {\n context.editable = editable;\n keys = Object.keys(context.edits);\n for (i = 0; i < keys.length; i++) {\n context.edits[keys[i]] = editable;\n }\n }\n if (config.edits) {\n keys = Object.keys(config.edits);\n for (i = 0; i < keys.length; i++) {\n key = keys[i];\n if (key in context.edits) {\n context.edits[key] = config.edits[key];\n }\n }\n }\n context._exportedPlot = config._exportedPlot;\n }\n if (context.staticPlot) {\n context.editable = false;\n context.edits = {};\n context.autosizable = false;\n context.scrollZoom = false;\n context.doubleClick = false;\n context.showTips = false;\n context.showLink = false;\n context.displayModeBar = false;\n }\n if (context.displayModeBar === \"hover\" && !hasHover) {\n context.displayModeBar = true;\n }\n if (context.setBackground === \"transparent\" || typeof context.setBackground !== \"function\") {\n context.setBackground = setBackground;\n }\n context._hasZeroHeight = context._hasZeroHeight || gd.clientHeight === 0;\n context._hasZeroWidth = context._hasZeroWidth || gd.clientWidth === 0;\n var szIn = context.scrollZoom;\n var szOut = context._scrollZoom = {};\n if (szIn === true) {\n szOut.cartesian = 1;\n szOut.gl3d = 1;\n szOut.geo = 1;\n szOut.mapbox = 1;\n szOut.map = 1;\n } else if (typeof szIn === \"string\") {\n var parts = szIn.split(\"+\");\n for (i = 0; i < parts.length; i++) {\n szOut[parts[i]] = 1;\n }\n } else if (szIn !== false) {\n szOut.gl3d = 1;\n szOut.geo = 1;\n szOut.mapbox = 1;\n szOut.map = 1;\n }\n }\n function redraw(gd) {\n gd = Lib.getGraphDiv(gd);\n if (!Lib.isPlotDiv(gd)) {\n throw new Error(\"This element is not a Plotly plot: \" + gd);\n }\n helpers.cleanData(gd.data);\n helpers.cleanLayout(gd.layout);\n gd.calcdata = void 0;\n return exports._doPlot(gd).then(function() {\n gd.emit(\"plotly_redraw\");\n return gd;\n });\n }\n function newPlot(gd, data, layout, config) {\n gd = Lib.getGraphDiv(gd);\n Plots.cleanPlot([], {}, gd._fullData || [], gd._fullLayout || {});\n Plots.purge(gd);\n return exports._doPlot(gd, data, layout, config);\n }\n function positivifyIndices(indices, maxIndex) {\n var parentLength = maxIndex + 1;\n var positiveIndices = [];\n var i;\n var index;\n for (i = 0; i < indices.length; i++) {\n index = indices[i];\n if (index < 0) {\n positiveIndices.push(parentLength + index);\n } else {\n positiveIndices.push(index);\n }\n }\n return positiveIndices;\n }\n function assertIndexArray(gd, indices, arrayName) {\n var i, index;\n for (i = 0; i < indices.length; i++) {\n index = indices[i];\n if (index !== parseInt(index, 10)) {\n throw new Error(\"all values in \" + arrayName + \" must be integers\");\n }\n if (index >= gd.data.length || index < -gd.data.length) {\n throw new Error(arrayName + \" must be valid indices for gd.data.\");\n }\n if (indices.indexOf(index, i + 1) > -1 || index >= 0 && indices.indexOf(-gd.data.length + index) > -1 || index < 0 && indices.indexOf(gd.data.length + index) > -1) {\n throw new Error(\"each index in \" + arrayName + \" must be unique.\");\n }\n }\n }\n function checkMoveTracesArgs(gd, currentIndices, newIndices) {\n if (!Array.isArray(gd.data)) {\n throw new Error(\"gd.data must be an array.\");\n }\n if (typeof currentIndices === \"undefined\") {\n throw new Error(\"currentIndices is a required argument.\");\n } else if (!Array.isArray(currentIndices)) {\n currentIndices = [currentIndices];\n }\n assertIndexArray(gd, currentIndices, \"currentIndices\");\n if (typeof newIndices !== \"undefined\" && !Array.isArray(newIndices)) {\n newIndices = [newIndices];\n }\n if (typeof newIndices !== \"undefined\") {\n assertIndexArray(gd, newIndices, \"newIndices\");\n }\n if (typeof newIndices !== \"undefined\" && currentIndices.length !== newIndices.length) {\n throw new Error(\"current and new indices must be of equal length.\");\n }\n }\n function checkAddTracesArgs(gd, traces, newIndices) {\n var i, value;\n if (!Array.isArray(gd.data)) {\n throw new Error(\"gd.data must be an array.\");\n }\n if (typeof traces === \"undefined\") {\n throw new Error(\"traces must be defined.\");\n }\n if (!Array.isArray(traces)) {\n traces = [traces];\n }\n for (i = 0; i < traces.length; i++) {\n value = traces[i];\n if (typeof value !== \"object\" || (Array.isArray(value) || value === null)) {\n throw new Error(\"all values in traces array must be non-array objects\");\n }\n }\n if (typeof newIndices !== \"undefined\" && !Array.isArray(newIndices)) {\n newIndices = [newIndices];\n }\n if (typeof newIndices !== \"undefined\" && newIndices.length !== traces.length) {\n throw new Error(\n \"if indices is specified, traces.length must equal indices.length\"\n );\n }\n }\n function assertExtendTracesArgs(gd, update2, indices, maxPoints) {\n var maxPointsIsObject = Lib.isPlainObject(maxPoints);\n if (!Array.isArray(gd.data)) {\n throw new Error(\"gd.data must be an array\");\n }\n if (!Lib.isPlainObject(update2)) {\n throw new Error(\"update must be a key:value object\");\n }\n if (typeof indices === \"undefined\") {\n throw new Error(\"indices must be an integer or array of integers\");\n }\n assertIndexArray(gd, indices, \"indices\");\n for (var key in update2) {\n if (!Array.isArray(update2[key]) || update2[key].length !== indices.length) {\n throw new Error(\"attribute \" + key + \" must be an array of length equal to indices array length\");\n }\n if (maxPointsIsObject && (!(key in maxPoints) || !Array.isArray(maxPoints[key]) || maxPoints[key].length !== update2[key].length)) {\n throw new Error(\"when maxPoints is set as a key:value object it must contain a 1:1 corrispondence with the keys and number of traces in the update object\");\n }\n }\n }\n function getExtendProperties(gd, update2, indices, maxPoints) {\n var maxPointsIsObject = Lib.isPlainObject(maxPoints);\n var updateProps = [];\n var trace, target, prop, insert, maxp;\n if (!Array.isArray(indices)) indices = [indices];\n indices = positivifyIndices(indices, gd.data.length - 1);\n for (var key in update2) {\n for (var j = 0; j < indices.length; j++) {\n trace = gd.data[indices[j]];\n prop = nestedProperty(trace, key);\n target = prop.get();\n insert = update2[key][j];\n if (!Lib.isArrayOrTypedArray(insert)) {\n throw new Error(\"attribute: \" + key + \" index: \" + j + \" must be an array\");\n }\n if (!Lib.isArrayOrTypedArray(target)) {\n throw new Error(\"cannot extend missing or non-array attribute: \" + key);\n }\n if (target.constructor !== insert.constructor) {\n throw new Error(\"cannot extend array with an array of a different type: \" + key);\n }\n maxp = maxPointsIsObject ? maxPoints[key][j] : maxPoints;\n if (!isNumeric(maxp)) maxp = -1;\n updateProps.push({\n prop,\n target,\n insert,\n maxp: Math.floor(maxp)\n });\n }\n }\n return updateProps;\n }\n function spliceTraces(gd, update2, indices, maxPoints, updateArray) {\n assertExtendTracesArgs(gd, update2, indices, maxPoints);\n var updateProps = getExtendProperties(gd, update2, indices, maxPoints);\n var undoUpdate = {};\n var undoPoints = {};\n for (var i = 0; i < updateProps.length; i++) {\n var prop = updateProps[i].prop;\n var maxp = updateProps[i].maxp;\n var out = updateArray(updateProps[i].target, updateProps[i].insert, maxp);\n prop.set(out[0]);\n if (!Array.isArray(undoUpdate[prop.astr])) undoUpdate[prop.astr] = [];\n undoUpdate[prop.astr].push(out[1]);\n if (!Array.isArray(undoPoints[prop.astr])) undoPoints[prop.astr] = [];\n undoPoints[prop.astr].push(updateProps[i].target.length);\n }\n return { update: undoUpdate, maxPoints: undoPoints };\n }\n function concatTypedArray(arr0, arr1) {\n var arr2 = new arr0.constructor(arr0.length + arr1.length);\n arr2.set(arr0);\n arr2.set(arr1, arr0.length);\n return arr2;\n }\n function extendTraces(gd, update2, indices, maxPoints) {\n gd = Lib.getGraphDiv(gd);\n function updateArray(target, insert, maxp) {\n var newArray, remainder;\n if (Lib.isTypedArray(target)) {\n if (maxp < 0) {\n var none = new target.constructor(0);\n var both = concatTypedArray(target, insert);\n if (maxp < 0) {\n newArray = both;\n remainder = none;\n } else {\n newArray = none;\n remainder = both;\n }\n } else {\n newArray = new target.constructor(maxp);\n remainder = new target.constructor(target.length + insert.length - maxp);\n if (maxp === insert.length) {\n newArray.set(insert);\n remainder.set(target);\n } else if (maxp < insert.length) {\n var numberOfItemsFromInsert = insert.length - maxp;\n newArray.set(insert.subarray(numberOfItemsFromInsert));\n remainder.set(target);\n remainder.set(insert.subarray(0, numberOfItemsFromInsert), target.length);\n } else {\n var numberOfItemsFromTarget = maxp - insert.length;\n var targetBegin = target.length - numberOfItemsFromTarget;\n newArray.set(target.subarray(targetBegin));\n newArray.set(insert, numberOfItemsFromTarget);\n remainder.set(target.subarray(0, targetBegin));\n }\n }\n } else {\n newArray = target.concat(insert);\n remainder = maxp >= 0 && maxp < newArray.length ? newArray.splice(0, newArray.length - maxp) : [];\n }\n return [newArray, remainder];\n }\n var undo = spliceTraces(gd, update2, indices, maxPoints, updateArray);\n var promise = exports.redraw(gd);\n var undoArgs = [gd, undo.update, indices, undo.maxPoints];\n Queue.add(gd, exports.prependTraces, undoArgs, extendTraces, arguments);\n return promise;\n }\n function prependTraces(gd, update2, indices, maxPoints) {\n gd = Lib.getGraphDiv(gd);\n function updateArray(target, insert, maxp) {\n var newArray, remainder;\n if (Lib.isTypedArray(target)) {\n if (maxp <= 0) {\n var none = new target.constructor(0);\n var both = concatTypedArray(insert, target);\n if (maxp < 0) {\n newArray = both;\n remainder = none;\n } else {\n newArray = none;\n remainder = both;\n }\n } else {\n newArray = new target.constructor(maxp);\n remainder = new target.constructor(target.length + insert.length - maxp);\n if (maxp === insert.length) {\n newArray.set(insert);\n remainder.set(target);\n } else if (maxp < insert.length) {\n var numberOfItemsFromInsert = insert.length - maxp;\n newArray.set(insert.subarray(0, numberOfItemsFromInsert));\n remainder.set(insert.subarray(numberOfItemsFromInsert));\n remainder.set(target, numberOfItemsFromInsert);\n } else {\n var numberOfItemsFromTarget = maxp - insert.length;\n newArray.set(insert);\n newArray.set(target.subarray(0, numberOfItemsFromTarget), insert.length);\n remainder.set(target.subarray(numberOfItemsFromTarget));\n }\n }\n } else {\n newArray = insert.concat(target);\n remainder = maxp >= 0 && maxp < newArray.length ? newArray.splice(maxp, newArray.length) : [];\n }\n return [newArray, remainder];\n }\n var undo = spliceTraces(gd, update2, indices, maxPoints, updateArray);\n var promise = exports.redraw(gd);\n var undoArgs = [gd, undo.update, indices, undo.maxPoints];\n Queue.add(gd, exports.extendTraces, undoArgs, prependTraces, arguments);\n return promise;\n }\n function addTraces(gd, traces, newIndices) {\n gd = Lib.getGraphDiv(gd);\n var currentIndices = [];\n var undoFunc = exports.deleteTraces;\n var redoFunc = addTraces;\n var undoArgs = [gd, currentIndices];\n var redoArgs = [gd, traces];\n var i;\n var promise;\n checkAddTracesArgs(gd, traces, newIndices);\n if (!Array.isArray(traces)) {\n traces = [traces];\n }\n traces = traces.map(function(trace) {\n return Lib.extendFlat({}, trace);\n });\n helpers.cleanData(traces);\n for (i = 0; i < traces.length; i++) {\n gd.data.push(traces[i]);\n }\n for (i = 0; i < traces.length; i++) {\n currentIndices.push(-traces.length + i);\n }\n if (typeof newIndices === \"undefined\") {\n promise = exports.redraw(gd);\n Queue.add(gd, undoFunc, undoArgs, redoFunc, redoArgs);\n return promise;\n }\n if (!Array.isArray(newIndices)) {\n newIndices = [newIndices];\n }\n try {\n checkMoveTracesArgs(gd, currentIndices, newIndices);\n } catch (error) {\n gd.data.splice(gd.data.length - traces.length, traces.length);\n throw error;\n }\n Queue.startSequence(gd);\n Queue.add(gd, undoFunc, undoArgs, redoFunc, redoArgs);\n promise = exports.moveTraces(gd, currentIndices, newIndices);\n Queue.stopSequence(gd);\n return promise;\n }\n function deleteTraces(gd, indices) {\n gd = Lib.getGraphDiv(gd);\n var traces = [];\n var undoFunc = exports.addTraces;\n var redoFunc = deleteTraces;\n var undoArgs = [gd, traces, indices];\n var redoArgs = [gd, indices];\n var i;\n var deletedTrace;\n if (typeof indices === \"undefined\") {\n throw new Error(\"indices must be an integer or array of integers.\");\n } else if (!Array.isArray(indices)) {\n indices = [indices];\n }\n assertIndexArray(gd, indices, \"indices\");\n indices = positivifyIndices(indices, gd.data.length - 1);\n indices.sort(Lib.sorterDes);\n for (i = 0; i < indices.length; i += 1) {\n deletedTrace = gd.data.splice(indices[i], 1)[0];\n traces.push(deletedTrace);\n }\n var promise = exports.redraw(gd);\n Queue.add(gd, undoFunc, undoArgs, redoFunc, redoArgs);\n return promise;\n }\n function moveTraces(gd, currentIndices, newIndices) {\n gd = Lib.getGraphDiv(gd);\n var newData = [];\n var movingTraceMap = [];\n var undoFunc = moveTraces;\n var redoFunc = moveTraces;\n var undoArgs = [gd, newIndices, currentIndices];\n var redoArgs = [gd, currentIndices, newIndices];\n var i;\n checkMoveTracesArgs(gd, currentIndices, newIndices);\n currentIndices = Array.isArray(currentIndices) ? currentIndices : [currentIndices];\n if (typeof newIndices === \"undefined\") {\n newIndices = [];\n for (i = 0; i < currentIndices.length; i++) {\n newIndices.push(-currentIndices.length + i);\n }\n }\n newIndices = Array.isArray(newIndices) ? newIndices : [newIndices];\n currentIndices = positivifyIndices(currentIndices, gd.data.length - 1);\n newIndices = positivifyIndices(newIndices, gd.data.length - 1);\n for (i = 0; i < gd.data.length; i++) {\n if (currentIndices.indexOf(i) === -1) {\n newData.push(gd.data[i]);\n }\n }\n for (i = 0; i < currentIndices.length; i++) {\n movingTraceMap.push({ newIndex: newIndices[i], trace: gd.data[currentIndices[i]] });\n }\n movingTraceMap.sort(function(a, b) {\n return a.newIndex - b.newIndex;\n });\n for (i = 0; i < movingTraceMap.length; i += 1) {\n newData.splice(movingTraceMap[i].newIndex, 0, movingTraceMap[i].trace);\n }\n gd.data = newData;\n var promise = exports.redraw(gd);\n Queue.add(gd, undoFunc, undoArgs, redoFunc, redoArgs);\n return promise;\n }\n function restyle(gd, astr, val, _traces) {\n gd = Lib.getGraphDiv(gd);\n helpers.clearPromiseQueue(gd);\n var aobj = {};\n if (typeof astr === \"string\") aobj[astr] = val;\n else if (Lib.isPlainObject(astr)) {\n aobj = Lib.extendFlat({}, astr);\n if (_traces === void 0) _traces = val;\n } else {\n Lib.warn(\"Restyle fail.\", astr, val, _traces);\n return Promise.reject();\n }\n if (Object.keys(aobj).length) gd.changed = true;\n var traces = helpers.coerceTraceIndices(gd, _traces);\n var specs = _restyle(gd, aobj, traces);\n var flags = specs.flags;\n if (flags.calc) gd.calcdata = void 0;\n if (flags.clearAxisTypes) helpers.clearAxisTypes(gd, traces, {});\n var seq = [];\n if (flags.fullReplot) {\n seq.push(exports._doPlot);\n } else {\n seq.push(Plots.previousPromises);\n Plots.supplyDefaults(gd);\n if (flags.markerSize) {\n Plots.doCalcdata(gd);\n addAxRangeSequence(seq);\n }\n if (flags.style) seq.push(subroutines.doTraceStyle);\n if (flags.colorbars) seq.push(subroutines.doColorBars);\n seq.push(emitAfterPlot);\n }\n seq.push(\n Plots.rehover,\n Plots.redrag,\n Plots.reselect\n );\n Queue.add(\n gd,\n restyle,\n [gd, specs.undoit, specs.traces],\n restyle,\n [gd, specs.redoit, specs.traces]\n );\n var plotDone = Lib.syncOrAsync(seq, gd);\n if (!plotDone || !plotDone.then) plotDone = Promise.resolve();\n return plotDone.then(function() {\n gd.emit(\"plotly_restyle\", specs.eventData);\n return gd;\n });\n }\n function undefinedToNull(val) {\n if (val === void 0) return null;\n return val;\n }\n function makeNP(preGUI, guiEditFlag) {\n if (!guiEditFlag) return nestedProperty;\n return function(container, attr, prefix) {\n var np = nestedProperty(container, attr);\n var npSet = np.set;\n np.set = function(val) {\n var fullAttr = (prefix || \"\") + attr;\n storeCurrent(fullAttr, np.get(), val, preGUI);\n npSet(val);\n };\n return np;\n };\n }\n function storeCurrent(attr, val, newVal, preGUI) {\n if (Array.isArray(val) || Array.isArray(newVal)) {\n var arrayVal = Array.isArray(val) ? val : [];\n var arrayNew = Array.isArray(newVal) ? newVal : [];\n var maxLen = Math.max(arrayVal.length, arrayNew.length);\n for (var i = 0; i < maxLen; i++) {\n storeCurrent(attr + \"[\" + i + \"]\", arrayVal[i], arrayNew[i], preGUI);\n }\n } else if (Lib.isPlainObject(val) || Lib.isPlainObject(newVal)) {\n var objVal = Lib.isPlainObject(val) ? val : {};\n var objNew = Lib.isPlainObject(newVal) ? newVal : {};\n var objBoth = Lib.extendFlat({}, objVal, objNew);\n for (var key in objBoth) {\n storeCurrent(attr + \".\" + key, objVal[key], objNew[key], preGUI);\n }\n } else if (preGUI[attr] === void 0) {\n preGUI[attr] = undefinedToNull(val);\n }\n }\n function _storeDirectGUIEdit(container, preGUI, edits) {\n for (var attr in edits) {\n var np = nestedProperty(container, attr);\n storeCurrent(attr, np.get(), edits[attr], preGUI);\n }\n }\n function _restyle(gd, aobj, traces) {\n var fullLayout = gd._fullLayout;\n var fullData = gd._fullData;\n var data = gd.data;\n var guiEditFlag = fullLayout._guiEditing;\n var layoutNP = makeNP(fullLayout._preGUI, guiEditFlag);\n var eventData = Lib.extendDeepAll({}, aobj);\n var i;\n var flags = editTypes.traceFlags();\n var redoit = {};\n var undoit = {};\n var axlist;\n function a0() {\n return traces.map(function() {\n return void 0;\n });\n }\n function addToAxlist(axid) {\n var axName = Axes.id2name(axid);\n if (axlist.indexOf(axName) === -1) axlist.push(axName);\n }\n function autorangeAttr(axName) {\n return \"LAYOUT\" + axName + \".autorange\";\n }\n function rangeAttr(axName) {\n return \"LAYOUT\" + axName + \".range\";\n }\n function getFullTrace(traceIndex) {\n for (var j = traceIndex; j < fullData.length; j++) {\n if (fullData[j]._input === data[traceIndex]) return fullData[j];\n }\n }\n function doextra(attr, val, i2) {\n if (Array.isArray(attr)) {\n attr.forEach(function(a) {\n doextra(a, val, i2);\n });\n return;\n }\n if (attr in aobj || helpers.hasParent(aobj, attr)) return;\n var extraparam;\n if (attr.substr(0, 6) === \"LAYOUT\") {\n extraparam = layoutNP(gd.layout, attr.replace(\"LAYOUT\", \"\"));\n } else {\n var tracei = traces[i2];\n var preGUI2 = fullLayout._tracePreGUI[getFullTrace(tracei)._fullInput.uid];\n extraparam = makeNP(preGUI2, guiEditFlag)(data[tracei], attr);\n }\n if (!(attr in undoit)) {\n undoit[attr] = a0();\n }\n if (undoit[attr][i2] === void 0) {\n undoit[attr][i2] = undefinedToNull(extraparam.get());\n }\n if (val !== void 0) {\n extraparam.set(val);\n }\n }\n function allBins(binAttr) {\n return function(j) {\n return fullData[j][binAttr];\n };\n }\n function arrayBins(binAttr) {\n return function(vij, j) {\n return vij === false ? fullData[traces[j]][binAttr] : null;\n };\n }\n for (var ai in aobj) {\n if (helpers.hasParent(aobj, ai)) {\n throw new Error(\"cannot set \" + ai + \" and a parent attribute simultaneously\");\n }\n var vi = aobj[ai];\n var cont;\n var contFull;\n var param;\n var oldVal;\n var newVal;\n var valObject;\n if (ai === \"autobinx\" || ai === \"autobiny\") {\n ai = ai.charAt(ai.length - 1) + \"bins\";\n if (Array.isArray(vi)) vi = vi.map(arrayBins(ai));\n else if (vi === false) vi = traces.map(allBins(ai));\n else vi = null;\n }\n redoit[ai] = vi;\n if (ai.substr(0, 6) === \"LAYOUT\") {\n param = layoutNP(gd.layout, ai.replace(\"LAYOUT\", \"\"));\n undoit[ai] = [undefinedToNull(param.get())];\n param.set(Array.isArray(vi) ? vi[0] : vi);\n flags.calc = true;\n continue;\n }\n undoit[ai] = a0();\n for (i = 0; i < traces.length; i++) {\n cont = data[traces[i]];\n contFull = getFullTrace(traces[i]);\n var preGUI = fullLayout._tracePreGUI[contFull._fullInput.uid];\n param = makeNP(preGUI, guiEditFlag)(cont, ai);\n oldVal = param.get();\n newVal = Array.isArray(vi) ? vi[i % vi.length] : vi;\n if (newVal === void 0) continue;\n var finalPart = param.parts[param.parts.length - 1];\n var prefix = ai.substr(0, ai.length - finalPart.length - 1);\n var prefixDot = prefix ? prefix + \".\" : \"\";\n var innerContFull = prefix ? nestedProperty(contFull, prefix).get() : contFull;\n valObject = PlotSchema.getTraceValObject(contFull, param.parts);\n if (valObject && valObject.impliedEdits && newVal !== null) {\n for (var impliedKey in valObject.impliedEdits) {\n doextra(Lib.relativeAttr(ai, impliedKey), valObject.impliedEdits[impliedKey], i);\n }\n } else if ((finalPart === \"thicknessmode\" || finalPart === \"lenmode\") && oldVal !== newVal && (newVal === \"fraction\" || newVal === \"pixels\") && innerContFull) {\n var gs = fullLayout._size;\n var orient = innerContFull.orient;\n var topOrBottom = orient === \"top\" || orient === \"bottom\";\n if (finalPart === \"thicknessmode\") {\n var thicknorm = topOrBottom ? gs.h : gs.w;\n doextra(prefixDot + \"thickness\", innerContFull.thickness * (newVal === \"fraction\" ? 1 / thicknorm : thicknorm), i);\n } else {\n var lennorm = topOrBottom ? gs.w : gs.h;\n doextra(prefixDot + \"len\", innerContFull.len * (newVal === \"fraction\" ? 1 / lennorm : lennorm), i);\n }\n } else if (ai === \"type\" && (newVal === \"pie\" !== (oldVal === \"pie\") || newVal === \"funnelarea\" !== (oldVal === \"funnelarea\"))) {\n var labelsTo = \"x\";\n var valuesTo = \"y\";\n if ((newVal === \"bar\" || oldVal === \"bar\") && cont.orientation === \"h\") {\n labelsTo = \"y\";\n valuesTo = \"x\";\n }\n Lib.swapAttrs(cont, [\"?\", \"?src\"], \"labels\", labelsTo);\n Lib.swapAttrs(cont, [\"d?\", \"?0\"], \"label\", labelsTo);\n Lib.swapAttrs(cont, [\"?\", \"?src\"], \"values\", valuesTo);\n if (oldVal === \"pie\" || oldVal === \"funnelarea\") {\n nestedProperty(cont, \"marker.color\").set(nestedProperty(cont, \"marker.colors\").get());\n fullLayout._pielayer.selectAll(\"g.trace\").remove();\n } else if (Registry.traceIs(cont, \"cartesian\")) {\n nestedProperty(cont, \"marker.colors\").set(nestedProperty(cont, \"marker.color\").get());\n }\n }\n undoit[ai][i] = undefinedToNull(oldVal);\n var swapAttrs = [\n \"swapxy\",\n \"swapxyaxes\",\n \"orientation\",\n \"orientationaxes\"\n ];\n if (swapAttrs.indexOf(ai) !== -1) {\n if (ai === \"orientation\") {\n param.set(newVal);\n var defaultOrientation = cont.x && !cont.y ? \"h\" : \"v\";\n if ((param.get() || defaultOrientation) === contFull.orientation) {\n continue;\n }\n } else if (ai === \"orientationaxes\") {\n cont.orientation = { v: \"h\", h: \"v\" }[contFull.orientation];\n }\n helpers.swapXYData(cont);\n flags.calc = flags.clearAxisTypes = true;\n } else if (Plots.dataArrayContainers.indexOf(param.parts[0]) !== -1) {\n helpers.manageArrayContainers(param, newVal, undoit);\n flags.calc = true;\n } else {\n if (valObject) {\n if (valObject.arrayOk && !Registry.traceIs(contFull, \"regl\") && (Lib.isArrayOrTypedArray(newVal) || Lib.isArrayOrTypedArray(oldVal))) {\n flags.calc = true;\n } else editTypes.update(flags, valObject);\n } else {\n flags.calc = true;\n }\n param.set(newVal);\n }\n }\n if ([\"swapxyaxes\", \"orientationaxes\"].indexOf(ai) !== -1) {\n Axes.swap(gd, traces);\n }\n if (ai === \"orientationaxes\") {\n var hovermode = nestedProperty(gd.layout, \"hovermode\");\n var h = hovermode.get();\n if (h === \"x\") {\n hovermode.set(\"y\");\n } else if (h === \"y\") {\n hovermode.set(\"x\");\n } else if (h === \"x unified\") {\n hovermode.set(\"y unified\");\n } else if (h === \"y unified\") {\n hovermode.set(\"x unified\");\n }\n }\n if ([\"orientation\", \"type\"].indexOf(ai) !== -1) {\n axlist = [];\n for (i = 0; i < traces.length; i++) {\n var trace = data[traces[i]];\n if (Registry.traceIs(trace, \"cartesian\")) {\n addToAxlist(trace.xaxis || \"x\");\n addToAxlist(trace.yaxis || \"y\");\n }\n }\n doextra(axlist.map(autorangeAttr), true, 0);\n doextra(axlist.map(rangeAttr), [0, 1], 0);\n }\n }\n if (flags.calc || flags.plot) {\n flags.fullReplot = true;\n }\n return {\n flags,\n undoit,\n redoit,\n traces,\n eventData: Lib.extendDeepNoArrays([], [eventData, traces])\n };\n }\n function relayout(gd, astr, val) {\n gd = Lib.getGraphDiv(gd);\n helpers.clearPromiseQueue(gd);\n var aobj = {};\n if (typeof astr === \"string\") {\n aobj[astr] = val;\n } else if (Lib.isPlainObject(astr)) {\n aobj = Lib.extendFlat({}, astr);\n } else {\n Lib.warn(\"Relayout fail.\", astr, val);\n return Promise.reject();\n }\n if (Object.keys(aobj).length) gd.changed = true;\n var specs = _relayout(gd, aobj);\n var flags = specs.flags;\n if (flags.calc) gd.calcdata = void 0;\n var seq = [Plots.previousPromises];\n if (flags.layoutReplot) {\n seq.push(subroutines.layoutReplot);\n } else if (Object.keys(aobj).length) {\n axRangeSupplyDefaultsByPass(gd, flags, specs) || Plots.supplyDefaults(gd);\n if (flags.legend) seq.push(subroutines.doLegend);\n if (flags.layoutstyle) seq.push(subroutines.layoutStyles);\n if (flags.axrange) addAxRangeSequence(seq, specs.rangesAltered);\n if (flags.ticks) seq.push(subroutines.doTicksRelayout);\n if (flags.modebar) seq.push(subroutines.doModeBar);\n if (flags.camera) seq.push(subroutines.doCamera);\n if (flags.colorbars) seq.push(subroutines.doColorBars);\n seq.push(emitAfterPlot);\n }\n seq.push(\n Plots.rehover,\n Plots.redrag,\n Plots.reselect\n );\n Queue.add(\n gd,\n relayout,\n [gd, specs.undoit],\n relayout,\n [gd, specs.redoit]\n );\n var plotDone = Lib.syncOrAsync(seq, gd);\n if (!plotDone || !plotDone.then) plotDone = Promise.resolve(gd);\n return plotDone.then(function() {\n gd.emit(\"plotly_relayout\", specs.eventData);\n return gd;\n });\n }\n function axRangeSupplyDefaultsByPass(gd, flags, specs) {\n var fullLayout = gd._fullLayout;\n if (!flags.axrange) return false;\n for (var k in flags) {\n if (k !== \"axrange\" && flags[k]) return false;\n }\n var axIn, axOut;\n var coerce = function(attr, dflt) {\n return Lib.coerce(axIn, axOut, cartesianLayoutAttributes, attr, dflt);\n };\n var options = {};\n for (var axId in specs.rangesAltered) {\n var axName = Axes.id2name(axId);\n axIn = gd.layout[axName];\n axOut = fullLayout[axName];\n handleRangeDefaults(axIn, axOut, coerce, options);\n if (axOut._matchGroup) {\n for (var axId2 in axOut._matchGroup) {\n if (axId2 !== axId) {\n var ax2 = fullLayout[Axes.id2name(axId2)];\n ax2.autorange = axOut.autorange;\n ax2.range = axOut.range.slice();\n ax2._input.range = axOut.range.slice();\n }\n }\n }\n }\n return true;\n }\n function addAxRangeSequence(seq, rangesAltered) {\n var drawAxes = rangesAltered ? function(gd) {\n var axIds = [];\n var skipTitle = true;\n for (var id in rangesAltered) {\n var ax = Axes.getFromId(gd, id);\n axIds.push(id);\n if ((ax.ticklabelposition || \"\").indexOf(\"inside\") !== -1) {\n if (ax._anchorAxis) {\n axIds.push(ax._anchorAxis._id);\n }\n }\n if (ax._matchGroup) {\n for (var id2 in ax._matchGroup) {\n if (!rangesAltered[id2]) {\n axIds.push(id2);\n }\n }\n }\n }\n return Axes.draw(gd, axIds, { skipTitle });\n } : function(gd) {\n return Axes.draw(gd, \"redraw\");\n };\n seq.push(\n clearOutline,\n subroutines.doAutoRangeAndConstraints,\n drawAxes,\n subroutines.drawData,\n subroutines.finalDraw\n );\n }\n var AX_RANGE_RE = /^[xyz]axis[0-9]*\\.range(\\[[0|1]\\])?$/;\n var AX_AUTORANGE_RE = /^[xyz]axis[0-9]*\\.autorange$/;\n var AX_DOMAIN_RE = /^[xyz]axis[0-9]*\\.domain(\\[[0|1]\\])?$/;\n function _relayout(gd, aobj) {\n var layout = gd.layout;\n var fullLayout = gd._fullLayout;\n var guiEditFlag = fullLayout._guiEditing;\n var layoutNP = makeNP(fullLayout._preGUI, guiEditFlag);\n var keys = Object.keys(aobj);\n var axes = Axes.list(gd);\n var eventData = Lib.extendDeepAll({}, aobj);\n var arrayEdits = {};\n var arrayStr, i, j;\n keys = Object.keys(aobj);\n for (i = 0; i < keys.length; i++) {\n if (keys[i].indexOf(\"allaxes\") === 0) {\n for (j = 0; j < axes.length; j++) {\n var scene = axes[j]._id.substr(1);\n var axisAttr = scene.indexOf(\"scene\") !== -1 ? scene + \".\" : \"\";\n var newkey = keys[i].replace(\"allaxes\", axisAttr + axes[j]._name);\n if (!aobj[newkey]) aobj[newkey] = aobj[keys[i]];\n }\n delete aobj[keys[i]];\n }\n }\n var flags = editTypes.layoutFlags();\n var redoit = {};\n var undoit = {};\n function doextra(attr, val) {\n if (Array.isArray(attr)) {\n attr.forEach(function(a) {\n doextra(a, val);\n });\n return;\n }\n if (attr in aobj || helpers.hasParent(aobj, attr)) return;\n var p2 = layoutNP(layout, attr);\n if (!(attr in undoit)) {\n undoit[attr] = undefinedToNull(p2.get());\n }\n if (val !== void 0) p2.set(val);\n }\n var rangesAltered = {};\n var ax;\n function recordAlteredAxis(pleafPlus2) {\n var axId2 = Axes.name2id(pleafPlus2.split(\".\")[0]);\n rangesAltered[axId2] = 1;\n return axId2;\n }\n for (var ai in aobj) {\n if (helpers.hasParent(aobj, ai)) {\n throw new Error(\"cannot set \" + ai + \" and a parent attribute simultaneously\");\n }\n var p = layoutNP(layout, ai);\n var vi = aobj[ai];\n var plen = p.parts.length;\n var pend = plen - 1;\n while (pend > 0 && typeof p.parts[pend] !== \"string\") pend--;\n var pleaf = p.parts[pend];\n var pleafPlus = p.parts[pend - 1] + \".\" + pleaf;\n var ptrunk = p.parts.slice(0, pend).join(\".\");\n var parentIn = nestedProperty(gd.layout, ptrunk).get();\n var parentFull = nestedProperty(fullLayout, ptrunk).get();\n var vOld = p.get();\n if (vi === void 0) continue;\n redoit[ai] = vi;\n undoit[ai] = pleaf === \"reverse\" ? vi : undefinedToNull(vOld);\n var valObject = PlotSchema.getLayoutValObject(fullLayout, p.parts);\n if (valObject && valObject.impliedEdits && vi !== null) {\n for (var impliedKey in valObject.impliedEdits) {\n doextra(Lib.relativeAttr(ai, impliedKey), valObject.impliedEdits[impliedKey]);\n }\n }\n if ([\"width\", \"height\"].indexOf(ai) !== -1) {\n if (vi) {\n doextra(\"autosize\", null);\n var oppositeAttr = ai === \"height\" ? \"width\" : \"height\";\n doextra(oppositeAttr, fullLayout[oppositeAttr]);\n } else {\n fullLayout[ai] = gd._initialAutoSize[ai];\n }\n } else if (ai === \"autosize\") {\n doextra(\"width\", vi ? null : fullLayout.width);\n doextra(\"height\", vi ? null : fullLayout.height);\n } else if (pleafPlus.match(AX_RANGE_RE)) {\n recordAlteredAxis(pleafPlus);\n nestedProperty(fullLayout, ptrunk + \"._inputRange\").set(null);\n } else if (pleafPlus.match(AX_AUTORANGE_RE)) {\n recordAlteredAxis(pleafPlus);\n nestedProperty(fullLayout, ptrunk + \"._inputRange\").set(null);\n var axFull = nestedProperty(fullLayout, ptrunk).get();\n if (axFull._inputDomain) {\n axFull._input.domain = axFull._inputDomain.slice();\n }\n } else if (pleafPlus.match(AX_DOMAIN_RE)) {\n nestedProperty(fullLayout, ptrunk + \"._inputDomain\").set(null);\n }\n if (pleaf === \"type\") {\n ax = parentIn;\n var toLog = parentFull.type === \"linear\" && vi === \"log\";\n var fromLog = parentFull.type === \"log\" && vi === \"linear\";\n if (toLog || fromLog) {\n if (!ax || !ax.range) {\n doextra(ptrunk + \".autorange\", true);\n } else if (!parentFull.autorange) {\n var r0 = ax.range[0];\n var r1 = ax.range[1];\n if (toLog) {\n if (r0 <= 0 && r1 <= 0) {\n doextra(ptrunk + \".autorange\", true);\n }\n if (r0 <= 0) r0 = r1 / 1e6;\n else if (r1 <= 0) r1 = r0 / 1e6;\n doextra(ptrunk + \".range[0]\", Math.log(r0) / Math.LN10);\n doextra(ptrunk + \".range[1]\", Math.log(r1) / Math.LN10);\n } else {\n doextra(ptrunk + \".range[0]\", Math.pow(10, r0));\n doextra(ptrunk + \".range[1]\", Math.pow(10, r1));\n }\n } else if (toLog) {\n ax.range = ax.range[1] > ax.range[0] ? [1, 2] : [2, 1];\n }\n if (Array.isArray(fullLayout._subplots.polar) && fullLayout._subplots.polar.length && fullLayout[p.parts[0]] && p.parts[1] === \"radialaxis\") {\n delete fullLayout[p.parts[0]]._subplot.viewInitial[\"radialaxis.range\"];\n }\n Registry.getComponentMethod(\"annotations\", \"convertCoords\")(gd, parentFull, vi, doextra);\n Registry.getComponentMethod(\"images\", \"convertCoords\")(gd, parentFull, vi, doextra);\n } else {\n doextra(ptrunk + \".autorange\", true);\n doextra(ptrunk + \".range\", null);\n }\n nestedProperty(fullLayout, ptrunk + \"._inputRange\").set(null);\n } else if (pleaf.match(AX_NAME_PATTERN)) {\n var fullProp = nestedProperty(fullLayout, ai).get();\n var newType = (vi || {}).type;\n if (!newType || newType === \"-\") newType = \"linear\";\n Registry.getComponentMethod(\"annotations\", \"convertCoords\")(gd, fullProp, newType, doextra);\n Registry.getComponentMethod(\"images\", \"convertCoords\")(gd, fullProp, newType, doextra);\n }\n var containerArrayMatch = manageArrays.containerArrayMatch(ai);\n if (containerArrayMatch) {\n arrayStr = containerArrayMatch.array;\n i = containerArrayMatch.index;\n var propStr = containerArrayMatch.property;\n var updateValObject = valObject || { editType: \"calc\" };\n if (i !== \"\" && propStr === \"\") {\n if (manageArrays.isAddVal(vi)) {\n undoit[ai] = null;\n } else if (manageArrays.isRemoveVal(vi)) {\n undoit[ai] = (nestedProperty(layout, arrayStr).get() || [])[i];\n } else {\n Lib.warn(\"unrecognized full object value\", aobj);\n }\n }\n editTypes.update(flags, updateValObject);\n if (!arrayEdits[arrayStr]) arrayEdits[arrayStr] = {};\n var objEdits = arrayEdits[arrayStr][i];\n if (!objEdits) objEdits = arrayEdits[arrayStr][i] = {};\n objEdits[propStr] = vi;\n delete aobj[ai];\n } else if (pleaf === \"reverse\") {\n if (parentIn.range) parentIn.range.reverse();\n else {\n doextra(ptrunk + \".autorange\", true);\n parentIn.range = [1, 0];\n }\n if (parentFull.autorange) flags.calc = true;\n else flags.plot = true;\n } else {\n if (ai === \"dragmode\" && (vi === false && vOld !== false || vi !== false && vOld === false)) {\n flags.plot = true;\n } else if (fullLayout._has(\"scatter-like\") && fullLayout._has(\"regl\") && (ai === \"dragmode\" && (vi === \"lasso\" || vi === \"select\") && !(vOld === \"lasso\" || vOld === \"select\"))) {\n flags.plot = true;\n } else if (valObject) editTypes.update(flags, valObject);\n else flags.calc = true;\n p.set(vi);\n }\n }\n for (arrayStr in arrayEdits) {\n var finished = manageArrays.applyContainerArrayChanges(\n gd,\n layoutNP(layout, arrayStr),\n arrayEdits[arrayStr],\n flags,\n layoutNP\n );\n if (!finished) flags.plot = true;\n }\n for (var axId in rangesAltered) {\n ax = Axes.getFromId(gd, axId);\n var group = ax && ax._constraintGroup;\n if (group) {\n flags.calc = true;\n for (var groupAxId in group) {\n if (!rangesAltered[groupAxId]) {\n Axes.getFromId(gd, groupAxId)._constraintShrinkable = true;\n }\n }\n }\n }\n if (updateAutosize(gd) || aobj.height || aobj.width) flags.plot = true;\n var shapes = fullLayout.shapes;\n for (i = 0; i < shapes.length; i++) {\n if (shapes[i].showlegend) {\n flags.calc = true;\n break;\n }\n }\n if (flags.plot || flags.calc) {\n flags.layoutReplot = true;\n }\n return {\n flags,\n rangesAltered,\n undoit,\n redoit,\n eventData\n };\n }\n function updateAutosize(gd) {\n var fullLayout = gd._fullLayout;\n var oldWidth = fullLayout.width;\n var oldHeight = fullLayout.height;\n if (gd.layout.autosize) Plots.plotAutoSize(gd, gd.layout, fullLayout);\n return fullLayout.width !== oldWidth || fullLayout.height !== oldHeight;\n }\n function update(gd, traceUpdate, layoutUpdate, _traces) {\n gd = Lib.getGraphDiv(gd);\n helpers.clearPromiseQueue(gd);\n if (!Lib.isPlainObject(traceUpdate)) traceUpdate = {};\n if (!Lib.isPlainObject(layoutUpdate)) layoutUpdate = {};\n if (Object.keys(traceUpdate).length) gd.changed = true;\n if (Object.keys(layoutUpdate).length) gd.changed = true;\n var traces = helpers.coerceTraceIndices(gd, _traces);\n var restyleSpecs = _restyle(gd, Lib.extendFlat({}, traceUpdate), traces);\n var restyleFlags = restyleSpecs.flags;\n var relayoutSpecs = _relayout(gd, Lib.extendFlat({}, layoutUpdate));\n var relayoutFlags = relayoutSpecs.flags;\n if (restyleFlags.calc || relayoutFlags.calc) gd.calcdata = void 0;\n if (restyleFlags.clearAxisTypes) helpers.clearAxisTypes(gd, traces, layoutUpdate);\n var seq = [];\n if (relayoutFlags.layoutReplot) {\n seq.push(subroutines.layoutReplot);\n } else if (restyleFlags.fullReplot) {\n seq.push(exports._doPlot);\n } else {\n seq.push(Plots.previousPromises);\n axRangeSupplyDefaultsByPass(gd, relayoutFlags, relayoutSpecs) || Plots.supplyDefaults(gd);\n if (restyleFlags.style) seq.push(subroutines.doTraceStyle);\n if (restyleFlags.colorbars || relayoutFlags.colorbars) seq.push(subroutines.doColorBars);\n if (relayoutFlags.legend) seq.push(subroutines.doLegend);\n if (relayoutFlags.layoutstyle) seq.push(subroutines.layoutStyles);\n if (relayoutFlags.axrange) addAxRangeSequence(seq, relayoutSpecs.rangesAltered);\n if (relayoutFlags.ticks) seq.push(subroutines.doTicksRelayout);\n if (relayoutFlags.modebar) seq.push(subroutines.doModeBar);\n if (relayoutFlags.camera) seq.push(subroutines.doCamera);\n seq.push(emitAfterPlot);\n }\n seq.push(\n Plots.rehover,\n Plots.redrag,\n Plots.reselect\n );\n Queue.add(\n gd,\n update,\n [gd, restyleSpecs.undoit, relayoutSpecs.undoit, restyleSpecs.traces],\n update,\n [gd, restyleSpecs.redoit, relayoutSpecs.redoit, restyleSpecs.traces]\n );\n var plotDone = Lib.syncOrAsync(seq, gd);\n if (!plotDone || !plotDone.then) plotDone = Promise.resolve(gd);\n return plotDone.then(function() {\n gd.emit(\"plotly_update\", {\n data: restyleSpecs.eventData,\n layout: relayoutSpecs.eventData\n });\n return gd;\n });\n }\n function guiEdit(func) {\n return function wrappedEdit(gd) {\n gd._fullLayout._guiEditing = true;\n var p = func.apply(null, arguments);\n gd._fullLayout._guiEditing = false;\n return p;\n };\n }\n var layoutUIControlPatterns = [\n { pattern: /^hiddenlabels/, attr: \"legend.uirevision\" },\n { pattern: /^((x|y)axis\\d*)\\.((auto)?range|title\\.text)/ },\n // showspikes and modes include those nested inside scenes\n { pattern: /axis\\d*\\.showspikes$/, attr: \"modebar.uirevision\" },\n { pattern: /(hover|drag)mode$/, attr: \"modebar.uirevision\" },\n { pattern: /^(scene\\d*)\\.camera/ },\n { pattern: /^(geo\\d*)\\.(projection|center|fitbounds)/ },\n { pattern: /^(ternary\\d*\\.[abc]axis)\\.(min|title\\.text)$/ },\n { pattern: /^(polar\\d*\\.radialaxis)\\.((auto)?range|angle|title\\.text)/ },\n { pattern: /^(polar\\d*\\.angularaxis)\\.rotation/ },\n { pattern: /^(mapbox\\d*)\\.(center|zoom|bearing|pitch)/ },\n { pattern: /^(map\\d*)\\.(center|zoom|bearing|pitch)/ },\n { pattern: /^legend\\.(x|y)$/, attr: \"editrevision\" },\n { pattern: /^(shapes|annotations)/, attr: \"editrevision\" },\n { pattern: /^title\\.text$/, attr: \"editrevision\" }\n ];\n var traceUIControlPatterns = [\n { pattern: /^selectedpoints$/, attr: \"selectionrevision\" },\n // \"visible\" includes trace.transforms[i].styles[j].value.visible\n { pattern: /(^|value\\.)visible$/, attr: \"legend.uirevision\" },\n { pattern: /^dimensions\\[\\d+\\]\\.constraintrange/ },\n { pattern: /^node\\.(x|y|groups)/ },\n // for Sankey nodes\n { pattern: /^level$/ },\n // for Sunburst, Treemap and Icicle traces\n // below this you must be in editable: true mode\n // TODO: I still put name and title with `trace.uirevision`\n // reasonable or should these be `editrevision`?\n // Also applies to axis titles up in the layout section\n // \"name\" also includes transform.styles\n { pattern: /(^|value\\.)name$/ },\n // including nested colorbar attributes (ie marker.colorbar)\n { pattern: /colorbar\\.title\\.text$/ },\n { pattern: /colorbar\\.(x|y)$/, attr: \"editrevision\" }\n ];\n function findUIPattern(key, patternSpecs) {\n for (var i = 0; i < patternSpecs.length; i++) {\n var spec = patternSpecs[i];\n var match = key.match(spec.pattern);\n if (match) {\n var head = match[1] || \"\";\n return { head, tail: key.substr(head.length + 1), attr: spec.attr };\n }\n }\n }\n function getNewRev(revAttr, container) {\n var newRev = nestedProperty(container, revAttr).get();\n if (newRev !== void 0) return newRev;\n var parts = revAttr.split(\".\");\n parts.pop();\n while (parts.length > 1) {\n parts.pop();\n newRev = nestedProperty(container, parts.join(\".\") + \".uirevision\").get();\n if (newRev !== void 0) return newRev;\n }\n return container.uirevision;\n }\n function getFullTraceIndexFromUid(uid, fullData) {\n for (var i = 0; i < fullData.length; i++) {\n if (fullData[i]._fullInput.uid === uid) return i;\n }\n return -1;\n }\n function getTraceIndexFromUid(uid, data, tracei) {\n for (var i = 0; i < data.length; i++) {\n if (data[i].uid === uid) return i;\n }\n return !data[tracei] || data[tracei].uid ? -1 : tracei;\n }\n function valsMatch(v1, v2) {\n var v1IsObj = Lib.isPlainObject(v1);\n var v1IsArray = Array.isArray(v1);\n if (v1IsObj || v1IsArray) {\n return (v1IsObj && Lib.isPlainObject(v2) || v1IsArray && Array.isArray(v2)) && JSON.stringify(v1) === JSON.stringify(v2);\n }\n return v1 === v2;\n }\n function applyUIRevisions(data, layout, oldFullData, oldFullLayout) {\n var layoutPreGUI = oldFullLayout._preGUI;\n var key, revAttr, oldRev, newRev, match, preGUIVal, newNP, newVal, head, tail;\n var bothInheritAutorange = [];\n var newAutorangeIn = {};\n var newRangeAccepted = {};\n for (key in layoutPreGUI) {\n match = findUIPattern(key, layoutUIControlPatterns);\n if (match) {\n head = match.head;\n tail = match.tail;\n revAttr = match.attr || head + \".uirevision\";\n oldRev = nestedProperty(oldFullLayout, revAttr).get();\n newRev = oldRev && getNewRev(revAttr, layout);\n if (newRev && newRev === oldRev) {\n preGUIVal = layoutPreGUI[key];\n if (preGUIVal === null) preGUIVal = void 0;\n newNP = nestedProperty(layout, key);\n newVal = newNP.get();\n if (valsMatch(newVal, preGUIVal)) {\n if (newVal === void 0 && tail === \"autorange\") {\n bothInheritAutorange.push(head);\n }\n newNP.set(undefinedToNull(nestedProperty(oldFullLayout, key).get()));\n continue;\n } else if (tail === \"autorange\" || tail.substr(0, 6) === \"range[\") {\n var pre0 = layoutPreGUI[head + \".range[0]\"];\n var pre1 = layoutPreGUI[head + \".range[1]\"];\n var preAuto = layoutPreGUI[head + \".autorange\"];\n if (preAuto || preAuto === null && pre0 === null && pre1 === null) {\n if (!(head in newAutorangeIn)) {\n var newContainer = nestedProperty(layout, head).get();\n newAutorangeIn[head] = newContainer && (newContainer.autorange || newContainer.autorange !== false && (!newContainer.range || newContainer.range.length !== 2));\n }\n if (newAutorangeIn[head]) {\n newNP.set(undefinedToNull(nestedProperty(oldFullLayout, key).get()));\n continue;\n }\n }\n }\n }\n } else {\n Lib.warn(\"unrecognized GUI edit: \" + key);\n }\n delete layoutPreGUI[key];\n if (match && match.tail.substr(0, 6) === \"range[\") {\n newRangeAccepted[match.head] = 1;\n }\n }\n for (var i = 0; i < bothInheritAutorange.length; i++) {\n var axAttr = bothInheritAutorange[i];\n if (newRangeAccepted[axAttr]) {\n var newAx = nestedProperty(layout, axAttr).get();\n if (newAx) delete newAx.autorange;\n }\n }\n var allTracePreGUI = oldFullLayout._tracePreGUI;\n for (var uid in allTracePreGUI) {\n var tracePreGUI = allTracePreGUI[uid];\n var newTrace = null;\n var fullInput;\n for (key in tracePreGUI) {\n if (!newTrace) {\n var fulli = getFullTraceIndexFromUid(uid, oldFullData);\n if (fulli < 0) {\n delete allTracePreGUI[uid];\n break;\n }\n var fullTrace = oldFullData[fulli];\n fullInput = fullTrace._fullInput;\n var newTracei = getTraceIndexFromUid(uid, data, fullInput.index);\n if (newTracei < 0) {\n delete allTracePreGUI[uid];\n break;\n }\n newTrace = data[newTracei];\n }\n match = findUIPattern(key, traceUIControlPatterns);\n if (match) {\n if (match.attr) {\n oldRev = nestedProperty(oldFullLayout, match.attr).get();\n newRev = oldRev && getNewRev(match.attr, layout);\n } else {\n oldRev = fullInput.uirevision;\n newRev = newTrace.uirevision;\n if (newRev === void 0) newRev = layout.uirevision;\n }\n if (newRev && newRev === oldRev) {\n preGUIVal = tracePreGUI[key];\n if (preGUIVal === null) preGUIVal = void 0;\n newNP = nestedProperty(newTrace, key);\n newVal = newNP.get();\n if (valsMatch(newVal, preGUIVal)) {\n newNP.set(undefinedToNull(nestedProperty(fullInput, key).get()));\n continue;\n }\n }\n } else {\n Lib.warn(\"unrecognized GUI edit: \" + key + \" in trace uid \" + uid);\n }\n delete tracePreGUI[key];\n }\n }\n }\n function react(gd, data, layout, config) {\n var frames, plotDone;\n function addFrames2() {\n return exports.addFrames(gd, frames);\n }\n gd = Lib.getGraphDiv(gd);\n helpers.clearPromiseQueue(gd);\n var oldFullData = gd._fullData;\n var oldFullLayout = gd._fullLayout;\n if (!Lib.isPlotDiv(gd) || !oldFullData || !oldFullLayout) {\n plotDone = exports.newPlot(gd, data, layout, config);\n } else {\n if (Lib.isPlainObject(data)) {\n var obj = data;\n data = obj.data;\n layout = obj.layout;\n config = obj.config;\n frames = obj.frames;\n }\n var configChanged = false;\n if (config) {\n var oldConfig = Lib.extendDeep({}, gd._context);\n gd._context = void 0;\n setPlotContext(gd, config);\n configChanged = diffConfig(oldConfig, gd._context);\n }\n gd.data = data || [];\n helpers.cleanData(gd.data);\n gd.layout = layout || {};\n helpers.cleanLayout(gd.layout);\n applyUIRevisions(gd.data, gd.layout, oldFullData, oldFullLayout);\n Plots.supplyDefaults(gd, { skipUpdateCalc: true });\n var newFullData = gd._fullData;\n var newFullLayout = gd._fullLayout;\n var immutable = newFullLayout.datarevision === void 0;\n var transition = newFullLayout.transition;\n var relayoutFlags = diffLayout(gd, oldFullLayout, newFullLayout, immutable, transition);\n var newDataRevision = relayoutFlags.newDataRevision;\n var restyleFlags = diffData(gd, oldFullData, newFullData, immutable, transition, newDataRevision);\n if (updateAutosize(gd)) relayoutFlags.layoutReplot = true;\n if (restyleFlags.calc || relayoutFlags.calc) {\n gd.calcdata = void 0;\n var allNames = Object.getOwnPropertyNames(newFullLayout);\n for (var q = 0; q < allNames.length; q++) {\n var name = allNames[q];\n var start = name.substring(0, 5);\n if (start === \"xaxis\" || start === \"yaxis\") {\n var emptyCategories = newFullLayout[name]._emptyCategories;\n if (emptyCategories) emptyCategories();\n }\n }\n } else {\n Plots.supplyDefaultsUpdateCalc(gd.calcdata, newFullData);\n }\n var seq = [];\n if (frames) {\n gd._transitionData = {};\n Plots.createTransitionData(gd);\n seq.push(addFrames2);\n }\n if (newFullLayout.transition && !configChanged && (restyleFlags.anim || relayoutFlags.anim)) {\n if (relayoutFlags.ticks) seq.push(subroutines.doTicksRelayout);\n Plots.doCalcdata(gd);\n subroutines.doAutoRangeAndConstraints(gd);\n seq.push(function() {\n return Plots.transitionFromReact(gd, restyleFlags, relayoutFlags, oldFullLayout);\n });\n } else if (restyleFlags.fullReplot || relayoutFlags.layoutReplot || configChanged) {\n gd._fullLayout._skipDefaults = true;\n seq.push(exports._doPlot);\n } else {\n for (var componentType in relayoutFlags.arrays) {\n var indices = relayoutFlags.arrays[componentType];\n if (indices.length) {\n var drawOne = Registry.getComponentMethod(componentType, \"drawOne\");\n if (drawOne !== Lib.noop) {\n for (var i = 0; i < indices.length; i++) {\n drawOne(gd, indices[i]);\n }\n } else {\n var draw = Registry.getComponentMethod(componentType, \"draw\");\n if (draw === Lib.noop) {\n throw new Error(\"cannot draw components: \" + componentType);\n }\n draw(gd);\n }\n }\n }\n seq.push(Plots.previousPromises);\n if (restyleFlags.style) seq.push(subroutines.doTraceStyle);\n if (restyleFlags.colorbars || relayoutFlags.colorbars) seq.push(subroutines.doColorBars);\n if (relayoutFlags.legend) seq.push(subroutines.doLegend);\n if (relayoutFlags.layoutstyle) seq.push(subroutines.layoutStyles);\n if (relayoutFlags.axrange) addAxRangeSequence(seq);\n if (relayoutFlags.ticks) seq.push(subroutines.doTicksRelayout);\n if (relayoutFlags.modebar) seq.push(subroutines.doModeBar);\n if (relayoutFlags.camera) seq.push(subroutines.doCamera);\n seq.push(emitAfterPlot);\n }\n seq.push(\n Plots.rehover,\n Plots.redrag,\n Plots.reselect\n );\n plotDone = Lib.syncOrAsync(seq, gd);\n if (!plotDone || !plotDone.then) plotDone = Promise.resolve(gd);\n }\n return plotDone.then(function() {\n gd.emit(\"plotly_react\", {\n data,\n layout\n });\n return gd;\n });\n }\n function diffData(gd, oldFullData, newFullData, immutable, transition, newDataRevision) {\n var sameTraceLength = oldFullData.length === newFullData.length;\n if (!transition && !sameTraceLength) {\n return {\n fullReplot: true,\n calc: true\n };\n }\n var flags = editTypes.traceFlags();\n flags.arrays = {};\n flags.nChanges = 0;\n flags.nChangesAnim = 0;\n var i, trace;\n function getTraceValObject(parts) {\n var out = PlotSchema.getTraceValObject(trace, parts);\n if (!trace._module.animatable && out.anim) {\n out.anim = false;\n }\n return out;\n }\n var diffOpts = {\n getValObject: getTraceValObject,\n flags,\n immutable,\n transition,\n newDataRevision,\n gd\n };\n var seenUIDs = {};\n for (i = 0; i < oldFullData.length; i++) {\n if (newFullData[i]) {\n trace = newFullData[i]._fullInput;\n if (seenUIDs[trace.uid]) continue;\n seenUIDs[trace.uid] = 1;\n getDiffFlags(oldFullData[i]._fullInput, trace, [], diffOpts);\n }\n }\n if (flags.calc || flags.plot) {\n flags.fullReplot = true;\n }\n if (transition && flags.nChanges && flags.nChangesAnim) {\n flags.anim = flags.nChanges === flags.nChangesAnim && sameTraceLength ? \"all\" : \"some\";\n }\n return flags;\n }\n function diffLayout(gd, oldFullLayout, newFullLayout, immutable, transition) {\n var flags = editTypes.layoutFlags();\n flags.arrays = {};\n flags.rangesAltered = {};\n flags.nChanges = 0;\n flags.nChangesAnim = 0;\n function getLayoutValObject(parts) {\n return PlotSchema.getLayoutValObject(newFullLayout, parts);\n }\n for (var key in newFullLayout) {\n if (!key.startsWith(\"xaxis\") && !key.startsWith(\"yaxis\")) {\n continue;\n }\n if (!oldFullLayout[key]) {\n continue;\n }\n var newDomain = newFullLayout[key].domain;\n var oldDomain = oldFullLayout[key].domain;\n var oldInputDomain = oldFullLayout[key]._inputDomain;\n if (oldFullLayout[key]._inputDomain) {\n if (newDomain[0] === oldInputDomain[0] && newDomain[1] === oldInputDomain[1]) {\n newFullLayout[key].domain = oldFullLayout[key].domain;\n } else if (newDomain[0] !== oldDomain[0] || newDomain[1] !== oldDomain[1]) {\n newFullLayout[key]._inputDomain = null;\n }\n }\n }\n var diffOpts = {\n getValObject: getLayoutValObject,\n flags,\n immutable,\n transition,\n gd\n };\n getDiffFlags(oldFullLayout, newFullLayout, [], diffOpts);\n if (flags.plot || flags.calc) {\n flags.layoutReplot = true;\n }\n if (transition && flags.nChanges && flags.nChangesAnim) {\n flags.anim = flags.nChanges === flags.nChangesAnim ? \"all\" : \"some\";\n }\n return flags;\n }\n function getDiffFlags(oldContainer, newContainer, outerparts, opts) {\n var valObject, key, astr;\n var getValObject = opts.getValObject;\n var flags = opts.flags;\n var immutable = opts.immutable;\n var inArray = opts.inArray;\n var arrayIndex = opts.arrayIndex;\n function changed() {\n var editType = valObject.editType;\n if (inArray && editType.indexOf(\"arraydraw\") !== -1) {\n Lib.pushUnique(flags.arrays[inArray], arrayIndex);\n return;\n }\n editTypes.update(flags, valObject);\n if (editType !== \"none\") {\n flags.nChanges++;\n }\n if (opts.transition && valObject.anim) {\n flags.nChangesAnim++;\n }\n if (AX_RANGE_RE.test(astr) || AX_AUTORANGE_RE.test(astr)) {\n flags.rangesAltered[outerparts[0]] = 1;\n }\n if (key === \"datarevision\") {\n flags.newDataRevision = 1;\n }\n }\n function valObjectCanBeDataArray(valObject2) {\n return valObject2.valType === \"data_array\" || valObject2.arrayOk;\n }\n for (key in oldContainer) {\n if (flags.calc && !opts.transition) return;\n var oldVal = oldContainer[key];\n var newVal = newContainer[key];\n var parts = outerparts.concat(key);\n astr = parts.join(\".\");\n if (key.charAt(0) === \"_\" || typeof oldVal === \"function\" || oldVal === newVal) continue;\n if ((key === \"tick0\" || key === \"dtick\") && outerparts[0] !== \"geo\") {\n var tickMode = newContainer.tickmode;\n if (tickMode === \"auto\" || tickMode === \"array\" || !tickMode) continue;\n }\n if (key === \"range\" && newContainer.autorange) continue;\n if ((key === \"zmin\" || key === \"zmax\") && newContainer.type === \"contourcarpet\") continue;\n valObject = getValObject(parts);\n if (!valObject) continue;\n if (valObject._compareAsJSON && JSON.stringify(oldVal) === JSON.stringify(newVal)) continue;\n var valType = valObject.valType;\n var i;\n var canBeDataArray = valObjectCanBeDataArray(valObject);\n var wasArray = Array.isArray(oldVal);\n var nowArray = Array.isArray(newVal);\n if (wasArray && nowArray) {\n var inputKey = \"_input_\" + key;\n var oldValIn = oldContainer[inputKey];\n var newValIn = newContainer[inputKey];\n if (Array.isArray(oldValIn) && oldValIn === newValIn) continue;\n }\n if (newVal === void 0) {\n if (canBeDataArray && wasArray) flags.calc = true;\n else changed();\n } else if (valObject._isLinkedToArray) {\n var arrayEditIndices = [];\n var extraIndices = false;\n if (!inArray) flags.arrays[key] = arrayEditIndices;\n var minLen = Math.min(oldVal.length, newVal.length);\n var maxLen = Math.max(oldVal.length, newVal.length);\n if (minLen !== maxLen) {\n if (valObject.editType === \"arraydraw\") {\n extraIndices = true;\n } else {\n changed();\n continue;\n }\n }\n for (i = 0; i < minLen; i++) {\n getDiffFlags(\n oldVal[i],\n newVal[i],\n parts.concat(i),\n // add array indices, but not if we're already in an array\n Lib.extendFlat({ inArray: key, arrayIndex: i }, opts)\n );\n }\n if (extraIndices) {\n for (i = minLen; i < maxLen; i++) {\n arrayEditIndices.push(i);\n }\n }\n } else if (!valType && Lib.isPlainObject(oldVal)) {\n getDiffFlags(oldVal, newVal, parts, opts);\n } else if (canBeDataArray) {\n if (wasArray && nowArray) {\n if (immutable) {\n flags.calc = true;\n }\n if (immutable || opts.newDataRevision) {\n changed();\n }\n } else if (wasArray !== nowArray) {\n flags.calc = true;\n } else changed();\n } else if (wasArray && nowArray) {\n if (oldVal.length !== newVal.length || String(oldVal) !== String(newVal)) {\n changed();\n }\n } else {\n changed();\n }\n }\n for (key in newContainer) {\n if (!(key in oldContainer || key.charAt(0) === \"_\" || typeof newContainer[key] === \"function\")) {\n valObject = getValObject(outerparts.concat(key));\n if (valObjectCanBeDataArray(valObject) && Array.isArray(newContainer[key])) {\n flags.calc = true;\n return;\n } else changed();\n }\n }\n }\n function diffConfig(oldConfig, newConfig) {\n var key;\n for (key in oldConfig) {\n if (key.charAt(0) === \"_\") continue;\n var oldVal = oldConfig[key];\n var newVal = newConfig[key];\n if (oldVal !== newVal) {\n if (Lib.isPlainObject(oldVal) && Lib.isPlainObject(newVal)) {\n if (diffConfig(oldVal, newVal)) {\n return true;\n }\n } else if (Array.isArray(oldVal) && Array.isArray(newVal)) {\n if (oldVal.length !== newVal.length) {\n return true;\n }\n for (var i = 0; i < oldVal.length; i++) {\n if (oldVal[i] !== newVal[i]) {\n if (Lib.isPlainObject(oldVal[i]) && Lib.isPlainObject(newVal[i])) {\n if (diffConfig(oldVal[i], newVal[i])) {\n return true;\n }\n } else {\n return true;\n }\n }\n }\n } else {\n return true;\n }\n }\n }\n }\n function animate(gd, frameOrGroupNameOrFrameList, animationOpts) {\n gd = Lib.getGraphDiv(gd);\n if (!Lib.isPlotDiv(gd)) {\n throw new Error(\n \"This element is not a Plotly plot: \" + gd + \". It's likely that you've failed to create a plot before animating it. For more details, see https://plotly.com/javascript/animations/\"\n );\n }\n var trans = gd._transitionData;\n if (!trans._frameQueue) {\n trans._frameQueue = [];\n }\n animationOpts = Plots.supplyAnimationDefaults(animationOpts);\n var transitionOpts = animationOpts.transition;\n var frameOpts = animationOpts.frame;\n if (trans._frameWaitingCnt === void 0) {\n trans._frameWaitingCnt = 0;\n }\n function getTransitionOpts(i) {\n if (Array.isArray(transitionOpts)) {\n if (i >= transitionOpts.length) {\n return transitionOpts[0];\n } else {\n return transitionOpts[i];\n }\n } else {\n return transitionOpts;\n }\n }\n function getFrameOpts(i) {\n if (Array.isArray(frameOpts)) {\n if (i >= frameOpts.length) {\n return frameOpts[0];\n } else {\n return frameOpts[i];\n }\n } else {\n return frameOpts;\n }\n }\n function callbackOnNthTime(cb, n) {\n var cnt = 0;\n return function() {\n if (cb && ++cnt === n) {\n return cb();\n }\n };\n }\n return new Promise(function(resolve, reject) {\n function discardExistingFrames() {\n if (trans._frameQueue.length === 0) {\n return;\n }\n while (trans._frameQueue.length) {\n var next = trans._frameQueue.pop();\n if (next.onInterrupt) {\n next.onInterrupt();\n }\n }\n gd.emit(\"plotly_animationinterrupted\", []);\n }\n function queueFrames(frameList2) {\n if (frameList2.length === 0) return;\n for (var i2 = 0; i2 < frameList2.length; i2++) {\n var computedFrame;\n if (frameList2[i2].type === \"byname\") {\n computedFrame = Plots.computeFrame(gd, frameList2[i2].name);\n } else {\n computedFrame = frameList2[i2].data;\n }\n var frameOpts2 = getFrameOpts(i2);\n var transitionOpts2 = getTransitionOpts(i2);\n transitionOpts2.duration = Math.min(transitionOpts2.duration, frameOpts2.duration);\n var nextFrame2 = {\n frame: computedFrame,\n name: frameList2[i2].name,\n frameOpts: frameOpts2,\n transitionOpts: transitionOpts2\n };\n if (i2 === frameList2.length - 1) {\n nextFrame2.onComplete = callbackOnNthTime(resolve, 2);\n nextFrame2.onInterrupt = reject;\n }\n trans._frameQueue.push(nextFrame2);\n }\n if (animationOpts.mode === \"immediate\") {\n trans._lastFrameAt = -Infinity;\n }\n if (!trans._animationRaf) {\n beginAnimationLoop();\n }\n }\n function stopAnimationLoop() {\n gd.emit(\"plotly_animated\");\n window.cancelAnimationFrame(trans._animationRaf);\n trans._animationRaf = null;\n }\n function nextFrame() {\n if (trans._currentFrame && trans._currentFrame.onComplete) {\n trans._currentFrame.onComplete();\n }\n var newFrame = trans._currentFrame = trans._frameQueue.shift();\n if (newFrame) {\n var stringName = newFrame.name ? newFrame.name.toString() : null;\n gd._fullLayout._currentFrame = stringName;\n trans._lastFrameAt = Date.now();\n trans._timeToNext = newFrame.frameOpts.duration;\n Plots.transition(\n gd,\n newFrame.frame.data,\n newFrame.frame.layout,\n helpers.coerceTraceIndices(gd, newFrame.frame.traces),\n newFrame.frameOpts,\n newFrame.transitionOpts\n ).then(function() {\n if (newFrame.onComplete) {\n newFrame.onComplete();\n }\n });\n gd.emit(\"plotly_animatingframe\", {\n name: stringName,\n frame: newFrame.frame,\n animation: {\n frame: newFrame.frameOpts,\n transition: newFrame.transitionOpts\n }\n });\n } else {\n stopAnimationLoop();\n }\n }\n function beginAnimationLoop() {\n gd.emit(\"plotly_animating\");\n trans._lastFrameAt = -Infinity;\n trans._timeToNext = 0;\n trans._runningTransitions = 0;\n trans._currentFrame = null;\n var doFrame = function() {\n trans._animationRaf = window.requestAnimationFrame(doFrame);\n if (Date.now() - trans._lastFrameAt > trans._timeToNext) {\n nextFrame();\n }\n };\n doFrame();\n }\n var configCounter = 0;\n function setTransitionConfig(frame2) {\n if (Array.isArray(transitionOpts)) {\n if (configCounter >= transitionOpts.length) {\n frame2.transitionOpts = transitionOpts[configCounter];\n } else {\n frame2.transitionOpts = transitionOpts[0];\n }\n } else {\n frame2.transitionOpts = transitionOpts;\n }\n configCounter++;\n return frame2;\n }\n var i, frame;\n var frameList = [];\n var allFrames = frameOrGroupNameOrFrameList === void 0 || frameOrGroupNameOrFrameList === null;\n var isFrameArray = Array.isArray(frameOrGroupNameOrFrameList);\n var isSingleFrame = !allFrames && !isFrameArray && Lib.isPlainObject(frameOrGroupNameOrFrameList);\n if (isSingleFrame) {\n frameList.push({\n type: \"object\",\n data: setTransitionConfig(Lib.extendFlat({}, frameOrGroupNameOrFrameList))\n });\n } else if (allFrames || [\"string\", \"number\"].indexOf(typeof frameOrGroupNameOrFrameList) !== -1) {\n for (i = 0; i < trans._frames.length; i++) {\n frame = trans._frames[i];\n if (!frame) continue;\n if (allFrames || String(frame.group) === String(frameOrGroupNameOrFrameList)) {\n frameList.push({\n type: \"byname\",\n name: String(frame.name),\n data: setTransitionConfig({ name: frame.name })\n });\n }\n }\n } else if (isFrameArray) {\n for (i = 0; i < frameOrGroupNameOrFrameList.length; i++) {\n var frameOrName = frameOrGroupNameOrFrameList[i];\n if ([\"number\", \"string\"].indexOf(typeof frameOrName) !== -1) {\n frameOrName = String(frameOrName);\n frameList.push({\n type: \"byname\",\n name: frameOrName,\n data: setTransitionConfig({ name: frameOrName })\n });\n } else if (Lib.isPlainObject(frameOrName)) {\n frameList.push({\n type: \"object\",\n data: setTransitionConfig(Lib.extendFlat({}, frameOrName))\n });\n }\n }\n }\n for (i = 0; i < frameList.length; i++) {\n frame = frameList[i];\n if (frame.type === \"byname\" && !trans._frameHash[frame.data.name]) {\n Lib.warn('animate failure: frame not found: \"' + frame.data.name + '\"');\n reject();\n return;\n }\n }\n if ([\"next\", \"immediate\"].indexOf(animationOpts.mode) !== -1) {\n discardExistingFrames();\n }\n if (animationOpts.direction === \"reverse\") {\n frameList.reverse();\n }\n var currentFrame = gd._fullLayout._currentFrame;\n if (currentFrame && animationOpts.fromcurrent) {\n var idx = -1;\n for (i = 0; i < frameList.length; i++) {\n frame = frameList[i];\n if (frame.type === \"byname\" && frame.name === currentFrame) {\n idx = i;\n break;\n }\n }\n if (idx > 0 && idx < frameList.length - 1) {\n var filteredFrameList = [];\n for (i = 0; i < frameList.length; i++) {\n frame = frameList[i];\n if (frameList[i].type !== \"byname\" || i > idx) {\n filteredFrameList.push(frame);\n }\n }\n frameList = filteredFrameList;\n }\n }\n if (frameList.length > 0) {\n queueFrames(frameList);\n } else {\n gd.emit(\"plotly_animated\");\n resolve();\n }\n });\n }\n function addFrames(gd, frameList, indices) {\n gd = Lib.getGraphDiv(gd);\n if (frameList === null || frameList === void 0) {\n return Promise.resolve();\n }\n if (!Lib.isPlotDiv(gd)) {\n throw new Error(\n \"This element is not a Plotly plot: \" + gd + \". It's likely that you've failed to create a plot before adding frames. For more details, see https://plotly.com/javascript/animations/\"\n );\n }\n var i, frame, j, idx;\n var _frames = gd._transitionData._frames;\n var _frameHash = gd._transitionData._frameHash;\n if (!Array.isArray(frameList)) {\n throw new Error(\"addFrames failure: frameList must be an Array of frame definitions\" + frameList);\n }\n var bigIndex = _frames.length + frameList.length * 2;\n var insertions = [];\n var _frameHashLocal = {};\n for (i = frameList.length - 1; i >= 0; i--) {\n if (!Lib.isPlainObject(frameList[i])) continue;\n var lookupName = frameList[i].name;\n var name = (_frameHash[lookupName] || _frameHashLocal[lookupName] || {}).name;\n var newName = frameList[i].name;\n var collisionPresent = _frameHash[name] || _frameHashLocal[name];\n if (name && newName && typeof newName === \"number\" && collisionPresent && numericNameWarningCount < numericNameWarningCountLimit) {\n numericNameWarningCount++;\n Lib.warn('addFrames: overwriting frame \"' + (_frameHash[name] || _frameHashLocal[name]).name + '\" with a frame whose name of type \"number\" also equates to \"' + name + '\". This is valid but may potentially lead to unexpected behavior since all plotly.js frame names are stored internally as strings.');\n if (numericNameWarningCount === numericNameWarningCountLimit) {\n Lib.warn(\"addFrames: This API call has yielded too many of these warnings. For the rest of this call, further warnings about numeric frame names will be suppressed.\");\n }\n }\n _frameHashLocal[lookupName] = { name: lookupName };\n insertions.push({\n frame: Plots.supplyFrameDefaults(frameList[i]),\n index: indices && indices[i] !== void 0 && indices[i] !== null ? indices[i] : bigIndex + i\n });\n }\n insertions.sort(function(a, b) {\n if (a.index > b.index) return -1;\n if (a.index < b.index) return 1;\n return 0;\n });\n var ops = [];\n var revops = [];\n var frameCount = _frames.length;\n for (i = insertions.length - 1; i >= 0; i--) {\n frame = insertions[i].frame;\n if (typeof frame.name === \"number\") {\n Lib.warn(\"Warning: addFrames accepts frames with numeric names, but the numbers areimplicitly cast to strings\");\n }\n if (!frame.name) {\n while (_frameHash[frame.name = \"frame \" + gd._transitionData._counter++]) ;\n }\n if (_frameHash[frame.name]) {\n for (j = 0; j < _frames.length; j++) {\n if ((_frames[j] || {}).name === frame.name) break;\n }\n ops.push({ type: \"replace\", index: j, value: frame });\n revops.unshift({ type: \"replace\", index: j, value: _frames[j] });\n } else {\n idx = Math.max(0, Math.min(insertions[i].index, frameCount));\n ops.push({ type: \"insert\", index: idx, value: frame });\n revops.unshift({ type: \"delete\", index: idx });\n frameCount++;\n }\n }\n var undoFunc = Plots.modifyFrames;\n var redoFunc = Plots.modifyFrames;\n var undoArgs = [gd, revops];\n var redoArgs = [gd, ops];\n if (Queue) Queue.add(gd, undoFunc, undoArgs, redoFunc, redoArgs);\n return Plots.modifyFrames(gd, ops);\n }\n function deleteFrames(gd, frameList) {\n gd = Lib.getGraphDiv(gd);\n if (!Lib.isPlotDiv(gd)) {\n throw new Error(\"This element is not a Plotly plot: \" + gd);\n }\n var i, idx;\n var _frames = gd._transitionData._frames;\n var ops = [];\n var revops = [];\n if (!frameList) {\n frameList = [];\n for (i = 0; i < _frames.length; i++) {\n frameList.push(i);\n }\n }\n frameList = frameList.slice();\n frameList.sort();\n for (i = frameList.length - 1; i >= 0; i--) {\n idx = frameList[i];\n ops.push({ type: \"delete\", index: idx });\n revops.unshift({ type: \"insert\", index: idx, value: _frames[idx] });\n }\n var undoFunc = Plots.modifyFrames;\n var redoFunc = Plots.modifyFrames;\n var undoArgs = [gd, revops];\n var redoArgs = [gd, ops];\n if (Queue) Queue.add(gd, undoFunc, undoArgs, redoFunc, redoArgs);\n return Plots.modifyFrames(gd, ops);\n }\n function purge(gd) {\n gd = Lib.getGraphDiv(gd);\n var fullLayout = gd._fullLayout || {};\n var fullData = gd._fullData || [];\n Plots.cleanPlot([], {}, fullData, fullLayout);\n Plots.purge(gd);\n Events.purge(gd);\n if (fullLayout._container) fullLayout._container.remove();\n delete gd._context;\n return gd;\n }\n function calcInverseTransform(gd) {\n var fullLayout = gd._fullLayout;\n var newBBox = gd.getBoundingClientRect();\n if (Lib.equalDomRects(newBBox, fullLayout._lastBBox)) return;\n var m = fullLayout._invTransform = Lib.inverseTransformMatrix(Lib.getFullTransformMatrix(gd));\n fullLayout._invScaleX = Math.sqrt(m[0][0] * m[0][0] + m[0][1] * m[0][1] + m[0][2] * m[0][2]);\n fullLayout._invScaleY = Math.sqrt(m[1][0] * m[1][0] + m[1][1] * m[1][1] + m[1][2] * m[1][2]);\n fullLayout._lastBBox = newBBox;\n }\n function makePlotFramework(gd) {\n var gd3 = d3.select(gd);\n var fullLayout = gd._fullLayout;\n fullLayout._calcInverseTransform = calcInverseTransform;\n fullLayout._calcInverseTransform(gd);\n fullLayout._container = gd3.selectAll(\".plot-container\").data([0]);\n fullLayout._container.enter().insert(\"div\", \":first-child\").classed(\"plot-container\", true).classed(\"plotly\", true).style({\n width: \"100%\",\n height: \"100%\"\n });\n fullLayout._paperdiv = fullLayout._container.selectAll(\".svg-container\").data([0]);\n fullLayout._paperdiv.enter().append(\"div\").classed(\"user-select-none\", true).classed(\"svg-container\", true).style(\"position\", \"relative\");\n fullLayout._glcontainer = fullLayout._paperdiv.selectAll(\".gl-container\").data([{}]);\n fullLayout._glcontainer.enter().append(\"div\").classed(\"gl-container\", true);\n fullLayout._paperdiv.selectAll(\".main-svg\").remove();\n fullLayout._paperdiv.select(\".modebar-container\").remove();\n fullLayout._paper = fullLayout._paperdiv.insert(\"svg\", \":first-child\").classed(\"main-svg\", true);\n fullLayout._toppaper = fullLayout._paperdiv.append(\"svg\").classed(\"main-svg\", true);\n fullLayout._modebardiv = fullLayout._paperdiv.append(\"div\");\n delete fullLayout._modeBar;\n fullLayout._hoverpaper = fullLayout._paperdiv.append(\"svg\").classed(\"main-svg\", true);\n if (!fullLayout._uid) {\n var otherUids = {};\n d3.selectAll(\"defs\").each(function() {\n if (this.id) otherUids[this.id.split(\"-\")[1]] = 1;\n });\n fullLayout._uid = Lib.randstr(otherUids);\n }\n fullLayout._paperdiv.selectAll(\".main-svg\").attr(xmlnsNamespaces.svgAttrs);\n fullLayout._defs = fullLayout._paper.append(\"defs\").attr(\"id\", \"defs-\" + fullLayout._uid);\n fullLayout._clips = fullLayout._defs.append(\"g\").classed(\"clips\", true);\n fullLayout._topdefs = fullLayout._toppaper.append(\"defs\").attr(\"id\", \"topdefs-\" + fullLayout._uid);\n fullLayout._topclips = fullLayout._topdefs.append(\"g\").classed(\"clips\", true);\n fullLayout._bgLayer = fullLayout._paper.append(\"g\").classed(\"bglayer\", true);\n fullLayout._draggers = fullLayout._paper.append(\"g\").classed(\"draglayer\", true);\n var layerBelow = fullLayout._paper.append(\"g\").classed(\"layer-below\", true);\n fullLayout._imageLowerLayer = layerBelow.append(\"g\").classed(\"imagelayer\", true);\n fullLayout._shapeLowerLayer = layerBelow.append(\"g\").classed(\"shapelayer\", true);\n fullLayout._cartesianlayer = fullLayout._paper.append(\"g\").classed(\"cartesianlayer\", true);\n fullLayout._polarlayer = fullLayout._paper.append(\"g\").classed(\"polarlayer\", true);\n fullLayout._smithlayer = fullLayout._paper.append(\"g\").classed(\"smithlayer\", true);\n fullLayout._ternarylayer = fullLayout._paper.append(\"g\").classed(\"ternarylayer\", true);\n fullLayout._geolayer = fullLayout._paper.append(\"g\").classed(\"geolayer\", true);\n fullLayout._funnelarealayer = fullLayout._paper.append(\"g\").classed(\"funnelarealayer\", true);\n fullLayout._pielayer = fullLayout._paper.append(\"g\").classed(\"pielayer\", true);\n fullLayout._iciclelayer = fullLayout._paper.append(\"g\").classed(\"iciclelayer\", true);\n fullLayout._treemaplayer = fullLayout._paper.append(\"g\").classed(\"treemaplayer\", true);\n fullLayout._sunburstlayer = fullLayout._paper.append(\"g\").classed(\"sunburstlayer\", true);\n fullLayout._indicatorlayer = fullLayout._toppaper.append(\"g\").classed(\"indicatorlayer\", true);\n fullLayout._glimages = fullLayout._paper.append(\"g\").classed(\"glimages\", true);\n var layerAbove = fullLayout._toppaper.append(\"g\").classed(\"layer-above\", true);\n fullLayout._imageUpperLayer = layerAbove.append(\"g\").classed(\"imagelayer\", true);\n fullLayout._shapeUpperLayer = layerAbove.append(\"g\").classed(\"shapelayer\", true);\n fullLayout._selectionLayer = fullLayout._toppaper.append(\"g\").classed(\"selectionlayer\", true);\n fullLayout._infolayer = fullLayout._toppaper.append(\"g\").classed(\"infolayer\", true);\n fullLayout._menulayer = fullLayout._toppaper.append(\"g\").classed(\"menulayer\", true);\n fullLayout._zoomlayer = fullLayout._toppaper.append(\"g\").classed(\"zoomlayer\", true);\n fullLayout._hoverlayer = fullLayout._hoverpaper.append(\"g\").classed(\"hoverlayer\", true);\n fullLayout._modebardiv.classed(\"modebar-container\", true).style(\"position\", \"absolute\").style(\"top\", \"0px\").style(\"right\", \"0px\");\n gd.emit(\"plotly_framework\");\n }\n exports.animate = animate;\n exports.addFrames = addFrames;\n exports.deleteFrames = deleteFrames;\n exports.addTraces = addTraces;\n exports.deleteTraces = deleteTraces;\n exports.extendTraces = extendTraces;\n exports.moveTraces = moveTraces;\n exports.prependTraces = prependTraces;\n exports.newPlot = newPlot;\n exports._doPlot = _doPlot;\n exports.purge = purge;\n exports.react = react;\n exports.redraw = redraw;\n exports.relayout = relayout;\n exports.restyle = restyle;\n exports.setPlotConfig = setPlotConfig;\n exports.update = update;\n exports._guiRelayout = guiEdit(relayout);\n exports._guiRestyle = guiEdit(restyle);\n exports._guiUpdate = guiEdit(update);\n exports._storeDirectGUIEdit = _storeDirectGUIEdit;\n }\n });\n\n // src/snapshot/helpers.js\n var require_helpers10 = __commonJS({\n \"src/snapshot/helpers.js\"(exports) {\n \"use strict\";\n var Registry = require_registry();\n exports.getDelay = function(fullLayout) {\n if (!fullLayout._has) return 0;\n return fullLayout._has(\"gl3d\") || fullLayout._has(\"mapbox\") || fullLayout._has(\"map\") ? 500 : 0;\n };\n exports.getRedrawFunc = function(gd) {\n return function() {\n Registry.getComponentMethod(\"colorbar\", \"draw\")(gd);\n };\n };\n exports.encodeSVG = function(svg) {\n return \"data:image/svg+xml,\" + encodeURIComponent(svg);\n };\n exports.encodeJSON = function(json) {\n return \"data:application/json,\" + encodeURIComponent(json);\n };\n var DOM_URL = window.URL || window.webkitURL;\n exports.createObjectURL = function(blob) {\n return DOM_URL.createObjectURL(blob);\n };\n exports.revokeObjectURL = function(url) {\n return DOM_URL.revokeObjectURL(url);\n };\n exports.createBlob = function(url, format) {\n if (format === \"svg\") {\n return new window.Blob([url], { type: \"image/svg+xml;charset=utf-8\" });\n } else if (format === \"full-json\") {\n return new window.Blob([url], { type: \"application/json;charset=utf-8\" });\n } else {\n var binary = fixBinary(window.atob(url));\n return new window.Blob([binary], { type: \"image/\" + format });\n }\n };\n exports.octetStream = function(s) {\n document.location.href = \"data:application/octet-stream\" + s;\n };\n function fixBinary(b) {\n var len = b.length;\n var buf = new ArrayBuffer(len);\n var arr = new Uint8Array(buf);\n for (var i = 0; i < len; i++) {\n arr[i] = b.charCodeAt(i);\n }\n return buf;\n }\n exports.IMAGE_URL_PREFIX = /^data:image\\/\\w+;base64,/;\n }\n });\n\n // src/snapshot/tosvg.js\n var require_tosvg = __commonJS({\n \"src/snapshot/tosvg.js\"(exports, module) {\n \"use strict\";\n var d3 = require_d3();\n var Lib = require_lib();\n var Drawing = require_drawing();\n var Color = require_color();\n var xmlnsNamespaces = require_xmlns_namespaces();\n var DOUBLEQUOTE_REGEX = /\"/g;\n var DUMMY_SUB = \"TOBESTRIPPED\";\n var DUMMY_REGEX = new RegExp('(\"' + DUMMY_SUB + \")|(\" + DUMMY_SUB + '\")', \"g\");\n function htmlEntityDecode(s) {\n var hiddenDiv = d3.select(\"body\").append(\"div\").style({ display: \"none\" }).html(\"\");\n var replaced = s.replace(/(&[^;]*;)/gi, function(d) {\n if (d === \"<\") {\n return \"<\";\n }\n if (d === \"&rt;\") {\n return \">\";\n }\n if (d.indexOf(\"<\") !== -1 || d.indexOf(\">\") !== -1) {\n return \"\";\n }\n return hiddenDiv.html(d).text();\n });\n hiddenDiv.remove();\n return replaced;\n }\n function xmlEntityEncode(str) {\n return str.replace(/&(?!\\w+;|\\#[0-9]+;| \\#x[0-9A-F]+;)/g, \"&\");\n }\n module.exports = function toSVG(gd, format, scale) {\n var fullLayout = gd._fullLayout;\n var svg = fullLayout._paper;\n var toppaper = fullLayout._toppaper;\n var width = fullLayout.width;\n var height = fullLayout.height;\n var i;\n svg.insert(\"rect\", \":first-child\").call(Drawing.setRect, 0, 0, width, height).call(Color.fill, fullLayout.paper_bgcolor);\n var basePlotModules = fullLayout._basePlotModules || [];\n for (i = 0; i < basePlotModules.length; i++) {\n var _module = basePlotModules[i];\n if (_module.toSVG) _module.toSVG(gd);\n }\n if (toppaper) {\n var nodes = toppaper.node().childNodes;\n var topGroups = Array.prototype.slice.call(nodes);\n for (i = 0; i < topGroups.length; i++) {\n var topGroup = topGroups[i];\n if (topGroup.childNodes.length) svg.node().appendChild(topGroup);\n }\n }\n if (fullLayout._draggers) {\n fullLayout._draggers.remove();\n }\n svg.node().style.background = \"\";\n svg.selectAll(\"text\").attr({ \"data-unformatted\": null, \"data-math\": null }).each(function() {\n var txt = d3.select(this);\n if (this.style.visibility === \"hidden\" || this.style.display === \"none\") {\n txt.remove();\n return;\n } else {\n txt.style({ visibility: null, display: null });\n }\n var ff = this.style.fontFamily;\n if (ff && ff.indexOf('\"') !== -1) {\n txt.style(\"font-family\", ff.replace(DOUBLEQUOTE_REGEX, DUMMY_SUB));\n }\n var fw = this.style.fontWeight;\n if (fw && (fw === \"normal\" || fw === \"400\")) {\n txt.style(\"font-weight\", void 0);\n }\n var fs = this.style.fontStyle;\n if (fs && fs === \"normal\") {\n txt.style(\"font-style\", void 0);\n }\n var fv = this.style.fontVariant;\n if (fv && fv === \"normal\") {\n txt.style(\"font-variant\", void 0);\n }\n });\n svg.selectAll(\".gradient_filled,.pattern_filled\").each(function() {\n var pt = d3.select(this);\n var fill = this.style.fill;\n if (fill && fill.indexOf(\"url(\") !== -1) {\n pt.style(\"fill\", fill.replace(DOUBLEQUOTE_REGEX, DUMMY_SUB));\n }\n var stroke = this.style.stroke;\n if (stroke && stroke.indexOf(\"url(\") !== -1) {\n pt.style(\"stroke\", stroke.replace(DOUBLEQUOTE_REGEX, DUMMY_SUB));\n }\n });\n if (format === \"pdf\" || format === \"eps\") {\n svg.selectAll(\"#MathJax_SVG_glyphs path\").attr(\"stroke-width\", 0);\n }\n if (format === \"svg\" && scale) {\n svg.attr(\"width\", scale * width);\n svg.attr(\"height\", scale * height);\n svg.attr(\"viewBox\", \"0 0 \" + width + \" \" + height);\n }\n var s = new window.XMLSerializer().serializeToString(svg.node());\n s = htmlEntityDecode(s);\n s = xmlEntityEncode(s);\n s = s.replace(DUMMY_REGEX, \"'\");\n return s;\n };\n }\n });\n\n // src/snapshot/svgtoimg.js\n var require_svgtoimg = __commonJS({\n \"src/snapshot/svgtoimg.js\"(exports, module) {\n \"use strict\";\n var Lib = require_lib();\n var EventEmitter = require_events().EventEmitter;\n var helpers = require_helpers10();\n function svgToImg(opts) {\n var ev = opts.emitter || new EventEmitter();\n var promise = new Promise(function(resolve, reject) {\n var Image2 = window.Image;\n var svg = opts.svg;\n var format = opts.format || \"png\";\n var canvas = opts.canvas;\n var scale = opts.scale || 1;\n var w0 = opts.width || 300;\n var h0 = opts.height || 150;\n var w1 = scale * w0;\n var h1 = scale * h0;\n var ctx = canvas.getContext(\"2d\", { willReadFrequently: true });\n var img = new Image2();\n var svgBlob, url;\n if (format === \"svg\" || Lib.isSafari()) {\n url = helpers.encodeSVG(svg);\n } else {\n svgBlob = helpers.createBlob(svg, \"svg\");\n url = helpers.createObjectURL(svgBlob);\n }\n canvas.width = w1;\n canvas.height = h1;\n img.onload = function() {\n var imgData;\n svgBlob = null;\n helpers.revokeObjectURL(url);\n if (format !== \"svg\") {\n ctx.drawImage(img, 0, 0, w1, h1);\n }\n switch (format) {\n case \"jpeg\":\n imgData = canvas.toDataURL(\"image/jpeg\");\n break;\n case \"png\":\n imgData = canvas.toDataURL(\"image/png\");\n break;\n case \"webp\":\n imgData = canvas.toDataURL(\"image/webp\");\n break;\n case \"svg\":\n imgData = url;\n break;\n default:\n var errorMsg = \"Image format is not jpeg, png, svg or webp.\";\n reject(new Error(errorMsg));\n if (!opts.promise) {\n return ev.emit(\"error\", errorMsg);\n }\n }\n resolve(imgData);\n if (!opts.promise) {\n ev.emit(\"success\", imgData);\n }\n };\n img.onerror = function(err) {\n svgBlob = null;\n helpers.revokeObjectURL(url);\n reject(err);\n if (!opts.promise) {\n return ev.emit(\"error\", err);\n }\n };\n img.src = url;\n });\n if (opts.promise) {\n return promise;\n }\n return ev;\n }\n module.exports = svgToImg;\n }\n });\n\n // src/plot_api/to_image.js\n var require_to_image = __commonJS({\n \"src/plot_api/to_image.js\"(exports, module) {\n \"use strict\";\n var isNumeric = require_fast_isnumeric();\n var plotApi = require_plot_api();\n var plots = require_plots();\n var Lib = require_lib();\n var helpers = require_helpers10();\n var toSVG = require_tosvg();\n var svgToImg = require_svgtoimg();\n var version = require_version().version;\n var attrs = {\n format: {\n valType: \"enumerated\",\n values: [\"png\", \"jpeg\", \"webp\", \"svg\", \"full-json\"],\n dflt: \"png\"\n },\n width: {\n valType: \"number\",\n min: 1\n },\n height: {\n valType: \"number\",\n min: 1\n },\n scale: {\n valType: \"number\",\n min: 0,\n dflt: 1\n },\n setBackground: {\n valType: \"any\",\n dflt: false\n },\n imageDataOnly: {\n valType: \"boolean\",\n dflt: false\n }\n };\n function toImage(gd, opts) {\n opts = opts || {};\n var data;\n var layout;\n var config;\n var fullLayout;\n if (Lib.isPlainObject(gd)) {\n data = gd.data || [];\n layout = gd.layout || {};\n config = gd.config || {};\n fullLayout = {};\n } else {\n gd = Lib.getGraphDiv(gd);\n data = Lib.extendDeep([], gd.data);\n layout = Lib.extendDeep({}, gd.layout);\n config = gd._context;\n fullLayout = gd._fullLayout || {};\n }\n function isImpliedOrValid(attr) {\n return !(attr in opts) || Lib.validate(opts[attr], attrs[attr]);\n }\n if (!isImpliedOrValid(\"width\") && opts.width !== null || !isImpliedOrValid(\"height\") && opts.height !== null) {\n throw new Error(\"Height and width should be pixel values.\");\n }\n if (!isImpliedOrValid(\"format\")) {\n throw new Error(\"Export format is not \" + Lib.join2(attrs.format.values, \", \", \" or \") + \".\");\n }\n var fullOpts = {};\n function coerce(attr, dflt) {\n return Lib.coerce(opts, fullOpts, attrs, attr, dflt);\n }\n var format = coerce(\"format\");\n var width = coerce(\"width\");\n var height = coerce(\"height\");\n var scale = coerce(\"scale\");\n var setBackground = coerce(\"setBackground\");\n var imageDataOnly = coerce(\"imageDataOnly\");\n var clonedGd = document.createElement(\"div\");\n clonedGd.style.position = \"absolute\";\n clonedGd.style.left = \"-5000px\";\n document.body.appendChild(clonedGd);\n var layoutImage = Lib.extendFlat({}, layout);\n if (width) {\n layoutImage.width = width;\n } else if (opts.width === null && isNumeric(fullLayout.width)) {\n layoutImage.width = fullLayout.width;\n }\n if (height) {\n layoutImage.height = height;\n } else if (opts.height === null && isNumeric(fullLayout.height)) {\n layoutImage.height = fullLayout.height;\n }\n var configImage = Lib.extendFlat({}, config, {\n _exportedPlot: true,\n staticPlot: true,\n setBackground\n });\n var redrawFunc = helpers.getRedrawFunc(clonedGd);\n function wait() {\n return new Promise(function(resolve) {\n setTimeout(resolve, helpers.getDelay(clonedGd._fullLayout));\n });\n }\n function convert() {\n return new Promise(function(resolve, reject) {\n var svg = toSVG(clonedGd, format, scale);\n var width2 = clonedGd._fullLayout.width;\n var height2 = clonedGd._fullLayout.height;\n function cleanup() {\n plotApi.purge(clonedGd);\n document.body.removeChild(clonedGd);\n }\n if (format === \"full-json\") {\n var json = plots.graphJson(clonedGd, false, \"keepdata\", \"object\", true, true);\n json.version = version;\n json = JSON.stringify(json);\n cleanup();\n if (imageDataOnly) {\n return resolve(json);\n } else {\n return resolve(helpers.encodeJSON(json));\n }\n }\n cleanup();\n if (format === \"svg\") {\n if (imageDataOnly) {\n return resolve(svg);\n } else {\n return resolve(helpers.encodeSVG(svg));\n }\n }\n var canvas = document.createElement(\"canvas\");\n canvas.id = Lib.randstr();\n svgToImg({\n format,\n width: width2,\n height: height2,\n scale,\n canvas,\n svg,\n // ask svgToImg to return a Promise\n // rather than EventEmitter\n // leave EventEmitter for backward\n // compatibility\n promise: true\n }).then(resolve).catch(reject);\n });\n }\n function urlToImageData(url) {\n if (imageDataOnly) {\n return url.replace(helpers.IMAGE_URL_PREFIX, \"\");\n } else {\n return url;\n }\n }\n return new Promise(function(resolve, reject) {\n plotApi.newPlot(clonedGd, data, layoutImage, configImage).then(redrawFunc).then(wait).then(convert).then(function(url) {\n resolve(urlToImageData(url));\n }).catch(function(err) {\n reject(err);\n });\n });\n }\n module.exports = toImage;\n }\n });\n\n // src/plot_api/validate.js\n var require_validate = __commonJS({\n \"src/plot_api/validate.js\"(exports, module) {\n \"use strict\";\n var Lib = require_lib();\n var Plots = require_plots();\n var PlotSchema = require_plot_schema();\n var dfltConfig = require_plot_config().dfltConfig;\n var isPlainObject = Lib.isPlainObject;\n var isArray = Array.isArray;\n var isArrayOrTypedArray = Lib.isArrayOrTypedArray;\n module.exports = function validate(data, layout) {\n if (data === void 0) data = [];\n if (layout === void 0) layout = {};\n var schema = PlotSchema.get();\n var errorList = [];\n var gd = { _context: Lib.extendFlat({}, dfltConfig) };\n var dataIn, layoutIn;\n if (isArray(data)) {\n gd.data = Lib.extendDeep([], data);\n dataIn = data;\n } else {\n gd.data = [];\n dataIn = [];\n errorList.push(format(\"array\", \"data\"));\n }\n if (isPlainObject(layout)) {\n gd.layout = Lib.extendDeep({}, layout);\n layoutIn = layout;\n } else {\n gd.layout = {};\n layoutIn = {};\n if (arguments.length > 1) {\n errorList.push(format(\"object\", \"layout\"));\n }\n }\n Plots.supplyDefaults(gd);\n var dataOut = gd._fullData;\n var len = dataIn.length;\n for (var i = 0; i < len; i++) {\n var traceIn = dataIn[i];\n var base = [\"data\", i];\n if (!isPlainObject(traceIn)) {\n errorList.push(format(\"object\", base));\n continue;\n }\n var traceOut = dataOut[i];\n var traceType = traceOut.type;\n var traceSchema = schema.traces[traceType].attributes;\n traceSchema.type = {\n valType: \"enumerated\",\n values: [traceType]\n };\n if (traceOut.visible === false && traceIn.visible !== false) {\n errorList.push(format(\"invisible\", base));\n }\n crawl(traceIn, traceOut, traceSchema, errorList, base);\n }\n var layoutOut = gd._fullLayout;\n var layoutSchema = fillLayoutSchema(schema, dataOut);\n crawl(layoutIn, layoutOut, layoutSchema, errorList, \"layout\");\n return errorList.length === 0 ? void 0 : errorList;\n };\n function crawl(objIn, objOut, schema, list, base, path) {\n path = path || [];\n var keys = Object.keys(objIn);\n for (var i = 0; i < keys.length; i++) {\n var k = keys[i];\n var p = path.slice();\n p.push(k);\n var valIn = objIn[k];\n var valOut = objOut[k];\n var nestedSchema = getNestedSchema(schema, k);\n var nestedValType = (nestedSchema || {}).valType;\n var isInfoArray = nestedValType === \"info_array\";\n var isColorscale = nestedValType === \"colorscale\";\n var items = (nestedSchema || {}).items;\n if (!isInSchema(schema, k)) {\n list.push(format(\"schema\", base, p));\n } else if (isPlainObject(valIn) && isPlainObject(valOut) && nestedValType !== \"any\") {\n crawl(valIn, valOut, nestedSchema, list, base, p);\n } else if (isInfoArray && isArray(valIn)) {\n if (valIn.length > valOut.length) {\n list.push(format(\"unused\", base, p.concat(valOut.length)));\n }\n var len = valOut.length;\n var arrayItems = Array.isArray(items);\n if (arrayItems) len = Math.min(len, items.length);\n var m, n, item, valInPart, valOutPart;\n if (nestedSchema.dimensions === 2) {\n for (n = 0; n < len; n++) {\n if (isArray(valIn[n])) {\n if (valIn[n].length > valOut[n].length) {\n list.push(format(\"unused\", base, p.concat(n, valOut[n].length)));\n }\n var len2 = valOut[n].length;\n for (m = 0; m < (arrayItems ? Math.min(len2, items[n].length) : len2); m++) {\n item = arrayItems ? items[n][m] : items;\n valInPart = valIn[n][m];\n valOutPart = valOut[n][m];\n if (!Lib.validate(valInPart, item)) {\n list.push(format(\"value\", base, p.concat(n, m), valInPart));\n } else if (valOutPart !== valInPart && valOutPart !== +valInPart) {\n list.push(format(\"dynamic\", base, p.concat(n, m), valInPart, valOutPart));\n }\n }\n } else {\n list.push(format(\"array\", base, p.concat(n), valIn[n]));\n }\n }\n } else {\n for (n = 0; n < len; n++) {\n item = arrayItems ? items[n] : items;\n valInPart = valIn[n];\n valOutPart = valOut[n];\n if (!Lib.validate(valInPart, item)) {\n list.push(format(\"value\", base, p.concat(n), valInPart));\n } else if (valOutPart !== valInPart && valOutPart !== +valInPart) {\n list.push(format(\"dynamic\", base, p.concat(n), valInPart, valOutPart));\n }\n }\n }\n } else if (nestedSchema.items && !isInfoArray && isArray(valIn)) {\n var _nestedSchema = items[Object.keys(items)[0]];\n var indexList = [];\n var j, _p;\n for (j = 0; j < valOut.length; j++) {\n var _index = valOut[j]._index || j;\n _p = p.slice();\n _p.push(_index);\n if (isPlainObject(valIn[_index]) && isPlainObject(valOut[j])) {\n indexList.push(_index);\n var valInj = valIn[_index];\n var valOutj = valOut[j];\n if (isPlainObject(valInj) && valInj.visible !== false && valOutj.visible === false) {\n list.push(format(\"invisible\", base, _p));\n } else crawl(valInj, valOutj, _nestedSchema, list, base, _p);\n }\n }\n for (j = 0; j < valIn.length; j++) {\n _p = p.slice();\n _p.push(j);\n if (!isPlainObject(valIn[j])) {\n list.push(format(\"object\", base, _p, valIn[j]));\n } else if (indexList.indexOf(j) === -1) {\n list.push(format(\"unused\", base, _p));\n }\n }\n } else if (!isPlainObject(valIn) && isPlainObject(valOut)) {\n list.push(format(\"object\", base, p, valIn));\n } else if (!isArrayOrTypedArray(valIn) && isArrayOrTypedArray(valOut) && !isInfoArray && !isColorscale) {\n list.push(format(\"array\", base, p, valIn));\n } else if (!(k in objOut)) {\n list.push(format(\"unused\", base, p, valIn));\n } else if (!Lib.validate(valIn, nestedSchema)) {\n list.push(format(\"value\", base, p, valIn));\n } else if (nestedSchema.valType === \"enumerated\" && (nestedSchema.coerceNumber && valIn !== +valOut || valIn !== valOut)) {\n list.push(format(\"dynamic\", base, p, valIn, valOut));\n }\n }\n return list;\n }\n function fillLayoutSchema(schema, dataOut) {\n var layoutSchema = schema.layout.layoutAttributes;\n for (var i = 0; i < dataOut.length; i++) {\n var traceOut = dataOut[i];\n var traceSchema = schema.traces[traceOut.type];\n var traceLayoutAttr = traceSchema.layoutAttributes;\n if (traceLayoutAttr) {\n if (traceOut.subplot) {\n Lib.extendFlat(layoutSchema[traceSchema.attributes.subplot.dflt], traceLayoutAttr);\n } else {\n Lib.extendFlat(layoutSchema, traceLayoutAttr);\n }\n }\n }\n return layoutSchema;\n }\n var code2msgFunc = {\n object: function(base, astr) {\n var prefix;\n if (base === \"layout\" && astr === \"\") prefix = \"The layout argument\";\n else if (base[0] === \"data\" && astr === \"\") {\n prefix = \"Trace \" + base[1] + \" in the data argument\";\n } else prefix = inBase(base) + \"key \" + astr;\n return prefix + \" must be linked to an object container\";\n },\n array: function(base, astr) {\n var prefix;\n if (base === \"data\") prefix = \"The data argument\";\n else prefix = inBase(base) + \"key \" + astr;\n return prefix + \" must be linked to an array container\";\n },\n schema: function(base, astr) {\n return inBase(base) + \"key \" + astr + \" is not part of the schema\";\n },\n unused: function(base, astr, valIn) {\n var target = isPlainObject(valIn) ? \"container\" : \"key\";\n return inBase(base) + target + \" \" + astr + \" did not get coerced\";\n },\n dynamic: function(base, astr, valIn, valOut) {\n return [\n inBase(base) + \"key\",\n astr,\n \"(set to '\" + valIn + \"')\",\n \"got reset to\",\n \"'\" + valOut + \"'\",\n \"during defaults.\"\n ].join(\" \");\n },\n invisible: function(base, astr) {\n return (astr ? inBase(base) + \"item \" + astr : \"Trace \" + base[1]) + \" got defaulted to be not visible\";\n },\n value: function(base, astr, valIn) {\n return [\n inBase(base) + \"key \" + astr,\n \"is set to an invalid value (\" + valIn + \")\"\n ].join(\" \");\n }\n };\n function inBase(base) {\n if (isArray(base)) return \"In data trace \" + base[1] + \", \";\n return \"In \" + base + \", \";\n }\n function format(code, base, path, valIn, valOut) {\n path = path || \"\";\n var container, trace;\n if (isArray(base)) {\n container = base[0];\n trace = base[1];\n } else {\n container = base;\n trace = null;\n }\n var astr = convertPathToAttributeString(path);\n var msg = code2msgFunc[code](base, astr, valIn, valOut);\n Lib.log(msg);\n return {\n code,\n container,\n trace,\n path,\n astr,\n msg\n };\n }\n function isInSchema(schema, key) {\n var parts = splitKey(key);\n var keyMinusId = parts.keyMinusId;\n var id = parts.id;\n if (keyMinusId in schema && schema[keyMinusId]._isSubplotObj && id) {\n return true;\n }\n return key in schema;\n }\n function getNestedSchema(schema, key) {\n if (key in schema) return schema[key];\n var parts = splitKey(key);\n return schema[parts.keyMinusId];\n }\n var idRegex = Lib.counterRegex(\"([a-z]+)\");\n function splitKey(key) {\n var idMatch = key.match(idRegex);\n return {\n keyMinusId: idMatch && idMatch[1],\n id: idMatch && idMatch[2]\n };\n }\n function convertPathToAttributeString(path) {\n if (!isArray(path)) return String(path);\n var astr = \"\";\n for (var i = 0; i < path.length; i++) {\n var p = path[i];\n if (typeof p === \"number\") {\n astr = astr.substr(0, astr.length - 1) + \"[\" + p + \"]\";\n } else {\n astr += p;\n }\n if (i < path.length - 1) astr += \".\";\n }\n return astr;\n }\n }\n });\n\n // src/snapshot/filesaver.js\n var require_filesaver = __commonJS({\n \"src/snapshot/filesaver.js\"(exports, module) {\n \"use strict\";\n var Lib = require_lib();\n var helpers = require_helpers10();\n function fileSaver(url, name, format) {\n var saveLink = document.createElement(\"a\");\n var canUseSaveLink = \"download\" in saveLink;\n var promise = new Promise(function(resolve, reject) {\n var blob;\n var objectUrl;\n if (canUseSaveLink) {\n blob = helpers.createBlob(url, format);\n objectUrl = helpers.createObjectURL(blob);\n saveLink.href = objectUrl;\n saveLink.download = name;\n document.body.appendChild(saveLink);\n saveLink.click();\n document.body.removeChild(saveLink);\n helpers.revokeObjectURL(objectUrl);\n blob = null;\n return resolve(name);\n }\n if (Lib.isSafari()) {\n var prefix = format === \"svg\" ? \",\" : \";base64,\";\n helpers.octetStream(prefix + encodeURIComponent(url));\n return resolve(name);\n }\n reject(new Error(\"download error\"));\n });\n return promise;\n }\n module.exports = fileSaver;\n }\n });\n\n // src/snapshot/download.js\n var require_download = __commonJS({\n \"src/snapshot/download.js\"(exports, module) {\n \"use strict\";\n var Lib = require_lib();\n var toImage = require_to_image();\n var fileSaver = require_filesaver();\n var helpers = require_helpers10();\n function downloadImage(gd, opts) {\n var _gd;\n if (!Lib.isPlainObject(gd)) _gd = Lib.getGraphDiv(gd);\n opts = opts || {};\n opts.format = opts.format || \"png\";\n opts.width = opts.width || null;\n opts.height = opts.height || null;\n opts.imageDataOnly = true;\n return new Promise(function(resolve, reject) {\n if (_gd && _gd._snapshotInProgress) {\n reject(new Error(\"Snapshotting already in progress.\"));\n }\n if (_gd) _gd._snapshotInProgress = true;\n var promise = toImage(gd, opts);\n var filename = opts.filename || gd.fn || \"newplot\";\n filename += \".\" + opts.format.replace(\"-\", \".\");\n promise.then(function(result) {\n if (_gd) _gd._snapshotInProgress = false;\n return fileSaver(result, filename, opts.format);\n }).then(function(name) {\n resolve(name);\n }).catch(function(err) {\n if (_gd) _gd._snapshotInProgress = false;\n reject(err);\n });\n });\n }\n module.exports = downloadImage;\n }\n });\n\n // src/plot_api/template_api.js\n var require_template_api = __commonJS({\n \"src/plot_api/template_api.js\"(exports) {\n \"use strict\";\n var Lib = require_lib();\n var isPlainObject = Lib.isPlainObject;\n var PlotSchema = require_plot_schema();\n var Plots = require_plots();\n var plotAttributes = require_attributes2();\n var Template = require_plot_template();\n var dfltConfig = require_plot_config().dfltConfig;\n exports.makeTemplate = function(figure) {\n figure = Lib.isPlainObject(figure) ? figure : Lib.getGraphDiv(figure);\n figure = Lib.extendDeep({ _context: dfltConfig }, { data: figure.data, layout: figure.layout });\n Plots.supplyDefaults(figure);\n var data = figure.data || [];\n var layout = figure.layout || {};\n layout._basePlotModules = figure._fullLayout._basePlotModules;\n layout._modules = figure._fullLayout._modules;\n var template = {\n data: {},\n layout: {}\n };\n data.forEach(function(trace) {\n var traceTemplate = {};\n walkStyleKeys(trace, traceTemplate, getTraceInfo.bind(null, trace));\n var traceType2 = Lib.coerce(trace, {}, plotAttributes, \"type\");\n var typeTemplates2 = template.data[traceType2];\n if (!typeTemplates2) typeTemplates2 = template.data[traceType2] = [];\n typeTemplates2.push(traceTemplate);\n });\n walkStyleKeys(layout, template.layout, getLayoutInfo.bind(null, layout));\n delete template.layout.template;\n var oldTemplate = layout.template;\n if (isPlainObject(oldTemplate)) {\n var oldLayoutTemplate = oldTemplate.layout;\n var i, traceType, oldTypeTemplates, oldTypeLen, typeTemplates, typeLen;\n if (isPlainObject(oldLayoutTemplate)) {\n mergeTemplates(oldLayoutTemplate, template.layout);\n }\n var oldDataTemplate = oldTemplate.data;\n if (isPlainObject(oldDataTemplate)) {\n for (traceType in template.data) {\n oldTypeTemplates = oldDataTemplate[traceType];\n if (Array.isArray(oldTypeTemplates)) {\n typeTemplates = template.data[traceType];\n typeLen = typeTemplates.length;\n oldTypeLen = oldTypeTemplates.length;\n for (i = 0; i < typeLen; i++) {\n mergeTemplates(oldTypeTemplates[i % oldTypeLen], typeTemplates[i]);\n }\n for (i = typeLen; i < oldTypeLen; i++) {\n typeTemplates.push(Lib.extendDeep({}, oldTypeTemplates[i]));\n }\n }\n }\n for (traceType in oldDataTemplate) {\n if (!(traceType in template.data)) {\n template.data[traceType] = Lib.extendDeep([], oldDataTemplate[traceType]);\n }\n }\n }\n }\n return template;\n };\n function mergeTemplates(oldTemplate, newTemplate) {\n oldTemplate = Lib.extendDeep({}, oldTemplate);\n var oldKeys = Object.keys(oldTemplate).sort();\n var i, j;\n function mergeOne(oldVal2, newVal, key3) {\n if (isPlainObject(newVal) && isPlainObject(oldVal2)) {\n mergeTemplates(oldVal2, newVal);\n } else if (Array.isArray(newVal) && Array.isArray(oldVal2)) {\n var templater = Template.arrayTemplater({ _template: oldTemplate }, key3);\n for (j = 0; j < newVal.length; j++) {\n var item = newVal[j];\n var oldItem = templater.newItem(item)._template;\n if (oldItem) mergeTemplates(oldItem, item);\n }\n var defaultItems = templater.defaultItems();\n for (j = 0; j < defaultItems.length; j++) newVal.push(defaultItems[j]._template);\n for (j = 0; j < newVal.length; j++) delete newVal[j].templateitemname;\n }\n }\n for (i = 0; i < oldKeys.length; i++) {\n var key = oldKeys[i];\n var oldVal = oldTemplate[key];\n if (key in newTemplate) {\n mergeOne(oldVal, newTemplate[key], key);\n } else newTemplate[key] = oldVal;\n if (getBaseKey(key) === key) {\n for (var key2 in newTemplate) {\n var baseKey2 = getBaseKey(key2);\n if (key2 !== baseKey2 && baseKey2 === key && !(key2 in oldTemplate)) {\n mergeOne(oldVal, newTemplate[key2], key);\n }\n }\n }\n }\n }\n function getBaseKey(key) {\n return key.replace(/[0-9]+$/, \"\");\n }\n function walkStyleKeys(parent, templateOut, getAttributeInfo, path, basePath) {\n var pathAttr = basePath && getAttributeInfo(basePath);\n for (var key in parent) {\n var child = parent[key];\n var nextPath = getNextPath(parent, key, path);\n var nextBasePath = getNextPath(parent, key, basePath);\n var attr = getAttributeInfo(nextBasePath);\n if (!attr) {\n var baseKey = getBaseKey(key);\n if (baseKey !== key) {\n nextBasePath = getNextPath(parent, baseKey, basePath);\n attr = getAttributeInfo(nextBasePath);\n }\n }\n if (pathAttr && pathAttr === attr) continue;\n if (!attr || attr._noTemplating || attr.valType === \"data_array\" || attr.arrayOk && Array.isArray(child)) {\n continue;\n }\n if (!attr.valType && isPlainObject(child)) {\n walkStyleKeys(child, templateOut, getAttributeInfo, nextPath, nextBasePath);\n } else if (attr._isLinkedToArray && Array.isArray(child)) {\n var dfltDone = false;\n var namedIndex = 0;\n var usedNames = {};\n for (var i = 0; i < child.length; i++) {\n var item = child[i];\n if (isPlainObject(item)) {\n var name = item.name;\n if (name) {\n if (!usedNames[name]) {\n walkStyleKeys(\n item,\n templateOut,\n getAttributeInfo,\n getNextPath(child, namedIndex, nextPath),\n getNextPath(child, namedIndex, nextBasePath)\n );\n namedIndex++;\n usedNames[name] = 1;\n }\n } else if (!dfltDone) {\n var dfltKey = Template.arrayDefaultKey(key);\n var dfltPath = getNextPath(parent, dfltKey, path);\n var pathInArray = getNextPath(child, namedIndex, nextPath);\n walkStyleKeys(\n item,\n templateOut,\n getAttributeInfo,\n pathInArray,\n getNextPath(child, namedIndex, nextBasePath)\n );\n var itemPropInArray = Lib.nestedProperty(templateOut, pathInArray);\n var dfltProp = Lib.nestedProperty(templateOut, dfltPath);\n dfltProp.set(itemPropInArray.get());\n itemPropInArray.set(null);\n dfltDone = true;\n }\n }\n }\n } else {\n var templateProp = Lib.nestedProperty(templateOut, nextPath);\n templateProp.set(child);\n }\n }\n }\n function getLayoutInfo(layout, path) {\n return PlotSchema.getLayoutValObject(\n layout,\n Lib.nestedProperty({}, path).parts\n );\n }\n function getTraceInfo(trace, path) {\n return PlotSchema.getTraceValObject(\n trace,\n Lib.nestedProperty({}, path).parts\n );\n }\n function getNextPath(parent, key, path) {\n var nextPath;\n if (!path) nextPath = key;\n else if (Array.isArray(parent)) nextPath = path + \"[\" + key + \"]\";\n else nextPath = path + \".\" + key;\n return nextPath;\n }\n exports.validateTemplate = function(figureIn, template) {\n var figure = Lib.extendDeep({}, {\n _context: dfltConfig,\n data: figureIn.data,\n layout: figureIn.layout\n });\n var layout = figure.layout || {};\n if (!isPlainObject(template)) template = layout.template || {};\n var layoutTemplate = template.layout;\n var dataTemplate = template.data;\n var errorList = [];\n figure.layout = layout;\n figure.layout.template = template;\n Plots.supplyDefaults(figure);\n var fullLayout = figure._fullLayout;\n var fullData = figure._fullData;\n var layoutPaths = {};\n function crawlLayoutForContainers(obj, paths) {\n for (var key in obj) {\n if (key.charAt(0) !== \"_\" && isPlainObject(obj[key])) {\n var baseKey = getBaseKey(key);\n var nextPaths = [];\n var i2;\n for (i2 = 0; i2 < paths.length; i2++) {\n nextPaths.push(getNextPath(obj, key, paths[i2]));\n if (baseKey !== key) nextPaths.push(getNextPath(obj, baseKey, paths[i2]));\n }\n for (i2 = 0; i2 < nextPaths.length; i2++) {\n layoutPaths[nextPaths[i2]] = 1;\n }\n crawlLayoutForContainers(obj[key], nextPaths);\n }\n }\n }\n function crawlLayoutTemplateForContainers(obj, path) {\n for (var key in obj) {\n if (key.indexOf(\"defaults\") === -1 && isPlainObject(obj[key])) {\n var nextPath = getNextPath(obj, key, path);\n if (layoutPaths[nextPath]) {\n crawlLayoutTemplateForContainers(obj[key], nextPath);\n } else {\n errorList.push({ code: \"unused\", path: nextPath });\n }\n }\n }\n }\n if (!isPlainObject(layoutTemplate)) {\n errorList.push({ code: \"layout\" });\n } else {\n crawlLayoutForContainers(fullLayout, [\"layout\"]);\n crawlLayoutTemplateForContainers(layoutTemplate, \"layout\");\n }\n if (!isPlainObject(dataTemplate)) {\n errorList.push({ code: \"data\" });\n } else {\n var typeCount = {};\n var traceType;\n for (var i = 0; i < fullData.length; i++) {\n var fullTrace = fullData[i];\n traceType = fullTrace.type;\n typeCount[traceType] = (typeCount[traceType] || 0) + 1;\n if (!fullTrace._fullInput._template) {\n errorList.push({\n code: \"missing\",\n index: fullTrace.index,\n traceType\n });\n }\n }\n for (traceType in dataTemplate) {\n var templateCount = dataTemplate[traceType].length;\n var dataCount = typeCount[traceType] || 0;\n if (templateCount > dataCount) {\n errorList.push({\n code: \"unused\",\n traceType,\n templateCount,\n dataCount\n });\n } else if (dataCount > templateCount) {\n errorList.push({\n code: \"reused\",\n traceType,\n templateCount,\n dataCount\n });\n }\n }\n }\n function crawlForMissingTemplates(obj, path) {\n for (var key in obj) {\n if (key.charAt(0) === \"_\") continue;\n var val = obj[key];\n var nextPath = getNextPath(obj, key, path);\n if (isPlainObject(val)) {\n if (Array.isArray(obj) && val._template === false && val.templateitemname) {\n errorList.push({\n code: \"missing\",\n path: nextPath,\n templateitemname: val.templateitemname\n });\n }\n crawlForMissingTemplates(val, nextPath);\n } else if (Array.isArray(val) && hasPlainObject(val)) {\n crawlForMissingTemplates(val, nextPath);\n }\n }\n }\n crawlForMissingTemplates({ data: fullData, layout: fullLayout }, \"\");\n if (errorList.length) return errorList.map(format);\n };\n function hasPlainObject(arr) {\n for (var i = 0; i < arr.length; i++) {\n if (isPlainObject(arr[i])) return true;\n }\n }\n function format(opts) {\n var msg;\n switch (opts.code) {\n case \"data\":\n msg = \"The template has no key data.\";\n break;\n case \"layout\":\n msg = \"The template has no key layout.\";\n break;\n case \"missing\":\n if (opts.path) {\n msg = \"There are no templates for item \" + opts.path + \" with name \" + opts.templateitemname;\n } else {\n msg = \"There are no templates for trace \" + opts.index + \", of type \" + opts.traceType + \".\";\n }\n break;\n case \"unused\":\n if (opts.path) {\n msg = \"The template item at \" + opts.path + \" was not used in constructing the plot.\";\n } else if (opts.dataCount) {\n msg = \"Some of the templates of type \" + opts.traceType + \" were not used. The template has \" + opts.templateCount + \" traces, the data only has \" + opts.dataCount + \" of this type.\";\n } else {\n msg = \"The template has \" + opts.templateCount + \" traces of type \" + opts.traceType + \" but there are none in the data.\";\n }\n break;\n case \"reused\":\n msg = \"Some of the templates of type \" + opts.traceType + \" were used more than once. The template has \" + opts.templateCount + \" traces, the data has \" + opts.dataCount + \" of this type.\";\n break;\n }\n opts.msg = msg;\n return opts;\n }\n }\n });\n\n // src/plot_api/index.js\n var require_plot_api2 = __commonJS({\n \"src/plot_api/index.js\"(exports) {\n \"use strict\";\n var main = require_plot_api();\n exports._doPlot = main._doPlot;\n exports.newPlot = main.newPlot;\n exports.restyle = main.restyle;\n exports.relayout = main.relayout;\n exports.redraw = main.redraw;\n exports.update = main.update;\n exports._guiRestyle = main._guiRestyle;\n exports._guiRelayout = main._guiRelayout;\n exports._guiUpdate = main._guiUpdate;\n exports._storeDirectGUIEdit = main._storeDirectGUIEdit;\n exports.react = main.react;\n exports.extendTraces = main.extendTraces;\n exports.prependTraces = main.prependTraces;\n exports.addTraces = main.addTraces;\n exports.deleteTraces = main.deleteTraces;\n exports.moveTraces = main.moveTraces;\n exports.purge = main.purge;\n exports.addFrames = main.addFrames;\n exports.deleteFrames = main.deleteFrames;\n exports.animate = main.animate;\n exports.setPlotConfig = main.setPlotConfig;\n var getGraphDiv = require_dom().getGraphDiv;\n var eraseActiveShape = require_draw2().eraseActiveShape;\n exports.deleteActiveShape = function(gd) {\n return eraseActiveShape(getGraphDiv(gd));\n };\n exports.toImage = require_to_image();\n exports.validate = require_validate();\n exports.downloadImage = require_download();\n var templateApi = require_template_api();\n exports.makeTemplate = templateApi.makeTemplate;\n exports.validateTemplate = templateApi.validateTemplate;\n }\n });\n\n // src/traces/scatter/xy_defaults.js\n var require_xy_defaults = __commonJS({\n \"src/traces/scatter/xy_defaults.js\"(exports, module) {\n \"use strict\";\n var Lib = require_lib();\n var Registry = require_registry();\n module.exports = function handleXYDefaults(traceIn, traceOut, layout, coerce) {\n var x = coerce(\"x\");\n var y = coerce(\"y\");\n var len;\n var handleCalendarDefaults = Registry.getComponentMethod(\"calendars\", \"handleTraceDefaults\");\n handleCalendarDefaults(traceIn, traceOut, [\"x\", \"y\"], layout);\n if (x) {\n var xlen = Lib.minRowLength(x);\n if (y) {\n len = Math.min(xlen, Lib.minRowLength(y));\n } else {\n len = xlen;\n coerce(\"y0\");\n coerce(\"dy\");\n }\n } else {\n if (!y) return 0;\n len = Lib.minRowLength(y);\n coerce(\"x0\");\n coerce(\"dx\");\n }\n traceOut._length = len;\n return len;\n };\n }\n });\n\n // src/traces/scatter/period_defaults.js\n var require_period_defaults = __commonJS({\n \"src/traces/scatter/period_defaults.js\"(exports, module) {\n \"use strict\";\n var dateTick0 = require_lib().dateTick0;\n var numConstants = require_numerical();\n var ONEWEEK = numConstants.ONEWEEK;\n function getPeriod0Dflt(period, calendar) {\n if (period % ONEWEEK === 0) {\n return dateTick0(calendar, 1);\n }\n return dateTick0(calendar, 0);\n }\n module.exports = function handlePeriodDefaults(traceIn, traceOut, layout, coerce, opts) {\n if (!opts) {\n opts = {\n x: true,\n y: true\n };\n }\n if (opts.x) {\n var xperiod = coerce(\"xperiod\");\n if (xperiod) {\n coerce(\"xperiod0\", getPeriod0Dflt(xperiod, traceOut.xcalendar));\n coerce(\"xperiodalignment\");\n }\n }\n if (opts.y) {\n var yperiod = coerce(\"yperiod\");\n if (yperiod) {\n coerce(\"yperiod0\", getPeriod0Dflt(yperiod, traceOut.ycalendar));\n coerce(\"yperiodalignment\");\n }\n }\n };\n }\n });\n\n // src/traces/scatter/stack_defaults.js\n var require_stack_defaults = __commonJS({\n \"src/traces/scatter/stack_defaults.js\"(exports, module) {\n \"use strict\";\n var perStackAttrs = [\"orientation\", \"groupnorm\", \"stackgaps\"];\n module.exports = function handleStackDefaults(traceIn, traceOut, layout, coerce) {\n var stackOpts = layout._scatterStackOpts;\n var stackGroup = coerce(\"stackgroup\");\n if (stackGroup) {\n var subplot = traceOut.xaxis + traceOut.yaxis;\n var subplotStackOpts = stackOpts[subplot];\n if (!subplotStackOpts) subplotStackOpts = stackOpts[subplot] = {};\n var groupOpts = subplotStackOpts[stackGroup];\n var firstTrace = false;\n if (groupOpts) {\n groupOpts.traces.push(traceOut);\n } else {\n groupOpts = subplotStackOpts[stackGroup] = {\n // keep track of trace indices for use during stacking calculations\n // this will be filled in during `calc` and used during `crossTraceCalc`\n // so it's OK if we don't recreate it during a non-calc edit\n traceIndices: [],\n // Hold on to the whole set of prior traces\n // First one is most important, so we can clear defaults\n // there if we find explicit values only in later traces.\n // We're only going to *use* the values stored in groupOpts,\n // but for the editor and validate we want things self-consistent\n // The full set of traces is used only to fix `fill` default if\n // we find `orientation: 'h'` beyond the first trace\n traces: [traceOut]\n };\n firstTrace = true;\n }\n var dflts = {\n orientation: traceOut.x && !traceOut.y ? \"h\" : \"v\"\n };\n for (var i = 0; i < perStackAttrs.length; i++) {\n var attr = perStackAttrs[i];\n var attrFound = attr + \"Found\";\n if (!groupOpts[attrFound]) {\n var traceHasAttr = traceIn[attr] !== void 0;\n var isOrientation = attr === \"orientation\";\n if (traceHasAttr || firstTrace) {\n groupOpts[attr] = coerce(attr, dflts[attr]);\n if (isOrientation) {\n groupOpts.fillDflt = groupOpts[attr] === \"h\" ? \"tonextx\" : \"tonexty\";\n }\n if (traceHasAttr) {\n groupOpts[attrFound] = true;\n if (!firstTrace) {\n delete groupOpts.traces[0][attr];\n if (isOrientation) {\n for (var j = 0; j < groupOpts.traces.length - 1; j++) {\n var trace2 = groupOpts.traces[j];\n if (trace2._input.fill !== trace2.fill) {\n trace2.fill = groupOpts.fillDflt;\n }\n }\n }\n }\n }\n }\n }\n }\n return groupOpts;\n }\n };\n }\n });\n\n // src/traces/scatter/marker_defaults.js\n var require_marker_defaults = __commonJS({\n \"src/traces/scatter/marker_defaults.js\"(exports, module) {\n \"use strict\";\n var Color = require_color();\n var hasColorscale = require_helpers().hasColorscale;\n var colorscaleDefaults = require_defaults2();\n var subTypes = require_subtypes();\n module.exports = function markerDefaults(traceIn, traceOut, defaultColor, layout, coerce, opts) {\n var isBubble = subTypes.isBubble(traceIn);\n var lineColor = (traceIn.line || {}).color;\n var defaultMLC;\n opts = opts || {};\n if (lineColor) defaultColor = lineColor;\n coerce(\"marker.symbol\");\n coerce(\"marker.opacity\", isBubble ? 0.7 : 1);\n coerce(\"marker.size\");\n if (!opts.noAngle) {\n coerce(\"marker.angle\");\n if (!opts.noAngleRef) {\n coerce(\"marker.angleref\");\n }\n if (!opts.noStandOff) {\n coerce(\"marker.standoff\");\n }\n }\n coerce(\"marker.color\", defaultColor);\n if (hasColorscale(traceIn, \"marker\")) {\n colorscaleDefaults(traceIn, traceOut, layout, coerce, { prefix: \"marker.\", cLetter: \"c\" });\n }\n if (!opts.noSelect) {\n coerce(\"selected.marker.color\");\n coerce(\"unselected.marker.color\");\n coerce(\"selected.marker.size\");\n coerce(\"unselected.marker.size\");\n }\n if (!opts.noLine) {\n if (lineColor && !Array.isArray(lineColor) && traceOut.marker.color !== lineColor) {\n defaultMLC = lineColor;\n } else if (isBubble) defaultMLC = Color.background;\n else defaultMLC = Color.defaultLine;\n coerce(\"marker.line.color\", defaultMLC);\n if (hasColorscale(traceIn, \"marker.line\")) {\n colorscaleDefaults(traceIn, traceOut, layout, coerce, { prefix: \"marker.line.\", cLetter: \"c\" });\n }\n coerce(\"marker.line.width\", isBubble ? 1 : 0);\n }\n if (isBubble) {\n coerce(\"marker.sizeref\");\n coerce(\"marker.sizemin\");\n coerce(\"marker.sizemode\");\n }\n if (opts.gradient) {\n var gradientType = coerce(\"marker.gradient.type\");\n if (gradientType !== \"none\") {\n coerce(\"marker.gradient.color\");\n }\n }\n };\n }\n });\n\n // src/traces/scatter/line_defaults.js\n var require_line_defaults = __commonJS({\n \"src/traces/scatter/line_defaults.js\"(exports, module) {\n \"use strict\";\n var isArrayOrTypedArray = require_lib().isArrayOrTypedArray;\n var hasColorscale = require_helpers().hasColorscale;\n var colorscaleDefaults = require_defaults2();\n module.exports = function lineDefaults(traceIn, traceOut, defaultColor, layout, coerce, opts) {\n if (!opts) opts = {};\n var markerColor = (traceIn.marker || {}).color;\n if (markerColor && markerColor._inputArray) markerColor = markerColor._inputArray;\n coerce(\"line.color\", defaultColor);\n if (hasColorscale(traceIn, \"line\")) {\n colorscaleDefaults(traceIn, traceOut, layout, coerce, { prefix: \"line.\", cLetter: \"c\" });\n } else {\n var lineColorDflt = (isArrayOrTypedArray(markerColor) ? false : markerColor) || defaultColor;\n coerce(\"line.color\", lineColorDflt);\n }\n coerce(\"line.width\");\n if (!opts.noDash) coerce(\"line.dash\");\n if (opts.backoff) coerce(\"line.backoff\");\n };\n }\n });\n\n // src/traces/scatter/line_shape_defaults.js\n var require_line_shape_defaults = __commonJS({\n \"src/traces/scatter/line_shape_defaults.js\"(exports, module) {\n \"use strict\";\n module.exports = function handleLineShapeDefaults(traceIn, traceOut, coerce) {\n var shape = coerce(\"line.shape\");\n if (shape === \"spline\") coerce(\"line.smoothing\");\n };\n }\n });\n\n // src/traces/scatter/text_defaults.js\n var require_text_defaults = __commonJS({\n \"src/traces/scatter/text_defaults.js\"(exports, module) {\n \"use strict\";\n var Lib = require_lib();\n module.exports = function(traceIn, traceOut, layout, coerce, opts) {\n opts = opts || {};\n coerce(\"textposition\");\n Lib.coerceFont(coerce, \"textfont\", opts.font || layout.font, opts);\n if (!opts.noSelect) {\n coerce(\"selected.textfont.color\");\n coerce(\"unselected.textfont.color\");\n }\n };\n }\n });\n\n // src/traces/scatter/fillcolor_defaults.js\n var require_fillcolor_defaults = __commonJS({\n \"src/traces/scatter/fillcolor_defaults.js\"(exports, module) {\n \"use strict\";\n var Color = require_color();\n var isArrayOrTypedArray = require_lib().isArrayOrTypedArray;\n function averageColors(colorscale) {\n var color = Color.interpolate(colorscale[0][1], colorscale[1][1], 0.5);\n for (var i = 2; i < colorscale.length; i++) {\n var averageColorI = Color.interpolate(colorscale[i - 1][1], colorscale[i][1], 0.5);\n color = Color.interpolate(color, averageColorI, colorscale[i - 1][0] / colorscale[i][0]);\n }\n return color;\n }\n module.exports = function fillColorDefaults(traceIn, traceOut, defaultColor, coerce, opts) {\n if (!opts) opts = {};\n var inheritColorFromMarker = false;\n if (traceOut.marker) {\n var markerColor = traceOut.marker.color;\n var markerLineColor = (traceOut.marker.line || {}).color;\n if (markerColor && !isArrayOrTypedArray(markerColor)) {\n inheritColorFromMarker = markerColor;\n } else if (markerLineColor && !isArrayOrTypedArray(markerLineColor)) {\n inheritColorFromMarker = markerLineColor;\n }\n }\n var averageGradientColor;\n if (opts.moduleHasFillgradient) {\n var gradientOrientation = coerce(\"fillgradient.type\");\n if (gradientOrientation !== \"none\") {\n coerce(\"fillgradient.start\");\n coerce(\"fillgradient.stop\");\n var gradientColorscale = coerce(\"fillgradient.colorscale\");\n if (gradientColorscale) {\n averageGradientColor = averageColors(gradientColorscale);\n }\n }\n }\n coerce(\"fillcolor\", Color.addOpacity(\n (traceOut.line || {}).color || inheritColorFromMarker || averageGradientColor || defaultColor,\n 0.5\n ));\n };\n }\n });\n\n // src/traces/scatter/defaults.js\n var require_defaults8 = __commonJS({\n \"src/traces/scatter/defaults.js\"(exports, module) {\n \"use strict\";\n var Lib = require_lib();\n var Registry = require_registry();\n var attributes = require_attributes12();\n var constants = require_constants8();\n var subTypes = require_subtypes();\n var handleXYDefaults = require_xy_defaults();\n var handlePeriodDefaults = require_period_defaults();\n var handleStackDefaults = require_stack_defaults();\n var handleMarkerDefaults = require_marker_defaults();\n var handleLineDefaults = require_line_defaults();\n var handleLineShapeDefaults = require_line_shape_defaults();\n var handleTextDefaults = require_text_defaults();\n var handleFillColorDefaults = require_fillcolor_defaults();\n var coercePattern = require_lib().coercePattern;\n module.exports = function supplyDefaults(traceIn, traceOut, defaultColor, layout) {\n function coerce(attr, dflt) {\n return Lib.coerce(traceIn, traceOut, attributes, attr, dflt);\n }\n var len = handleXYDefaults(traceIn, traceOut, layout, coerce);\n if (!len) traceOut.visible = false;\n if (!traceOut.visible) return;\n handlePeriodDefaults(traceIn, traceOut, layout, coerce);\n coerce(\"xhoverformat\");\n coerce(\"yhoverformat\");\n coerce(\"zorder\");\n var stackGroupOpts = handleStackDefaults(traceIn, traceOut, layout, coerce);\n if (layout.scattermode === \"group\" && traceOut.orientation === void 0) {\n coerce(\"orientation\", \"v\");\n }\n var defaultMode = !stackGroupOpts && len < constants.PTS_LINESONLY ? \"lines+markers\" : \"lines\";\n coerce(\"text\");\n coerce(\"hovertext\");\n coerce(\"mode\", defaultMode);\n if (subTypes.hasMarkers(traceOut)) {\n handleMarkerDefaults(traceIn, traceOut, defaultColor, layout, coerce, { gradient: true });\n }\n if (subTypes.hasLines(traceOut)) {\n handleLineDefaults(traceIn, traceOut, defaultColor, layout, coerce, { backoff: true });\n handleLineShapeDefaults(traceIn, traceOut, coerce);\n coerce(\"connectgaps\");\n coerce(\"line.simplify\");\n }\n if (subTypes.hasText(traceOut)) {\n coerce(\"texttemplate\");\n handleTextDefaults(traceIn, traceOut, layout, coerce);\n }\n var dfltHoverOn = [];\n if (subTypes.hasMarkers(traceOut) || subTypes.hasText(traceOut)) {\n coerce(\"cliponaxis\");\n coerce(\"marker.maxdisplayed\");\n dfltHoverOn.push(\"points\");\n }\n coerce(\"fill\", stackGroupOpts ? stackGroupOpts.fillDflt : \"none\");\n if (traceOut.fill !== \"none\") {\n handleFillColorDefaults(traceIn, traceOut, defaultColor, coerce, {\n moduleHasFillgradient: true\n });\n if (!subTypes.hasLines(traceOut)) handleLineShapeDefaults(traceIn, traceOut, coerce);\n coercePattern(coerce, \"fillpattern\", traceOut.fillcolor, false);\n }\n var lineColor = (traceOut.line || {}).color;\n var markerColor = (traceOut.marker || {}).color;\n if (traceOut.fill === \"tonext\" || traceOut.fill === \"toself\") {\n dfltHoverOn.push(\"fills\");\n }\n coerce(\"hoveron\", dfltHoverOn.join(\"+\") || \"points\");\n if (traceOut.hoveron !== \"fills\") coerce(\"hovertemplate\");\n var errorBarsSupplyDefaults = Registry.getComponentMethod(\"errorbars\", \"supplyDefaults\");\n errorBarsSupplyDefaults(traceIn, traceOut, lineColor || markerColor || defaultColor, { axis: \"y\" });\n errorBarsSupplyDefaults(traceIn, traceOut, lineColor || markerColor || defaultColor, { axis: \"x\", inherit: \"y\" });\n Lib.coerceSelectionMarkerOpacity(traceOut, coerce);\n };\n }\n });\n\n // src/traces/scatter/grouping_defaults.js\n var require_grouping_defaults = __commonJS({\n \"src/traces/scatter/grouping_defaults.js\"(exports, module) {\n \"use strict\";\n var getAxisGroup = require_constraints().getAxisGroup;\n module.exports = function handleGroupingDefaults(traceIn, traceOut, fullLayout, coerce, barmode) {\n var orientation = traceOut.orientation;\n var posAxId = traceOut[{ v: \"x\", h: \"y\" }[orientation] + \"axis\"];\n var groupId = getAxisGroup(fullLayout, posAxId) + orientation;\n var alignmentOpts = fullLayout._alignmentOpts || {};\n var alignmentgroup = coerce(\"alignmentgroup\");\n var alignmentGroups = alignmentOpts[groupId];\n if (!alignmentGroups) alignmentGroups = alignmentOpts[groupId] = {};\n var alignmentGroupOpts = alignmentGroups[alignmentgroup];\n if (alignmentGroupOpts) {\n alignmentGroupOpts.traces.push(traceOut);\n } else {\n alignmentGroupOpts = alignmentGroups[alignmentgroup] = {\n traces: [traceOut],\n alignmentIndex: Object.keys(alignmentGroups).length,\n offsetGroups: {}\n };\n }\n var offsetgroup = coerce(\"offsetgroup\") || \"\";\n var offsetGroups = alignmentGroupOpts.offsetGroups;\n var offsetGroupOpts = offsetGroups[offsetgroup];\n traceOut._offsetIndex = 0;\n if (barmode !== \"group\" || offsetgroup) {\n if (!offsetGroupOpts) {\n offsetGroupOpts = offsetGroups[offsetgroup] = {\n offsetIndex: Object.keys(offsetGroups).length\n };\n }\n traceOut._offsetIndex = offsetGroupOpts.offsetIndex;\n }\n };\n }\n });\n\n // src/traces/scatter/cross_trace_defaults.js\n var require_cross_trace_defaults2 = __commonJS({\n \"src/traces/scatter/cross_trace_defaults.js\"(exports, module) {\n \"use strict\";\n var Lib = require_lib();\n var handleGroupingDefaults = require_grouping_defaults();\n var attributes = require_attributes12();\n module.exports = function crossTraceDefaults(fullData, fullLayout) {\n var traceIn, traceOut, i;\n var scattermode = fullLayout.scattermode;\n function coerce(attr) {\n return Lib.coerce(traceOut._input, traceOut, attributes, attr);\n }\n if (fullLayout.scattermode === \"group\") {\n for (i = 0; i < fullData.length; i++) {\n traceOut = fullData[i];\n if (traceOut.type === \"scatter\") {\n traceIn = traceOut._input;\n handleGroupingDefaults(traceIn, traceOut, fullLayout, coerce, scattermode);\n }\n }\n }\n for (i = 0; i < fullData.length; i++) {\n var tracei = fullData[i];\n if (tracei.type !== \"scatter\") continue;\n var filli = tracei.fill;\n if (filli === \"none\" || filli === \"toself\") continue;\n tracei.opacity = void 0;\n if (filli === \"tonexty\" || filli === \"tonextx\") {\n for (var j = i - 1; j >= 0; j--) {\n var tracej = fullData[j];\n if (tracej.type === \"scatter\" && tracej.xaxis === tracei.xaxis && tracej.yaxis === tracei.yaxis) {\n tracej.opacity = void 0;\n break;\n }\n }\n }\n }\n };\n }\n });\n\n // src/traces/scatter/layout_defaults.js\n var require_layout_defaults3 = __commonJS({\n \"src/traces/scatter/layout_defaults.js\"(exports, module) {\n \"use strict\";\n var Lib = require_lib();\n var layoutAttributes = require_layout_attributes3();\n module.exports = function(layoutIn, layoutOut) {\n function coerce(attr, dflt) {\n return Lib.coerce(layoutIn, layoutOut, layoutAttributes, attr, dflt);\n }\n var groupBarmode = layoutOut.barmode === \"group\";\n if (layoutOut.scattermode === \"group\") {\n coerce(\"scattergap\", groupBarmode ? layoutOut.bargap : 0.2);\n }\n };\n }\n });\n\n // src/plots/cartesian/align_period.js\n var require_align_period = __commonJS({\n \"src/plots/cartesian/align_period.js\"(exports, module) {\n \"use strict\";\n var isNumeric = require_fast_isnumeric();\n var Lib = require_lib();\n var dateTime2ms = Lib.dateTime2ms;\n var incrementMonth = Lib.incrementMonth;\n var constants = require_numerical();\n var ONEAVGMONTH = constants.ONEAVGMONTH;\n module.exports = function alignPeriod(trace, ax, axLetter, vals) {\n if (ax.type !== \"date\") return { vals };\n var alignment = trace[axLetter + \"periodalignment\"];\n if (!alignment) return { vals };\n var period = trace[axLetter + \"period\"];\n var mPeriod;\n if (isNumeric(period)) {\n period = +period;\n if (period <= 0) return { vals };\n } else if (typeof period === \"string\" && period.charAt(0) === \"M\") {\n var n = +period.substring(1);\n if (n > 0 && Math.round(n) === n) {\n mPeriod = n;\n } else return { vals };\n }\n var calendar = ax.calendar;\n var isStart = \"start\" === alignment;\n var isEnd = \"end\" === alignment;\n var period0 = trace[axLetter + \"period0\"];\n var base = dateTime2ms(period0, calendar) || 0;\n var newVals = [];\n var starts = [];\n var ends = [];\n var len = vals.length;\n for (var i = 0; i < len; i++) {\n var v = vals[i];\n var nEstimated, startTime, endTime;\n if (mPeriod) {\n nEstimated = Math.round((v - base) / (mPeriod * ONEAVGMONTH));\n endTime = incrementMonth(base, mPeriod * nEstimated, calendar);\n while (endTime > v) {\n endTime = incrementMonth(endTime, -mPeriod, calendar);\n }\n while (endTime <= v) {\n endTime = incrementMonth(endTime, mPeriod, calendar);\n }\n startTime = incrementMonth(endTime, -mPeriod, calendar);\n } else {\n nEstimated = Math.round((v - base) / period);\n endTime = base + nEstimated * period;\n while (endTime > v) {\n endTime -= period;\n }\n while (endTime <= v) {\n endTime += period;\n }\n startTime = endTime - period;\n }\n newVals[i] = isStart ? startTime : isEnd ? endTime : (startTime + endTime) / 2;\n starts[i] = startTime;\n ends[i] = endTime;\n }\n return {\n vals: newVals,\n starts,\n ends\n };\n };\n }\n });\n\n // src/traces/scatter/colorscale_calc.js\n var require_colorscale_calc = __commonJS({\n \"src/traces/scatter/colorscale_calc.js\"(exports, module) {\n \"use strict\";\n var hasColorscale = require_helpers().hasColorscale;\n var calcColorscale = require_calc();\n var subTypes = require_subtypes();\n module.exports = function calcMarkerColorscale(gd, trace) {\n if (subTypes.hasLines(trace) && hasColorscale(trace, \"line\")) {\n calcColorscale(gd, trace, {\n vals: trace.line.color,\n containerStr: \"line\",\n cLetter: \"c\"\n });\n }\n if (subTypes.hasMarkers(trace)) {\n if (hasColorscale(trace, \"marker\")) {\n calcColorscale(gd, trace, {\n vals: trace.marker.color,\n containerStr: \"marker\",\n cLetter: \"c\"\n });\n }\n if (hasColorscale(trace, \"marker.line\")) {\n calcColorscale(gd, trace, {\n vals: trace.marker.line.color,\n containerStr: \"marker.line\",\n cLetter: \"c\"\n });\n }\n }\n };\n }\n });\n\n // src/traces/scatter/arrays_to_calcdata.js\n var require_arrays_to_calcdata = __commonJS({\n \"src/traces/scatter/arrays_to_calcdata.js\"(exports, module) {\n \"use strict\";\n var Lib = require_lib();\n module.exports = function arraysToCalcdata(cd, trace) {\n for (var i = 0; i < cd.length; i++) cd[i].i = i;\n Lib.mergeArray(trace.text, cd, \"tx\");\n Lib.mergeArray(trace.texttemplate, cd, \"txt\");\n Lib.mergeArray(trace.hovertext, cd, \"htx\");\n Lib.mergeArray(trace.customdata, cd, \"data\");\n Lib.mergeArray(trace.textposition, cd, \"tp\");\n if (trace.textfont) {\n Lib.mergeArrayCastPositive(trace.textfont.size, cd, \"ts\");\n Lib.mergeArray(trace.textfont.color, cd, \"tc\");\n Lib.mergeArray(trace.textfont.family, cd, \"tf\");\n Lib.mergeArray(trace.textfont.weight, cd, \"tw\");\n Lib.mergeArray(trace.textfont.style, cd, \"ty\");\n Lib.mergeArray(trace.textfont.variant, cd, \"tv\");\n Lib.mergeArray(trace.textfont.textcase, cd, \"tC\");\n Lib.mergeArray(trace.textfont.lineposition, cd, \"tE\");\n Lib.mergeArray(trace.textfont.shadow, cd, \"tS\");\n }\n var marker = trace.marker;\n if (marker) {\n Lib.mergeArrayCastPositive(marker.size, cd, \"ms\");\n Lib.mergeArrayCastPositive(marker.opacity, cd, \"mo\");\n Lib.mergeArray(marker.symbol, cd, \"mx\");\n Lib.mergeArray(marker.angle, cd, \"ma\");\n Lib.mergeArray(marker.standoff, cd, \"mf\");\n Lib.mergeArray(marker.color, cd, \"mc\");\n var markerLine = marker.line;\n if (marker.line) {\n Lib.mergeArray(markerLine.color, cd, \"mlc\");\n Lib.mergeArrayCastPositive(markerLine.width, cd, \"mlw\");\n }\n var markerGradient = marker.gradient;\n if (markerGradient && markerGradient.type !== \"none\") {\n Lib.mergeArray(markerGradient.type, cd, \"mgt\");\n Lib.mergeArray(markerGradient.color, cd, \"mgc\");\n }\n }\n };\n }\n });\n\n // src/traces/scatter/calc_selection.js\n var require_calc_selection = __commonJS({\n \"src/traces/scatter/calc_selection.js\"(exports, module) {\n \"use strict\";\n var Lib = require_lib();\n module.exports = function calcSelection(cd, trace) {\n if (Lib.isArrayOrTypedArray(trace.selectedpoints)) {\n Lib.tagSelected(cd, trace);\n }\n };\n }\n });\n\n // src/traces/scatter/calc.js\n var require_calc3 = __commonJS({\n \"src/traces/scatter/calc.js\"(exports, module) {\n \"use strict\";\n var isNumeric = require_fast_isnumeric();\n var Lib = require_lib();\n var Axes = require_axes();\n var alignPeriod = require_align_period();\n var BADNUM = require_numerical().BADNUM;\n var subTypes = require_subtypes();\n var calcColorscale = require_colorscale_calc();\n var arraysToCalcdata = require_arrays_to_calcdata();\n var calcSelection = require_calc_selection();\n function calc(gd, trace) {\n var fullLayout = gd._fullLayout;\n var xa = trace._xA = Axes.getFromId(gd, trace.xaxis || \"x\", \"x\");\n var ya = trace._yA = Axes.getFromId(gd, trace.yaxis || \"y\", \"y\");\n var origX = xa.makeCalcdata(trace, \"x\");\n var origY = ya.makeCalcdata(trace, \"y\");\n var xObj = alignPeriod(trace, xa, \"x\", origX);\n var yObj = alignPeriod(trace, ya, \"y\", origY);\n var x = xObj.vals;\n var y = yObj.vals;\n var serieslen = trace._length;\n var cd = new Array(serieslen);\n var ids = trace.ids;\n var stackGroupOpts = getStackOpts(trace, fullLayout, xa, ya);\n var interpolateGaps = false;\n var isV, i, j, k, interpolate, vali;\n setFirstScatter(fullLayout, trace);\n var xAttr = \"x\";\n var yAttr = \"y\";\n var posAttr;\n if (stackGroupOpts) {\n Lib.pushUnique(stackGroupOpts.traceIndices, trace.index);\n isV = stackGroupOpts.orientation === \"v\";\n if (isV) {\n yAttr = \"s\";\n posAttr = \"x\";\n } else {\n xAttr = \"s\";\n posAttr = \"y\";\n }\n interpolate = stackGroupOpts.stackgaps === \"interpolate\";\n } else {\n var ppad = calcMarkerSize(trace, serieslen);\n calcAxisExpansion(gd, trace, xa, ya, x, y, ppad);\n }\n var hasPeriodX = !!trace.xperiodalignment;\n var hasPeriodY = !!trace.yperiodalignment;\n for (i = 0; i < serieslen; i++) {\n var cdi = cd[i] = {};\n var xValid = isNumeric(x[i]);\n var yValid = isNumeric(y[i]);\n if (xValid && yValid) {\n cdi[xAttr] = x[i];\n cdi[yAttr] = y[i];\n if (hasPeriodX) {\n cdi.orig_x = origX[i];\n cdi.xEnd = xObj.ends[i];\n cdi.xStart = xObj.starts[i];\n }\n if (hasPeriodY) {\n cdi.orig_y = origY[i];\n cdi.yEnd = yObj.ends[i];\n cdi.yStart = yObj.starts[i];\n }\n } else if (stackGroupOpts && (isV ? xValid : yValid)) {\n cdi[posAttr] = isV ? x[i] : y[i];\n cdi.gap = true;\n if (interpolate) {\n cdi.s = BADNUM;\n interpolateGaps = true;\n } else {\n cdi.s = 0;\n }\n } else {\n cdi[xAttr] = cdi[yAttr] = BADNUM;\n }\n if (ids) {\n cdi.id = String(ids[i]);\n }\n }\n arraysToCalcdata(cd, trace);\n calcColorscale(gd, trace);\n calcSelection(cd, trace);\n if (stackGroupOpts) {\n i = 0;\n while (i < cd.length) {\n if (cd[i][posAttr] === BADNUM) {\n cd.splice(i, 1);\n } else i++;\n }\n Lib.sort(cd, function(a, b) {\n return a[posAttr] - b[posAttr] || a.i - b.i;\n });\n if (interpolateGaps) {\n i = 0;\n while (i < cd.length - 1 && cd[i].gap) {\n i++;\n }\n vali = cd[i].s;\n if (!vali) vali = cd[i].s = 0;\n for (j = 0; j < i; j++) {\n cd[j].s = vali;\n }\n k = cd.length - 1;\n while (k > i && cd[k].gap) {\n k--;\n }\n vali = cd[k].s;\n for (j = cd.length - 1; j > k; j--) {\n cd[j].s = vali;\n }\n while (i < k) {\n i++;\n if (cd[i].gap) {\n j = i + 1;\n while (cd[j].gap) {\n j++;\n }\n var pos0 = cd[i - 1][posAttr];\n var size0 = cd[i - 1].s;\n var m = (cd[j].s - size0) / (cd[j][posAttr] - pos0);\n while (i < j) {\n cd[i].s = size0 + (cd[i][posAttr] - pos0) * m;\n i++;\n }\n }\n }\n }\n }\n return cd;\n }\n function calcAxisExpansion(gd, trace, xa, ya, x, y, ppad) {\n var serieslen = trace._length;\n var fullLayout = gd._fullLayout;\n var xId = xa._id;\n var yId = ya._id;\n var firstScatter = fullLayout._firstScatter[firstScatterGroup(trace)] === trace.uid;\n var stackOrientation = (getStackOpts(trace, fullLayout, xa, ya) || {}).orientation;\n var fill = trace.fill;\n xa._minDtick = 0;\n ya._minDtick = 0;\n var xOptions = { padded: true };\n var yOptions = { padded: true };\n if (ppad) {\n xOptions.ppad = yOptions.ppad = ppad;\n }\n var openEnded = serieslen < 2 || x[0] !== x[serieslen - 1] || y[0] !== y[serieslen - 1];\n if (openEnded && (fill === \"tozerox\" || fill === \"tonextx\" && (firstScatter || stackOrientation === \"h\"))) {\n xOptions.tozero = true;\n } else if (!(trace.error_y || {}).visible && // if no error bars, markers or text, or fill to y=0 remove x padding\n (fill === \"tonexty\" || fill === \"tozeroy\" || !subTypes.hasMarkers(trace) && !subTypes.hasText(trace))) {\n xOptions.padded = false;\n xOptions.ppad = 0;\n }\n if (openEnded && (fill === \"tozeroy\" || fill === \"tonexty\" && (firstScatter || stackOrientation === \"v\"))) {\n yOptions.tozero = true;\n } else if (fill === \"tonextx\" || fill === \"tozerox\") {\n yOptions.padded = false;\n }\n if (xId) trace._extremes[xId] = Axes.findExtremes(xa, x, xOptions);\n if (yId) trace._extremes[yId] = Axes.findExtremes(ya, y, yOptions);\n }\n function calcMarkerSize(trace, serieslen) {\n if (!subTypes.hasMarkers(trace)) return;\n var marker = trace.marker;\n var sizeref = 1.6 * (trace.marker.sizeref || 1);\n var markerTrans;\n if (trace.marker.sizemode === \"area\") {\n markerTrans = function(v) {\n return Math.max(Math.sqrt((v || 0) / sizeref), 3);\n };\n } else {\n markerTrans = function(v) {\n return Math.max((v || 0) / sizeref, 3);\n };\n }\n if (Lib.isArrayOrTypedArray(marker.size)) {\n var ax = { type: \"linear\" };\n Axes.setConvert(ax);\n var s = ax.makeCalcdata(trace.marker, \"size\");\n var sizeOut = new Array(serieslen);\n for (var i = 0; i < serieslen; i++) {\n sizeOut[i] = markerTrans(s[i]);\n }\n return sizeOut;\n } else {\n return markerTrans(marker.size);\n }\n }\n function setFirstScatter(fullLayout, trace) {\n var group = firstScatterGroup(trace);\n var firstScatter = fullLayout._firstScatter;\n if (!firstScatter[group]) firstScatter[group] = trace.uid;\n }\n function firstScatterGroup(trace) {\n var stackGroup = trace.stackgroup;\n return trace.xaxis + trace.yaxis + trace.type + (stackGroup ? \"-\" + stackGroup : \"\");\n }\n function getStackOpts(trace, fullLayout, xa, ya) {\n var stackGroup = trace.stackgroup;\n if (!stackGroup) return;\n var stackOpts = fullLayout._scatterStackOpts[xa._id + ya._id][stackGroup];\n var stackAx = stackOpts.orientation === \"v\" ? ya : xa;\n if (stackAx.type === \"linear\" || stackAx.type === \"log\") return stackOpts;\n }\n module.exports = {\n calc,\n calcMarkerSize,\n calcAxisExpansion,\n setFirstScatter,\n getStackOpts\n };\n }\n });\n\n // src/traces/bar/sieve.js\n var require_sieve = __commonJS({\n \"src/traces/bar/sieve.js\"(exports, module) {\n \"use strict\";\n module.exports = Sieve;\n var distinctVals = require_lib().distinctVals;\n function Sieve(traces, opts) {\n this.traces = traces;\n this.sepNegVal = opts.sepNegVal;\n this.overlapNoMerge = opts.overlapNoMerge;\n var width1 = Infinity;\n var axLetter = opts.posAxis._id.charAt(0);\n var positions = [];\n for (var i = 0; i < traces.length; i++) {\n var trace = traces[i];\n for (var j = 0; j < trace.length; j++) {\n var bar = trace[j];\n var pos = bar.p;\n if (pos === void 0) {\n pos = bar[axLetter];\n }\n if (pos !== void 0) positions.push(pos);\n }\n if (trace[0] && trace[0].width1) {\n width1 = Math.min(trace[0].width1, width1);\n }\n }\n this.positions = positions;\n var dv = distinctVals(positions);\n this.distinctPositions = dv.vals;\n if (dv.vals.length === 1 && width1 !== Infinity) this.minDiff = width1;\n else this.minDiff = Math.min(dv.minDiff, width1);\n var type = (opts.posAxis || {}).type;\n if (type === \"category\" || type === \"multicategory\") {\n this.minDiff = 1;\n }\n this.binWidth = this.minDiff;\n this.bins = {};\n }\n Sieve.prototype.put = function put(position, group, value) {\n var label = this.getLabel(position, group, value);\n var oldValue = this.bins[label] || 0;\n this.bins[label] = oldValue + value;\n return oldValue;\n };\n Sieve.prototype.get = function get(position, group, value) {\n var label = this.getLabel(position, group, value);\n return this.bins[label] || 0;\n };\n Sieve.prototype.getLabel = function getLabel(position, group, value) {\n var prefix = value < 0 && this.sepNegVal ? \"v\" : \"^\";\n var label = this.overlapNoMerge ? position : Math.round(position / this.binWidth);\n return prefix + label + \"g\" + group;\n };\n }\n });\n\n // src/traces/bar/cross_trace_calc.js\n var require_cross_trace_calc = __commonJS({\n \"src/traces/bar/cross_trace_calc.js\"(exports, module) {\n \"use strict\";\n var isNumeric = require_fast_isnumeric();\n var isArrayOrTypedArray = require_lib().isArrayOrTypedArray;\n var BADNUM = require_numerical().BADNUM;\n var Registry = require_registry();\n var Axes = require_axes();\n var getAxisGroup = require_constraints().getAxisGroup;\n var Sieve = require_sieve();\n function crossTraceCalc(gd, plotinfo) {\n var xa = plotinfo.xaxis;\n var ya = plotinfo.yaxis;\n var fullLayout = gd._fullLayout;\n var fullTraces = gd._fullData;\n var calcTraces = gd.calcdata;\n var calcTracesHorz = [];\n var calcTracesVert = [];\n for (var i = 0; i < fullTraces.length; i++) {\n var fullTrace = fullTraces[i];\n if (fullTrace.visible === true && Registry.traceIs(fullTrace, \"bar\") && fullTrace.xaxis === xa._id && fullTrace.yaxis === ya._id) {\n if (fullTrace.orientation === \"h\") {\n calcTracesHorz.push(calcTraces[i]);\n } else {\n calcTracesVert.push(calcTraces[i]);\n }\n if (fullTrace._computePh) {\n var cd = gd.calcdata[i];\n for (var j = 0; j < cd.length; j++) {\n if (typeof cd[j].ph0 === \"function\") cd[j].ph0 = cd[j].ph0();\n if (typeof cd[j].ph1 === \"function\") cd[j].ph1 = cd[j].ph1();\n }\n }\n }\n }\n var opts = {\n xCat: xa.type === \"category\" || xa.type === \"multicategory\",\n yCat: ya.type === \"category\" || ya.type === \"multicategory\",\n mode: fullLayout.barmode,\n norm: fullLayout.barnorm,\n gap: fullLayout.bargap,\n groupgap: fullLayout.bargroupgap\n };\n setGroupPositions(gd, xa, ya, calcTracesVert, opts);\n setGroupPositions(gd, ya, xa, calcTracesHorz, opts);\n }\n function setGroupPositions(gd, pa, sa, calcTraces, opts) {\n if (!calcTraces.length) return;\n var excluded;\n var included;\n var i, calcTrace, fullTrace;\n initBase(sa, calcTraces);\n switch (opts.mode) {\n case \"overlay\":\n setGroupPositionsInOverlayMode(gd, pa, sa, calcTraces, opts);\n break;\n case \"group\":\n excluded = [];\n included = [];\n for (i = 0; i < calcTraces.length; i++) {\n calcTrace = calcTraces[i];\n fullTrace = calcTrace[0].trace;\n if (fullTrace.offset === void 0) included.push(calcTrace);\n else excluded.push(calcTrace);\n }\n if (included.length) {\n setGroupPositionsInGroupMode(gd, pa, sa, included, opts);\n }\n if (excluded.length) {\n setGroupPositionsInOverlayMode(gd, pa, sa, excluded, opts);\n }\n break;\n case \"stack\":\n case \"relative\":\n excluded = [];\n included = [];\n for (i = 0; i < calcTraces.length; i++) {\n calcTrace = calcTraces[i];\n fullTrace = calcTrace[0].trace;\n if (fullTrace.base === void 0) included.push(calcTrace);\n else excluded.push(calcTrace);\n }\n standardizeCornerradius(included);\n if (included.length) {\n setGroupPositionsInStackOrRelativeMode(gd, pa, sa, included, opts);\n }\n if (excluded.length) {\n setGroupPositionsInOverlayMode(gd, pa, sa, excluded, opts);\n }\n break;\n }\n setCornerradius(calcTraces);\n collectExtents(calcTraces, pa);\n }\n function setCornerradius(calcTraces) {\n var i, calcTrace, fullTrace, t, cr, crValue, crForm;\n for (i = 0; i < calcTraces.length; i++) {\n calcTrace = calcTraces[i];\n fullTrace = calcTrace[0].trace;\n t = calcTrace[0].t;\n if (t.cornerradiusvalue === void 0) {\n cr = fullTrace.marker ? fullTrace.marker.cornerradius : void 0;\n if (cr !== void 0) {\n crValue = isNumeric(cr) ? +cr : +cr.slice(0, -1);\n crForm = isNumeric(cr) ? \"px\" : \"%\";\n t.cornerradiusvalue = crValue;\n t.cornerradiusform = crForm;\n }\n }\n }\n }\n function standardizeCornerradius(calcTraces) {\n if (calcTraces.length < 2) return;\n var i, calcTrace, fullTrace, t;\n var cr, crValue, crForm;\n for (i = 0; i < calcTraces.length; i++) {\n calcTrace = calcTraces[i];\n fullTrace = calcTrace[0].trace;\n cr = fullTrace.marker ? fullTrace.marker.cornerradius : void 0;\n if (cr !== void 0) break;\n }\n if (cr !== void 0) {\n crValue = isNumeric(cr) ? +cr : +cr.slice(0, -1);\n crForm = isNumeric(cr) ? \"px\" : \"%\";\n for (i = 0; i < calcTraces.length; i++) {\n calcTrace = calcTraces[i];\n t = calcTrace[0].t;\n t.cornerradiusvalue = crValue;\n t.cornerradiusform = crForm;\n }\n }\n }\n function initBase(sa, calcTraces) {\n var i, j;\n for (i = 0; i < calcTraces.length; i++) {\n var cd = calcTraces[i];\n var trace = cd[0].trace;\n var base = trace.type === \"funnel\" ? trace._base : trace.base;\n var b;\n var scalendar = trace.orientation === \"h\" ? trace.xcalendar : trace.ycalendar;\n var d2c = sa.type === \"category\" || sa.type === \"multicategory\" ? function() {\n return null;\n } : sa.d2c;\n if (isArrayOrTypedArray(base)) {\n for (j = 0; j < Math.min(base.length, cd.length); j++) {\n b = d2c(base[j], 0, scalendar);\n if (isNumeric(b)) {\n cd[j].b = +b;\n cd[j].hasB = 1;\n } else cd[j].b = 0;\n }\n for (; j < cd.length; j++) {\n cd[j].b = 0;\n }\n } else {\n b = d2c(base, 0, scalendar);\n var hasBase = isNumeric(b);\n b = hasBase ? b : 0;\n for (j = 0; j < cd.length; j++) {\n cd[j].b = b;\n if (hasBase) cd[j].hasB = 1;\n }\n }\n }\n }\n function setGroupPositionsInOverlayMode(gd, pa, sa, calcTraces, opts) {\n for (var i = 0; i < calcTraces.length; i++) {\n var calcTrace = calcTraces[i];\n var sieve = new Sieve([calcTrace], {\n posAxis: pa,\n sepNegVal: false,\n overlapNoMerge: !opts.norm\n });\n setOffsetAndWidth(gd, pa, sieve, opts);\n if (opts.norm) {\n sieveBars(sieve);\n normalizeBars(sa, sieve, opts);\n } else {\n setBaseAndTop(sa, sieve);\n }\n }\n }\n function setGroupPositionsInGroupMode(gd, pa, sa, calcTraces, opts) {\n var sieve = new Sieve(calcTraces, {\n posAxis: pa,\n sepNegVal: false,\n overlapNoMerge: !opts.norm\n });\n setOffsetAndWidth(gd, pa, sieve, opts);\n unhideBarsWithinTrace(sieve, pa);\n if (opts.norm) {\n sieveBars(sieve);\n normalizeBars(sa, sieve, opts);\n } else {\n setBaseAndTop(sa, sieve);\n }\n }\n function setGroupPositionsInStackOrRelativeMode(gd, pa, sa, calcTraces, opts) {\n var sieve = new Sieve(calcTraces, {\n posAxis: pa,\n sepNegVal: opts.mode === \"relative\",\n overlapNoMerge: !(opts.norm || opts.mode === \"stack\" || opts.mode === \"relative\")\n });\n setOffsetAndWidth(gd, pa, sieve, opts);\n stackBars(sa, sieve, opts);\n for (var i = 0; i < calcTraces.length; i++) {\n var calcTrace = calcTraces[i];\n var offsetIndex = calcTrace[0].t.offsetindex;\n for (var j = 0; j < calcTrace.length; j++) {\n var bar = calcTrace[j];\n if (bar.s !== BADNUM) {\n var isOutmostBar = bar.b + bar.s === sieve.get(bar.p, offsetIndex, bar.s);\n if (isOutmostBar) bar._outmost = true;\n }\n }\n }\n if (opts.norm) normalizeBars(sa, sieve, opts);\n }\n function setOffsetAndWidth(gd, pa, sieve, opts) {\n var fullLayout = gd._fullLayout;\n var positions = sieve.positions;\n var distinctPositions = sieve.distinctPositions;\n var minDiff = sieve.minDiff;\n var calcTraces = sieve.traces;\n var nTraces = calcTraces.length;\n var overlap = positions.length !== distinctPositions.length;\n var barGroupWidth = minDiff * (1 - opts.gap);\n var barWidthPlusGap;\n var barWidth;\n var offsetFromCenter;\n var alignmentGroups;\n if (pa._id === \"angularaxis\") {\n barWidthPlusGap = barGroupWidth;\n barWidth = barWidthPlusGap * (1 - (opts.groupgap || 0));\n offsetFromCenter = -barWidth / 2;\n } else {\n var groupId = getAxisGroup(fullLayout, pa._id) + calcTraces[0][0].trace.orientation;\n alignmentGroups = fullLayout._alignmentOpts[groupId] || {};\n }\n for (var i = 0; i < nTraces; i++) {\n var calcTrace = calcTraces[i];\n var trace = calcTrace[0].trace;\n if (pa._id !== \"angularaxis\") {\n var alignmentGroupOpts = alignmentGroups[trace.alignmentgroup] || {};\n var nOffsetGroups = Object.keys(alignmentGroupOpts.offsetGroups || {}).length;\n if (nOffsetGroups) {\n barWidthPlusGap = barGroupWidth / nOffsetGroups;\n } else {\n barWidthPlusGap = overlap ? barGroupWidth / nTraces : barGroupWidth;\n }\n barWidth = barWidthPlusGap * (1 - (opts.groupgap || 0));\n if (nOffsetGroups) {\n offsetFromCenter = ((2 * trace._offsetIndex + 1 - nOffsetGroups) * barWidthPlusGap - barWidth) / 2;\n } else {\n offsetFromCenter = overlap ? ((2 * i + 1 - nTraces) * barWidthPlusGap - barWidth) / 2 : -barWidth / 2;\n }\n }\n var t = calcTrace[0].t;\n t.barwidth = barWidth;\n t.offsetindex = trace._offsetIndex || 0;\n t.poffset = offsetFromCenter;\n t.bargroupwidth = barGroupWidth;\n t.bardelta = minDiff;\n }\n sieve.binWidth = calcTraces[0][0].t.barwidth / 100;\n applyAttributes(sieve);\n setBarCenterAndWidth(pa, sieve);\n if (pa._id === \"angularaxis\") {\n updatePositionAxis(pa, sieve);\n } else {\n updatePositionAxis(pa, sieve, overlap);\n }\n }\n function applyAttributes(sieve) {\n var calcTraces = sieve.traces;\n var i, j;\n for (i = 0; i < calcTraces.length; i++) {\n var calcTrace = calcTraces[i];\n var calcTrace0 = calcTrace[0];\n var fullTrace = calcTrace0.trace;\n var t = calcTrace0.t;\n var offset = fullTrace._offset || fullTrace.offset;\n var initialPoffset = t.poffset;\n var newPoffset;\n if (isArrayOrTypedArray(offset)) {\n newPoffset = Array.prototype.slice.call(offset, 0, calcTrace.length);\n for (j = 0; j < newPoffset.length; j++) {\n if (!isNumeric(newPoffset[j])) {\n newPoffset[j] = initialPoffset;\n }\n }\n for (j = newPoffset.length; j < calcTrace.length; j++) {\n newPoffset.push(initialPoffset);\n }\n t.poffset = newPoffset;\n } else if (offset !== void 0) {\n t.poffset = offset;\n }\n var width = fullTrace._width || fullTrace.width;\n var initialBarwidth = t.barwidth;\n if (isArrayOrTypedArray(width)) {\n var newBarwidth = Array.prototype.slice.call(width, 0, calcTrace.length);\n for (j = 0; j < newBarwidth.length; j++) {\n if (!isNumeric(newBarwidth[j])) newBarwidth[j] = initialBarwidth;\n }\n for (j = newBarwidth.length; j < calcTrace.length; j++) {\n newBarwidth.push(initialBarwidth);\n }\n t.barwidth = newBarwidth;\n if (offset === void 0) {\n newPoffset = [];\n for (j = 0; j < calcTrace.length; j++) {\n newPoffset.push(\n initialPoffset + (initialBarwidth - newBarwidth[j]) / 2\n );\n }\n t.poffset = newPoffset;\n }\n } else if (width !== void 0) {\n t.barwidth = width;\n if (offset === void 0) {\n t.poffset = initialPoffset + (initialBarwidth - width) / 2;\n }\n }\n }\n }\n function setBarCenterAndWidth(pa, sieve) {\n var calcTraces = sieve.traces;\n var pLetter = getAxisLetter(pa);\n for (var i = 0; i < calcTraces.length; i++) {\n var calcTrace = calcTraces[i];\n var t = calcTrace[0].t;\n var poffset = t.poffset;\n var poffsetIsArray = isArrayOrTypedArray(poffset);\n var barwidth = t.barwidth;\n var barwidthIsArray = isArrayOrTypedArray(barwidth);\n for (var j = 0; j < calcTrace.length; j++) {\n var calcBar = calcTrace[j];\n var width = calcBar.w = barwidthIsArray ? barwidth[j] : barwidth;\n if (calcBar.p === void 0) {\n calcBar.p = calcBar[pLetter];\n calcBar[\"orig_\" + pLetter] = calcBar[pLetter];\n }\n var delta = (poffsetIsArray ? poffset[j] : poffset) + width / 2;\n calcBar[pLetter] = calcBar.p + delta;\n }\n }\n }\n function updatePositionAxis(pa, sieve, allowMinDtick) {\n var calcTraces = sieve.traces;\n var minDiff = sieve.minDiff;\n var vpad = minDiff / 2;\n Axes.minDtick(pa, sieve.minDiff, sieve.distinctPositions[0], allowMinDtick);\n for (var i = 0; i < calcTraces.length; i++) {\n var calcTrace = calcTraces[i];\n var calcTrace0 = calcTrace[0];\n var fullTrace = calcTrace0.trace;\n var pts = [];\n var bar, l, r, j;\n for (j = 0; j < calcTrace.length; j++) {\n bar = calcTrace[j];\n l = bar.p - vpad;\n r = bar.p + vpad;\n pts.push(l, r);\n }\n if (fullTrace.width || fullTrace.offset) {\n var t = calcTrace0.t;\n var poffset = t.poffset;\n var barwidth = t.barwidth;\n var poffsetIsArray = isArrayOrTypedArray(poffset);\n var barwidthIsArray = isArrayOrTypedArray(barwidth);\n for (j = 0; j < calcTrace.length; j++) {\n bar = calcTrace[j];\n var calcBarOffset = poffsetIsArray ? poffset[j] : poffset;\n var calcBarWidth = barwidthIsArray ? barwidth[j] : barwidth;\n l = bar.p + calcBarOffset;\n r = l + calcBarWidth;\n pts.push(l, r);\n }\n }\n fullTrace._extremes[pa._id] = Axes.findExtremes(pa, pts, { padded: false });\n }\n }\n function setBaseAndTop(sa, sieve) {\n var calcTraces = sieve.traces;\n var sLetter = getAxisLetter(sa);\n for (var i = 0; i < calcTraces.length; i++) {\n var calcTrace = calcTraces[i];\n var fullTrace = calcTrace[0].trace;\n var isScatter = fullTrace.type === \"scatter\";\n var isVertical = fullTrace.orientation === \"v\";\n var pts = [];\n var tozero = false;\n for (var j = 0; j < calcTrace.length; j++) {\n var bar = calcTrace[j];\n var base = isScatter ? 0 : bar.b;\n var top = isScatter ? isVertical ? bar.y : bar.x : base + bar.s;\n bar[sLetter] = top;\n pts.push(top);\n if (bar.hasB) pts.push(base);\n if (!bar.hasB || !bar.b) {\n tozero = true;\n }\n }\n fullTrace._extremes[sa._id] = Axes.findExtremes(sa, pts, {\n tozero,\n padded: true\n });\n }\n }\n function stackBars(sa, sieve, opts) {\n var sLetter = getAxisLetter(sa);\n var calcTraces = sieve.traces;\n var calcTrace;\n var fullTrace;\n var isFunnel;\n var i, j;\n var bar;\n var offsetIndex;\n for (i = 0; i < calcTraces.length; i++) {\n calcTrace = calcTraces[i];\n fullTrace = calcTrace[0].trace;\n if (fullTrace.type === \"funnel\") {\n offsetIndex = calcTrace[0].t.offsetindex;\n for (j = 0; j < calcTrace.length; j++) {\n bar = calcTrace[j];\n if (bar.s !== BADNUM) {\n sieve.put(bar.p, offsetIndex, -0.5 * bar.s);\n }\n }\n }\n }\n for (i = 0; i < calcTraces.length; i++) {\n calcTrace = calcTraces[i];\n fullTrace = calcTrace[0].trace;\n isFunnel = fullTrace.type === \"funnel\";\n offsetIndex = fullTrace.type === \"barpolar\" ? 0 : calcTrace[0].t.offsetindex;\n var pts = [];\n for (j = 0; j < calcTrace.length; j++) {\n bar = calcTrace[j];\n if (bar.s !== BADNUM) {\n var value;\n if (isFunnel) {\n value = bar.s;\n } else {\n value = bar.s + bar.b;\n }\n var base = sieve.put(bar.p, offsetIndex, value);\n var top = base + value;\n bar.b = base;\n bar[sLetter] = top;\n if (!opts.norm) {\n pts.push(top);\n if (bar.hasB) {\n pts.push(base);\n }\n }\n }\n }\n if (!opts.norm) {\n fullTrace._extremes[sa._id] = Axes.findExtremes(sa, pts, {\n // N.B. we don't stack base with 'base',\n // so set tozero:true always!\n tozero: true,\n padded: true\n });\n }\n }\n }\n function sieveBars(sieve) {\n var calcTraces = sieve.traces;\n for (var i = 0; i < calcTraces.length; i++) {\n var calcTrace = calcTraces[i];\n var offsetIndex = calcTrace[0].t.offsetindex;\n for (var j = 0; j < calcTrace.length; j++) {\n var bar = calcTrace[j];\n if (bar.s !== BADNUM) {\n sieve.put(bar.p, offsetIndex, bar.b + bar.s);\n }\n }\n }\n }\n function unhideBarsWithinTrace(sieve, pa) {\n var calcTraces = sieve.traces;\n for (var i = 0; i < calcTraces.length; i++) {\n var calcTrace = calcTraces[i];\n var fullTrace = calcTrace[0].trace;\n var offsetIndex = calcTrace[0].t.offsetindex;\n if (fullTrace.base === void 0) {\n var inTraceSieve = new Sieve([calcTrace], {\n posAxis: pa,\n sepNegVal: true,\n overlapNoMerge: true\n });\n for (var j = 0; j < calcTrace.length; j++) {\n var bar = calcTrace[j];\n if (bar.p !== BADNUM) {\n var base = inTraceSieve.put(bar.p, offsetIndex, bar.b + bar.s);\n if (base) bar.b = base;\n }\n }\n }\n }\n }\n function normalizeBars(sa, sieve, opts) {\n var calcTraces = sieve.traces;\n var sLetter = getAxisLetter(sa);\n var sTop = opts.norm === \"fraction\" ? 1 : 100;\n var sTiny = sTop / 1e9;\n var sMin = sa.l2c(sa.c2l(0));\n var sMax = opts.mode === \"stack\" ? sTop : sMin;\n function needsPadding(v) {\n return isNumeric(sa.c2l(v)) && (v < sMin - sTiny || v > sMax + sTiny || !isNumeric(sMin));\n }\n for (var i = 0; i < calcTraces.length; i++) {\n var calcTrace = calcTraces[i];\n var offsetIndex = calcTrace[0].t.offsetindex;\n var fullTrace = calcTrace[0].trace;\n var pts = [];\n var tozero = false;\n var padded = false;\n for (var j = 0; j < calcTrace.length; j++) {\n var bar = calcTrace[j];\n if (bar.s !== BADNUM) {\n var scale = Math.abs(sTop / sieve.get(bar.p, offsetIndex, bar.s));\n bar.b *= scale;\n bar.s *= scale;\n var base = bar.b;\n var top = base + bar.s;\n bar[sLetter] = top;\n pts.push(top);\n padded = padded || needsPadding(top);\n if (bar.hasB) {\n pts.push(base);\n padded = padded || needsPadding(base);\n }\n if (!bar.hasB || !bar.b) {\n tozero = true;\n }\n }\n }\n fullTrace._extremes[sa._id] = Axes.findExtremes(sa, pts, {\n tozero,\n padded\n });\n }\n }\n function setHelperValuesForRoundedCorners(calcTraces, sMinByPos, sMaxByPos, pa) {\n var pLetter = getAxisLetter(pa);\n for (var i = 0; i < calcTraces.length; i++) {\n var calcTrace = calcTraces[i];\n for (var j = 0; j < calcTrace.length; j++) {\n var bar = calcTrace[j];\n var pos = bar[pLetter];\n bar._sMin = sMinByPos[pos];\n bar._sMax = sMaxByPos[pos];\n }\n }\n }\n function collectExtents(calcTraces, pa) {\n var pLetter = getAxisLetter(pa);\n var extents = {};\n var i, j, cd;\n var pMin = Infinity;\n var pMax = -Infinity;\n for (i = 0; i < calcTraces.length; i++) {\n cd = calcTraces[i];\n for (j = 0; j < cd.length; j++) {\n var p = cd[j].p;\n if (isNumeric(p)) {\n pMin = Math.min(pMin, p);\n pMax = Math.max(pMax, p);\n }\n }\n }\n var roundFactor = 1e4 / (pMax - pMin);\n var round = extents.round = function(p2) {\n return String(Math.round(roundFactor * (p2 - pMin)));\n };\n var sMinByPos = {};\n var sMaxByPos = {};\n var anyTraceHasCornerradius = calcTraces.some(function(x) {\n var trace = x[0].trace;\n return \"marker\" in trace && trace.marker.cornerradius;\n });\n for (i = 0; i < calcTraces.length; i++) {\n cd = calcTraces[i];\n cd[0].t.extents = extents;\n var poffset = cd[0].t.poffset;\n var poffsetIsArray = isArrayOrTypedArray(poffset);\n for (j = 0; j < cd.length; j++) {\n var di = cd[j];\n var p0 = di[pLetter] - di.w / 2;\n if (isNumeric(p0)) {\n var p1 = di[pLetter] + di.w / 2;\n var pVal = round(di.p);\n if (extents[pVal]) {\n extents[pVal] = [Math.min(p0, extents[pVal][0]), Math.max(p1, extents[pVal][1])];\n } else {\n extents[pVal] = [p0, p1];\n }\n }\n di.p0 = di.p + (poffsetIsArray ? poffset[j] : poffset);\n di.p1 = di.p0 + di.w;\n di.s0 = di.b;\n di.s1 = di.s0 + di.s;\n if (anyTraceHasCornerradius) {\n var sMin = Math.min(di.s0, di.s1) || 0;\n var sMax = Math.max(di.s0, di.s1) || 0;\n var pos = di[pLetter];\n sMinByPos[pos] = pos in sMinByPos ? Math.min(sMinByPos[pos], sMin) : sMin;\n sMaxByPos[pos] = pos in sMaxByPos ? Math.max(sMaxByPos[pos], sMax) : sMax;\n }\n }\n }\n if (anyTraceHasCornerradius) {\n setHelperValuesForRoundedCorners(calcTraces, sMinByPos, sMaxByPos, pa);\n }\n }\n function getAxisLetter(ax) {\n return ax._id.charAt(0);\n }\n module.exports = {\n crossTraceCalc,\n setGroupPositions\n };\n }\n });\n\n // src/traces/scatter/cross_trace_calc.js\n var require_cross_trace_calc2 = __commonJS({\n \"src/traces/scatter/cross_trace_calc.js\"(exports, module) {\n \"use strict\";\n var calc = require_calc3();\n var setGroupPositions = require_cross_trace_calc().setGroupPositions;\n function groupCrossTraceCalc(gd, plotinfo) {\n var xa = plotinfo.xaxis;\n var ya = plotinfo.yaxis;\n var fullLayout = gd._fullLayout;\n var fullTraces = gd._fullData;\n var calcTraces = gd.calcdata;\n var calcTracesHorz = [];\n var calcTracesVert = [];\n for (var i = 0; i < fullTraces.length; i++) {\n var fullTrace = fullTraces[i];\n if (fullTrace.visible === true && fullTrace.type === \"scatter\" && fullTrace.xaxis === xa._id && fullTrace.yaxis === ya._id) {\n if (fullTrace.orientation === \"h\") {\n calcTracesHorz.push(calcTraces[i]);\n } else if (fullTrace.orientation === \"v\") {\n calcTracesVert.push(calcTraces[i]);\n }\n }\n }\n var opts = {\n mode: fullLayout.scattermode,\n gap: fullLayout.scattergap\n };\n setGroupPositions(gd, xa, ya, calcTracesVert, opts);\n setGroupPositions(gd, ya, xa, calcTracesHorz, opts);\n }\n module.exports = function crossTraceCalc(gd, plotinfo) {\n if (gd._fullLayout.scattermode === \"group\") {\n groupCrossTraceCalc(gd, plotinfo);\n }\n var xa = plotinfo.xaxis;\n var ya = plotinfo.yaxis;\n var subplot = xa._id + ya._id;\n var subplotStackOpts = gd._fullLayout._scatterStackOpts[subplot];\n if (!subplotStackOpts) return;\n var calcTraces = gd.calcdata;\n var i, j, k, i2, cd, cd0, posj, sumj, norm;\n var groupOpts, interpolate, groupnorm, posAttr, valAttr;\n var hasAnyBlanks;\n for (var stackGroup in subplotStackOpts) {\n groupOpts = subplotStackOpts[stackGroup];\n var indices = groupOpts.traceIndices;\n if (!indices.length) continue;\n interpolate = groupOpts.stackgaps === \"interpolate\";\n groupnorm = groupOpts.groupnorm;\n if (groupOpts.orientation === \"v\") {\n posAttr = \"x\";\n valAttr = \"y\";\n } else {\n posAttr = \"y\";\n valAttr = \"x\";\n }\n hasAnyBlanks = new Array(indices.length);\n for (i = 0; i < hasAnyBlanks.length; i++) {\n hasAnyBlanks[i] = false;\n }\n cd0 = calcTraces[indices[0]];\n var allPositions = new Array(cd0.length);\n for (i = 0; i < cd0.length; i++) {\n allPositions[i] = cd0[i][posAttr];\n }\n for (i = 1; i < indices.length; i++) {\n cd = calcTraces[indices[i]];\n for (j = k = 0; j < cd.length; j++) {\n posj = cd[j][posAttr];\n for (; posj > allPositions[k] && k < allPositions.length; k++) {\n insertBlank(cd, j, allPositions[k], i, hasAnyBlanks, interpolate, posAttr);\n j++;\n }\n if (posj !== allPositions[k]) {\n for (i2 = 0; i2 < i; i2++) {\n insertBlank(calcTraces[indices[i2]], k, posj, i2, hasAnyBlanks, interpolate, posAttr);\n }\n allPositions.splice(k, 0, posj);\n }\n k++;\n }\n for (; k < allPositions.length; k++) {\n insertBlank(cd, j, allPositions[k], i, hasAnyBlanks, interpolate, posAttr);\n j++;\n }\n }\n var serieslen = allPositions.length;\n for (j = 0; j < cd0.length; j++) {\n sumj = cd0[j][valAttr] = cd0[j].s;\n for (i = 1; i < indices.length; i++) {\n cd = calcTraces[indices[i]];\n cd[0].trace._rawLength = cd[0].trace._length;\n cd[0].trace._length = serieslen;\n sumj += cd[j].s;\n cd[j][valAttr] = sumj;\n }\n if (groupnorm) {\n norm = (groupnorm === \"fraction\" ? sumj : sumj / 100) || 1;\n for (i = 0; i < indices.length; i++) {\n var cdj = calcTraces[indices[i]][j];\n cdj[valAttr] /= norm;\n cdj.sNorm = cdj.s / norm;\n }\n }\n }\n for (i = 0; i < indices.length; i++) {\n cd = calcTraces[indices[i]];\n var trace = cd[0].trace;\n var ppad = calc.calcMarkerSize(trace, trace._rawLength);\n var arrayPad = Array.isArray(ppad);\n if (ppad && hasAnyBlanks[i] || arrayPad) {\n var ppadRaw = ppad;\n ppad = new Array(serieslen);\n for (j = 0; j < serieslen; j++) {\n ppad[j] = cd[j].gap ? 0 : arrayPad ? ppadRaw[cd[j].i] : ppadRaw;\n }\n }\n var x = new Array(serieslen);\n var y = new Array(serieslen);\n for (j = 0; j < serieslen; j++) {\n x[j] = cd[j].x;\n y[j] = cd[j].y;\n }\n calc.calcAxisExpansion(gd, trace, xa, ya, x, y, ppad);\n cd[0].t.orientation = groupOpts.orientation;\n }\n }\n };\n function insertBlank(calcTrace, index, position, traceIndex, hasAnyBlanks, interpolate, posAttr) {\n hasAnyBlanks[traceIndex] = true;\n var newEntry = {\n i: null,\n gap: true,\n s: 0\n };\n newEntry[posAttr] = position;\n calcTrace.splice(index, 0, newEntry);\n if (index && position === calcTrace[index - 1][posAttr]) {\n var prevEntry = calcTrace[index - 1];\n newEntry.s = prevEntry.s;\n newEntry.i = prevEntry.i;\n newEntry.gap = prevEntry.gap;\n } else if (interpolate) {\n newEntry.s = getInterp(calcTrace, index, position, posAttr);\n }\n if (!index) {\n calcTrace[0].t = calcTrace[1].t;\n calcTrace[0].trace = calcTrace[1].trace;\n delete calcTrace[1].t;\n delete calcTrace[1].trace;\n }\n }\n function getInterp(calcTrace, index, position, posAttr) {\n var pt0 = calcTrace[index - 1];\n var pt1 = calcTrace[index + 1];\n if (!pt1) return pt0.s;\n if (!pt0) return pt1.s;\n return pt0.s + (pt1.s - pt0.s) * (position - pt0[posAttr]) / (pt1[posAttr] - pt0[posAttr]);\n }\n }\n });\n\n // src/traces/scatter/line_points.js\n var require_line_points = __commonJS({\n \"src/traces/scatter/line_points.js\"(exports, module) {\n \"use strict\";\n var Drawing = require_drawing();\n var numConstants = require_numerical();\n var BADNUM = numConstants.BADNUM;\n var LOG_CLIP = numConstants.LOG_CLIP;\n var LOG_CLIP_PLUS = LOG_CLIP + 0.5;\n var LOG_CLIP_MINUS = LOG_CLIP - 0.5;\n var Lib = require_lib();\n var segmentsIntersect = Lib.segmentsIntersect;\n var constrain = Lib.constrain;\n var constants = require_constants8();\n module.exports = function linePoints(d, opts) {\n var trace = opts.trace || {};\n var xa = opts.xaxis;\n var ya = opts.yaxis;\n var xLog = xa.type === \"log\";\n var yLog = ya.type === \"log\";\n var xLen = xa._length;\n var yLen = ya._length;\n var backoff = opts.backoff;\n var marker = trace.marker;\n var connectGaps = opts.connectGaps;\n var baseTolerance = opts.baseTolerance;\n var shape = opts.shape;\n var linear = shape === \"linear\";\n var fill = trace.fill && trace.fill !== \"none\";\n var segments = [];\n var minTolerance = constants.minTolerance;\n var len = d.length;\n var pts = new Array(len);\n var pti = 0;\n var i;\n var clusterStartPt, clusterEndPt, clusterHighPt, clusterLowPt;\n var thisPt;\n var clusterHighFirst;\n var clusterUnitVector;\n var thisVector;\n var clusterRefDist, clusterHighVal, clusterLowVal, thisVal;\n var clusterMinDeviation, clusterMaxDeviation, thisDeviation;\n function getPt(index) {\n var di = d[index];\n if (!di) return false;\n var x = opts.linearized ? xa.l2p(di.x) : xa.c2p(di.x);\n var y = opts.linearized ? ya.l2p(di.y) : ya.c2p(di.y);\n if (x === BADNUM) {\n if (xLog) x = xa.c2p(di.x, true);\n if (x === BADNUM) return false;\n if (yLog && y === BADNUM) {\n x *= Math.abs(xa._m * yLen * (xa._m > 0 ? LOG_CLIP_PLUS : LOG_CLIP_MINUS) / (ya._m * xLen * (ya._m > 0 ? LOG_CLIP_PLUS : LOG_CLIP_MINUS)));\n }\n x *= 1e3;\n }\n if (y === BADNUM) {\n if (yLog) y = ya.c2p(di.y, true);\n if (y === BADNUM) return false;\n y *= 1e3;\n }\n return [x, y];\n }\n function crossesViewport(xFrac0, yFrac0, xFrac1, yFrac1) {\n var dx = xFrac1 - xFrac0;\n var dy = yFrac1 - yFrac0;\n var dx0 = 0.5 - xFrac0;\n var dy0 = 0.5 - yFrac0;\n var norm2 = dx * dx + dy * dy;\n var dot = dx * dx0 + dy * dy0;\n if (dot > 0 && dot < norm2) {\n var cross = dx0 * dy - dy0 * dx;\n if (cross * cross < norm2) return true;\n }\n }\n var latestXFrac, latestYFrac;\n function getTolerance(pt, nextPt2) {\n var xFrac = pt[0] / xLen;\n var yFrac = pt[1] / yLen;\n var offScreenFraction = Math.max(0, -xFrac, xFrac - 1, -yFrac, yFrac - 1);\n if (offScreenFraction && latestXFrac !== void 0 && crossesViewport(xFrac, yFrac, latestXFrac, latestYFrac)) {\n offScreenFraction = 0;\n }\n if (offScreenFraction && nextPt2 && crossesViewport(xFrac, yFrac, nextPt2[0] / xLen, nextPt2[1] / yLen)) {\n offScreenFraction = 0;\n }\n return (1 + constants.toleranceGrowth * offScreenFraction) * baseTolerance;\n }\n function ptDist(pt1, pt2) {\n var dx = pt1[0] - pt2[0];\n var dy = pt1[1] - pt2[1];\n return Math.sqrt(dx * dx + dy * dy);\n }\n var maxScreensAway = constants.maxScreensAway;\n var xEdge0 = -xLen * maxScreensAway;\n var xEdge1 = xLen * (1 + maxScreensAway);\n var yEdge0 = -yLen * maxScreensAway;\n var yEdge1 = yLen * (1 + maxScreensAway);\n var edges = [\n [xEdge0, yEdge0, xEdge1, yEdge0],\n [xEdge1, yEdge0, xEdge1, yEdge1],\n [xEdge1, yEdge1, xEdge0, yEdge1],\n [xEdge0, yEdge1, xEdge0, yEdge0]\n ];\n var xEdge, yEdge, lastXEdge, lastYEdge, lastFarPt, edgePt;\n function getLinearEdgeIntersections(pt1, pt2) {\n var out = [];\n var ptCount = 0;\n for (var i2 = 0; i2 < 4; i2++) {\n var edge = edges[i2];\n var ptInt = segmentsIntersect(\n pt1[0],\n pt1[1],\n pt2[0],\n pt2[1],\n edge[0],\n edge[1],\n edge[2],\n edge[3]\n );\n if (ptInt && (!ptCount || Math.abs(ptInt.x - out[0][0]) > 1 || Math.abs(ptInt.y - out[0][1]) > 1)) {\n ptInt = [ptInt.x, ptInt.y];\n if (ptCount && ptDist(ptInt, pt1) < ptDist(out[0], pt1)) out.unshift(ptInt);\n else out.push(ptInt);\n ptCount++;\n }\n }\n return out;\n }\n function onlyConstrainedPoint(pt) {\n if (pt[0] < xEdge0 || pt[0] > xEdge1 || pt[1] < yEdge0 || pt[1] > yEdge1) {\n return [constrain(pt[0], xEdge0, xEdge1), constrain(pt[1], yEdge0, yEdge1)];\n }\n }\n function sameEdge(pt1, pt2) {\n if (pt1[0] === pt2[0] && (pt1[0] === xEdge0 || pt1[0] === xEdge1)) return true;\n if (pt1[1] === pt2[1] && (pt1[1] === yEdge0 || pt1[1] === yEdge1)) return true;\n }\n function getHVEdgeIntersections(pt1, pt2) {\n var out = [];\n var ptInt1 = onlyConstrainedPoint(pt1);\n var ptInt2 = onlyConstrainedPoint(pt2);\n if (ptInt1 && ptInt2 && sameEdge(ptInt1, ptInt2)) return out;\n if (ptInt1) out.push(ptInt1);\n if (ptInt2) out.push(ptInt2);\n return out;\n }\n function getABAEdgeIntersections(dim, limit0, limit1) {\n return function(pt1, pt2) {\n var ptInt1 = onlyConstrainedPoint(pt1);\n var ptInt2 = onlyConstrainedPoint(pt2);\n var out = [];\n if (ptInt1 && ptInt2 && sameEdge(ptInt1, ptInt2)) return out;\n if (ptInt1) out.push(ptInt1);\n if (ptInt2) out.push(ptInt2);\n var midShift = 2 * Lib.constrain((pt1[dim] + pt2[dim]) / 2, limit0, limit1) - ((ptInt1 || pt1)[dim] + (ptInt2 || pt2)[dim]);\n if (midShift) {\n var ptToAlter;\n if (ptInt1 && ptInt2) {\n ptToAlter = midShift > 0 === ptInt1[dim] > ptInt2[dim] ? ptInt1 : ptInt2;\n } else ptToAlter = ptInt1 || ptInt2;\n ptToAlter[dim] += midShift;\n }\n return out;\n };\n }\n var getEdgeIntersections;\n if (shape === \"linear\" || shape === \"spline\") {\n getEdgeIntersections = getLinearEdgeIntersections;\n } else if (shape === \"hv\" || shape === \"vh\") {\n getEdgeIntersections = getHVEdgeIntersections;\n } else if (shape === \"hvh\") getEdgeIntersections = getABAEdgeIntersections(0, xEdge0, xEdge1);\n else if (shape === \"vhv\") getEdgeIntersections = getABAEdgeIntersections(1, yEdge0, yEdge1);\n function getClosestCorner(pt1, pt2) {\n var dx = pt2[0] - pt1[0];\n var m = (pt2[1] - pt1[1]) / dx;\n var b = (pt1[1] * pt2[0] - pt2[1] * pt1[0]) / dx;\n if (b > 0) return [m > 0 ? xEdge0 : xEdge1, yEdge1];\n else return [m > 0 ? xEdge1 : xEdge0, yEdge0];\n }\n function updateEdge(pt) {\n var x = pt[0];\n var y = pt[1];\n var xSame = x === pts[pti - 1][0];\n var ySame = y === pts[pti - 1][1];\n if (xSame && ySame) return;\n if (pti > 1) {\n var xSame2 = x === pts[pti - 2][0];\n var ySame2 = y === pts[pti - 2][1];\n if (xSame && (x === xEdge0 || x === xEdge1) && xSame2) {\n if (ySame2) pti--;\n else pts[pti - 1] = pt;\n } else if (ySame && (y === yEdge0 || y === yEdge1) && ySame2) {\n if (xSame2) pti--;\n else pts[pti - 1] = pt;\n } else pts[pti++] = pt;\n } else pts[pti++] = pt;\n }\n function updateEdgesForReentry(pt) {\n if (pts[pti - 1][0] !== pt[0] && pts[pti - 1][1] !== pt[1]) {\n updateEdge([lastXEdge, lastYEdge]);\n }\n updateEdge(pt);\n lastFarPt = null;\n lastXEdge = lastYEdge = 0;\n }\n var arrayMarker = Lib.isArrayOrTypedArray(marker);\n function addPt(pt) {\n if (pt && backoff) {\n pt.i = i;\n pt.d = d;\n pt.trace = trace;\n pt.marker = arrayMarker ? marker[pt.i] : marker;\n pt.backoff = backoff;\n }\n latestXFrac = pt[0] / xLen;\n latestYFrac = pt[1] / yLen;\n xEdge = pt[0] < xEdge0 ? xEdge0 : pt[0] > xEdge1 ? xEdge1 : 0;\n yEdge = pt[1] < yEdge0 ? yEdge0 : pt[1] > yEdge1 ? yEdge1 : 0;\n if (xEdge || yEdge) {\n if (!pti) {\n pts[pti++] = [xEdge || pt[0], yEdge || pt[1]];\n } else if (lastFarPt) {\n var intersections = getEdgeIntersections(lastFarPt, pt);\n if (intersections.length > 1) {\n updateEdgesForReentry(intersections[0]);\n pts[pti++] = intersections[1];\n }\n } else {\n edgePt = getEdgeIntersections(pts[pti - 1], pt)[0];\n pts[pti++] = edgePt;\n }\n var lastPt = pts[pti - 1];\n if (xEdge && yEdge && (lastPt[0] !== xEdge || lastPt[1] !== yEdge)) {\n if (lastFarPt) {\n if (lastXEdge !== xEdge && lastYEdge !== yEdge) {\n if (lastXEdge && lastYEdge) {\n updateEdge(getClosestCorner(lastFarPt, pt));\n } else {\n updateEdge([lastXEdge || xEdge, lastYEdge || yEdge]);\n }\n } else if (lastXEdge && lastYEdge) {\n updateEdge([lastXEdge, lastYEdge]);\n }\n }\n updateEdge([xEdge, yEdge]);\n } else if (lastXEdge - xEdge && lastYEdge - yEdge) {\n updateEdge([xEdge || lastXEdge, yEdge || lastYEdge]);\n }\n lastFarPt = pt;\n lastXEdge = xEdge;\n lastYEdge = yEdge;\n } else {\n if (lastFarPt) {\n updateEdgesForReentry(getEdgeIntersections(lastFarPt, pt)[0]);\n }\n pts[pti++] = pt;\n }\n }\n for (i = 0; i < len; i++) {\n clusterStartPt = getPt(i);\n if (!clusterStartPt) continue;\n pti = 0;\n lastFarPt = null;\n addPt(clusterStartPt);\n for (i++; i < len; i++) {\n clusterHighPt = getPt(i);\n if (!clusterHighPt) {\n if (connectGaps) continue;\n else break;\n }\n if (!linear || !opts.simplify) {\n addPt(clusterHighPt);\n continue;\n }\n var nextPt = getPt(i + 1);\n clusterRefDist = ptDist(clusterHighPt, clusterStartPt);\n if (!(fill && (pti === 0 || pti === len - 1)) && clusterRefDist < getTolerance(clusterHighPt, nextPt) * minTolerance) continue;\n clusterUnitVector = [\n (clusterHighPt[0] - clusterStartPt[0]) / clusterRefDist,\n (clusterHighPt[1] - clusterStartPt[1]) / clusterRefDist\n ];\n clusterLowPt = clusterStartPt;\n clusterHighVal = clusterRefDist;\n clusterLowVal = clusterMinDeviation = clusterMaxDeviation = 0;\n clusterHighFirst = false;\n clusterEndPt = clusterHighPt;\n for (i++; i < d.length; i++) {\n thisPt = nextPt;\n nextPt = getPt(i + 1);\n if (!thisPt) {\n if (connectGaps) continue;\n else break;\n }\n thisVector = [\n thisPt[0] - clusterStartPt[0],\n thisPt[1] - clusterStartPt[1]\n ];\n thisDeviation = thisVector[0] * clusterUnitVector[1] - thisVector[1] * clusterUnitVector[0];\n clusterMinDeviation = Math.min(clusterMinDeviation, thisDeviation);\n clusterMaxDeviation = Math.max(clusterMaxDeviation, thisDeviation);\n if (clusterMaxDeviation - clusterMinDeviation > getTolerance(thisPt, nextPt)) break;\n clusterEndPt = thisPt;\n thisVal = thisVector[0] * clusterUnitVector[0] + thisVector[1] * clusterUnitVector[1];\n if (thisVal > clusterHighVal) {\n clusterHighVal = thisVal;\n clusterHighPt = thisPt;\n clusterHighFirst = false;\n } else if (thisVal < clusterLowVal) {\n clusterLowVal = thisVal;\n clusterLowPt = thisPt;\n clusterHighFirst = true;\n }\n }\n if (clusterHighFirst) {\n addPt(clusterHighPt);\n if (clusterEndPt !== clusterLowPt) addPt(clusterLowPt);\n } else {\n if (clusterLowPt !== clusterStartPt) addPt(clusterLowPt);\n if (clusterEndPt !== clusterHighPt) addPt(clusterHighPt);\n }\n addPt(clusterEndPt);\n if (i >= d.length || !thisPt) break;\n addPt(thisPt);\n clusterStartPt = thisPt;\n }\n if (lastFarPt) updateEdge([lastXEdge || lastFarPt[0], lastYEdge || lastFarPt[1]]);\n segments.push(pts.slice(0, pti));\n }\n var lastShapeChar = shape.slice(shape.length - 1);\n if (backoff && lastShapeChar !== \"h\" && lastShapeChar !== \"v\") {\n var trimmed = false;\n var n = -1;\n var newSegments = [];\n for (var j = 0; j < segments.length; j++) {\n for (var k = 0; k < segments[j].length - 1; k++) {\n var start = segments[j][k];\n var end = segments[j][k + 1];\n var xy = Drawing.applyBackoff(end, start);\n if (xy[0] !== end[0] || xy[1] !== end[1]) {\n trimmed = true;\n }\n if (!newSegments[n + 1]) {\n n++;\n newSegments[n] = [\n start,\n [xy[0], xy[1]]\n ];\n }\n }\n }\n return trimmed ? newSegments : segments;\n }\n return segments;\n };\n }\n });\n\n // src/traces/scatter/link_traces.js\n var require_link_traces = __commonJS({\n \"src/traces/scatter/link_traces.js\"(exports, module) {\n \"use strict\";\n var LINKEDFILLS = { tonextx: 1, tonexty: 1, tonext: 1 };\n module.exports = function linkTraces(gd, plotinfo, cdscatter) {\n var trace, i, group, prevtrace, groupIndex;\n var groupIndices = {};\n var needsSort = false;\n var prevGroupIndex = -1;\n var nextGroupIndex = 0;\n var prevUnstackedGroupIndex = -1;\n for (i = 0; i < cdscatter.length; i++) {\n trace = cdscatter[i][0].trace;\n group = trace.stackgroup || \"\";\n if (group) {\n if (group in groupIndices) {\n groupIndex = groupIndices[group];\n } else {\n groupIndex = groupIndices[group] = nextGroupIndex;\n nextGroupIndex++;\n }\n } else if (trace.fill in LINKEDFILLS && prevUnstackedGroupIndex >= 0) {\n groupIndex = prevUnstackedGroupIndex;\n } else {\n groupIndex = prevUnstackedGroupIndex = nextGroupIndex;\n nextGroupIndex++;\n }\n if (groupIndex < prevGroupIndex) needsSort = true;\n trace._groupIndex = prevGroupIndex = groupIndex;\n }\n var cdscatterSorted = cdscatter.slice();\n if (needsSort) {\n cdscatterSorted.sort(function(a, b) {\n var traceA = a[0].trace;\n var traceB = b[0].trace;\n return traceA._groupIndex - traceB._groupIndex || traceA.index - traceB.index;\n });\n }\n var prevtraces = {};\n for (i = 0; i < cdscatterSorted.length; i++) {\n trace = cdscatterSorted[i][0].trace;\n group = trace.stackgroup || \"\";\n if (trace.visible === true) {\n trace._nexttrace = null;\n if (trace.fill in LINKEDFILLS) {\n prevtrace = prevtraces[group];\n trace._prevtrace = prevtrace || null;\n if (prevtrace) {\n prevtrace._nexttrace = trace;\n }\n }\n trace._ownfill = trace.fill && (trace.fill.substr(0, 6) === \"tozero\" || trace.fill === \"toself\" || trace.fill.substr(0, 2) === \"to\" && !trace._prevtrace);\n prevtraces[group] = trace;\n } else {\n trace._prevtrace = trace._nexttrace = trace._ownfill = null;\n }\n }\n return cdscatterSorted;\n };\n }\n });\n\n // src/traces/scatter/plot.js\n var require_plot = __commonJS({\n \"src/traces/scatter/plot.js\"(exports, module) {\n \"use strict\";\n var d3 = require_d3();\n var Registry = require_registry();\n var Lib = require_lib();\n var ensureSingle = Lib.ensureSingle;\n var identity = Lib.identity;\n var Drawing = require_drawing();\n var subTypes = require_subtypes();\n var linePoints = require_line_points();\n var linkTraces = require_link_traces();\n var polygonTester = require_polygon().tester;\n module.exports = function plot(gd, plotinfo, cdscatter, scatterLayer, transitionOpts, makeOnCompleteCallback) {\n var join, onComplete;\n var isFullReplot = !transitionOpts;\n var hasTransition = !!transitionOpts && transitionOpts.duration > 0;\n var cdscatterSorted = linkTraces(gd, plotinfo, cdscatter);\n join = scatterLayer.selectAll(\"g.trace\").data(cdscatterSorted, function(d) {\n return d[0].trace.uid;\n });\n join.enter().append(\"g\").attr(\"class\", function(d) {\n return \"trace scatter trace\" + d[0].trace.uid;\n }).style(\"stroke-miterlimit\", 2);\n join.order();\n createFills(gd, join, plotinfo);\n if (hasTransition) {\n if (makeOnCompleteCallback) {\n onComplete = makeOnCompleteCallback();\n }\n var transition = d3.transition().duration(transitionOpts.duration).ease(transitionOpts.easing).each(\"end\", function() {\n onComplete && onComplete();\n }).each(\"interrupt\", function() {\n onComplete && onComplete();\n });\n transition.each(function() {\n scatterLayer.selectAll(\"g.trace\").each(function(d, i) {\n plotOne(gd, i, plotinfo, d, cdscatterSorted, this, transitionOpts);\n });\n });\n } else {\n join.each(function(d, i) {\n plotOne(gd, i, plotinfo, d, cdscatterSorted, this, transitionOpts);\n });\n }\n if (isFullReplot) {\n join.exit().remove();\n }\n scatterLayer.selectAll(\"path:not([d])\").remove();\n };\n function createFills(gd, traceJoin, plotinfo) {\n traceJoin.each(function(d) {\n var fills = ensureSingle(d3.select(this), \"g\", \"fills\");\n Drawing.setClipUrl(fills, plotinfo.layerClipId, gd);\n var trace = d[0].trace;\n var fillData = [];\n if (trace._ownfill) fillData.push(\"_ownFill\");\n if (trace._nexttrace) fillData.push(\"_nextFill\");\n var fillJoin = fills.selectAll(\"g\").data(fillData, identity);\n fillJoin.enter().append(\"g\");\n fillJoin.exit().each(function(d2) {\n trace[d2] = null;\n }).remove();\n fillJoin.order().each(function(d2) {\n trace[d2] = ensureSingle(d3.select(this), \"path\", \"js-fill\");\n });\n });\n }\n function plotOne(gd, idx, plotinfo, cdscatter, cdscatterAll, element, transitionOpts) {\n var isStatic = gd._context.staticPlot;\n var i;\n selectMarkers(gd, idx, plotinfo, cdscatter, cdscatterAll);\n var hasTransition = !!transitionOpts && transitionOpts.duration > 0;\n function transition(selection) {\n return hasTransition ? selection.transition() : selection;\n }\n var xa = plotinfo.xaxis;\n var ya = plotinfo.yaxis;\n var trace = cdscatter[0].trace;\n var line = trace.line;\n var tr = d3.select(element);\n var errorBarGroup = ensureSingle(tr, \"g\", \"errorbars\");\n var lines = ensureSingle(tr, \"g\", \"lines\");\n var points = ensureSingle(tr, \"g\", \"points\");\n var text = ensureSingle(tr, \"g\", \"text\");\n Registry.getComponentMethod(\"errorbars\", \"plot\")(gd, errorBarGroup, plotinfo, transitionOpts);\n if (trace.visible !== true) return;\n transition(tr).style(\"opacity\", trace.opacity);\n var ownFillEl3, tonext;\n var ownFillDir = trace.fill.charAt(trace.fill.length - 1);\n if (ownFillDir !== \"x\" && ownFillDir !== \"y\") ownFillDir = \"\";\n var fillAxisIndex, fillAxisZero;\n if (ownFillDir === \"y\") {\n fillAxisIndex = 1;\n fillAxisZero = ya.c2p(0, true);\n } else if (ownFillDir === \"x\") {\n fillAxisIndex = 0;\n fillAxisZero = xa.c2p(0, true);\n }\n cdscatter[0][plotinfo.isRangePlot ? \"nodeRangePlot3\" : \"node3\"] = tr;\n var prevRevpath = \"\";\n var prevPolygons = [];\n var prevtrace = trace._prevtrace;\n var prevFillsegments = null;\n var prevFillElement = null;\n if (prevtrace) {\n prevRevpath = prevtrace._prevRevpath || \"\";\n tonext = prevtrace._nextFill;\n prevPolygons = prevtrace._ownPolygons;\n prevFillsegments = prevtrace._fillsegments;\n prevFillElement = prevtrace._fillElement;\n }\n var thispath;\n var thisrevpath;\n var fullpath = \"\";\n var revpath = \"\";\n var pathfn, revpathbase, revpathfn;\n var pt0, lastSegment, pt1;\n var thisPolygons = [];\n trace._polygons = [];\n var fillsegments = [];\n var segments = [];\n var makeUpdate = Lib.noop;\n ownFillEl3 = trace._ownFill;\n if (subTypes.hasLines(trace) || trace.fill !== \"none\") {\n if (tonext) {\n tonext.datum(cdscatter);\n }\n if ([\"hv\", \"vh\", \"hvh\", \"vhv\"].indexOf(line.shape) !== -1) {\n pathfn = Drawing.steps(line.shape);\n revpathbase = Drawing.steps(\n line.shape.split(\"\").reverse().join(\"\")\n );\n } else if (line.shape === \"spline\") {\n pathfn = revpathbase = function(pts2) {\n var pLast = pts2[pts2.length - 1];\n if (pts2.length > 1 && pts2[0][0] === pLast[0] && pts2[0][1] === pLast[1]) {\n return Drawing.smoothclosed(pts2.slice(1), line.smoothing);\n } else {\n return Drawing.smoothopen(pts2, line.smoothing);\n }\n };\n } else {\n pathfn = revpathbase = function(pts2) {\n return \"M\" + pts2.join(\"L\");\n };\n }\n revpathfn = function(pts2) {\n return revpathbase(pts2.reverse());\n };\n segments = linePoints(cdscatter, {\n xaxis: xa,\n yaxis: ya,\n trace,\n connectGaps: trace.connectgaps,\n baseTolerance: Math.max(line.width || 1, 3) / 4,\n shape: line.shape,\n backoff: line.backoff,\n simplify: line.simplify,\n fill: trace.fill\n });\n fillsegments = new Array(segments.length);\n var fillsegmentCount = 0;\n for (i = 0; i < segments.length; i++) {\n var curpoints;\n var pts = segments[i];\n if (!curpoints || !ownFillDir) {\n curpoints = pts.slice();\n fillsegments[fillsegmentCount] = curpoints;\n fillsegmentCount++;\n } else {\n curpoints.push.apply(curpoints, pts);\n }\n }\n trace._fillElement = null;\n trace._fillExclusionElement = prevFillElement;\n trace._fillsegments = fillsegments.slice(0, fillsegmentCount);\n fillsegments = trace._fillsegments;\n if (segments.length) {\n pt0 = segments[0][0].slice();\n lastSegment = segments[segments.length - 1];\n pt1 = lastSegment[lastSegment.length - 1].slice();\n }\n makeUpdate = function(isEnter) {\n return function(pts2) {\n thispath = pathfn(pts2);\n thisrevpath = revpathfn(pts2);\n if (!fullpath) {\n fullpath = thispath;\n revpath = thisrevpath;\n } else if (ownFillDir) {\n fullpath += \"L\" + thispath.substr(1);\n revpath = thisrevpath + (\"L\" + revpath.substr(1));\n } else {\n fullpath += \"Z\" + thispath;\n revpath = thisrevpath + \"Z\" + revpath;\n }\n if (subTypes.hasLines(trace)) {\n var el = d3.select(this);\n el.datum(cdscatter);\n if (isEnter) {\n transition(el.style(\"opacity\", 0).attr(\"d\", thispath).call(Drawing.lineGroupStyle)).style(\"opacity\", 1);\n } else {\n var sel = transition(el);\n sel.attr(\"d\", thispath);\n Drawing.singleLineStyle(cdscatter, sel);\n }\n }\n };\n };\n }\n var lineJoin = lines.selectAll(\".js-line\").data(segments);\n transition(lineJoin.exit()).style(\"opacity\", 0).remove();\n lineJoin.each(makeUpdate(false));\n lineJoin.enter().append(\"path\").classed(\"js-line\", true).style(\"vector-effect\", isStatic ? \"none\" : \"non-scaling-stroke\").call(Drawing.lineGroupStyle).each(makeUpdate(true));\n Drawing.setClipUrl(lineJoin, plotinfo.layerClipId, gd);\n function clearFill(selection) {\n transition(selection).attr(\"d\", \"M0,0Z\");\n }\n var makeSelfPolygons = function() {\n var polygons = new Array(fillsegments.length);\n for (i = 0; i < fillsegments.length; i++) {\n polygons[i] = polygonTester(fillsegments[i]);\n }\n return polygons;\n };\n var makePolygonsToPrevious = function(prevFillsegments2) {\n var polygons, i2;\n if (!prevFillsegments2 || prevFillsegments2.length === 0) {\n polygons = new Array(fillsegments.length);\n for (i2 = 0; i2 < fillsegments.length; i2++) {\n var pt02 = fillsegments[i2][0].slice();\n var pt12 = fillsegments[i2][fillsegments[i2].length - 1].slice();\n pt02[fillAxisIndex] = pt12[fillAxisIndex] = fillAxisZero;\n var zeropoints = [pt12, pt02];\n var polypoints = zeropoints.concat(fillsegments[i2]);\n polygons[i2] = polygonTester(polypoints);\n }\n } else {\n polygons = new Array(prevFillsegments2.length - 1 + fillsegments.length);\n for (i2 = 0; i2 < prevFillsegments2.length - 1; i2++) {\n polygons[i2] = polygonTester(prevFillsegments2[i2]);\n }\n var reversedPrevFillsegment = prevFillsegments2[prevFillsegments2.length - 1].slice();\n reversedPrevFillsegment.reverse();\n for (i2 = 0; i2 < fillsegments.length; i2++) {\n polygons[prevFillsegments2.length - 1 + i2] = polygonTester(fillsegments[i2].concat(reversedPrevFillsegment));\n }\n }\n return polygons;\n };\n if (segments.length) {\n if (ownFillEl3) {\n ownFillEl3.datum(cdscatter);\n if (pt0 && pt1) {\n if (ownFillDir) {\n pt0[fillAxisIndex] = pt1[fillAxisIndex] = fillAxisZero;\n transition(ownFillEl3).attr(\"d\", \"M\" + pt1 + \"L\" + pt0 + \"L\" + fullpath.substr(1)).call(Drawing.singleFillStyle, gd);\n thisPolygons = makePolygonsToPrevious(null);\n } else {\n transition(ownFillEl3).attr(\"d\", fullpath + \"Z\").call(Drawing.singleFillStyle, gd);\n thisPolygons = makeSelfPolygons();\n }\n }\n trace._polygons = thisPolygons;\n trace._fillElement = ownFillEl3;\n } else if (tonext) {\n if (trace.fill.substr(0, 6) === \"tonext\" && fullpath && prevRevpath) {\n if (trace.fill === \"tonext\") {\n transition(tonext).attr(\"d\", fullpath + \"Z\" + prevRevpath + \"Z\").call(Drawing.singleFillStyle, gd);\n thisPolygons = makeSelfPolygons();\n trace._polygons = thisPolygons.concat(prevPolygons);\n } else {\n transition(tonext).attr(\"d\", fullpath + \"L\" + prevRevpath.substr(1) + \"Z\").call(Drawing.singleFillStyle, gd);\n thisPolygons = makePolygonsToPrevious(prevFillsegments);\n trace._polygons = thisPolygons;\n }\n trace._fillElement = tonext;\n } else {\n clearFill(tonext);\n }\n }\n trace._prevRevpath = revpath;\n } else {\n if (ownFillEl3) clearFill(ownFillEl3);\n else if (tonext) clearFill(tonext);\n trace._prevRevpath = null;\n }\n trace._ownPolygons = thisPolygons;\n function visFilter(d) {\n return d.filter(function(v) {\n return !v.gap && v.vis;\n });\n }\n function visFilterWithGaps(d) {\n return d.filter(function(v) {\n return v.vis;\n });\n }\n function gapFilter(d) {\n return d.filter(function(v) {\n return !v.gap;\n });\n }\n function keyFunc(d) {\n return d.id;\n }\n function getKeyFunc(trace2) {\n if (trace2.ids) {\n return keyFunc;\n }\n }\n function hideFilter() {\n return false;\n }\n function makePoints(points2, text2, cdscatter2) {\n var join, selection, hasNode;\n var trace2 = cdscatter2[0].trace;\n var showMarkers = subTypes.hasMarkers(trace2);\n var showText = subTypes.hasText(trace2);\n var keyFunc2 = getKeyFunc(trace2);\n var markerFilter = hideFilter;\n var textFilter = hideFilter;\n if (showMarkers || showText) {\n var showFilter = identity;\n var stackGroup = trace2.stackgroup;\n var isInferZero = stackGroup && gd._fullLayout._scatterStackOpts[xa._id + ya._id][stackGroup].stackgaps === \"infer zero\";\n if (trace2.marker.maxdisplayed || trace2._needsCull) {\n showFilter = isInferZero ? visFilterWithGaps : visFilter;\n } else if (stackGroup && !isInferZero) {\n showFilter = gapFilter;\n }\n if (showMarkers) markerFilter = showFilter;\n if (showText) textFilter = showFilter;\n }\n selection = points2.selectAll(\"path.point\");\n join = selection.data(markerFilter, keyFunc2);\n var enter = join.enter().append(\"path\").classed(\"point\", true);\n if (hasTransition) {\n enter.call(Drawing.pointStyle, trace2, gd).call(Drawing.translatePoints, xa, ya).style(\"opacity\", 0).transition().style(\"opacity\", 1);\n }\n join.order();\n var styleFns;\n if (showMarkers) {\n styleFns = Drawing.makePointStyleFns(trace2);\n }\n join.each(function(d) {\n var el = d3.select(this);\n var sel = transition(el);\n hasNode = Drawing.translatePoint(d, sel, xa, ya);\n if (hasNode) {\n Drawing.singlePointStyle(d, sel, trace2, styleFns, gd);\n if (plotinfo.layerClipId) {\n Drawing.hideOutsideRangePoint(d, sel, xa, ya, trace2.xcalendar, trace2.ycalendar);\n }\n if (trace2.customdata) {\n el.classed(\"plotly-customdata\", d.data !== null && d.data !== void 0);\n }\n } else {\n sel.remove();\n }\n });\n if (hasTransition) {\n join.exit().transition().style(\"opacity\", 0).remove();\n } else {\n join.exit().remove();\n }\n selection = text2.selectAll(\"g\");\n join = selection.data(textFilter, keyFunc2);\n join.enter().append(\"g\").classed(\"textpoint\", true).append(\"text\");\n join.order();\n join.each(function(d) {\n var g = d3.select(this);\n var sel = transition(g.select(\"text\"));\n hasNode = Drawing.translatePoint(d, sel, xa, ya);\n if (hasNode) {\n if (plotinfo.layerClipId) {\n Drawing.hideOutsideRangePoint(d, g, xa, ya, trace2.xcalendar, trace2.ycalendar);\n }\n } else {\n g.remove();\n }\n });\n join.selectAll(\"text\").call(Drawing.textPointStyle, trace2, gd).each(function(d) {\n var x = xa.c2p(d.x);\n var y = ya.c2p(d.y);\n d3.select(this).selectAll(\"tspan.line\").each(function() {\n transition(d3.select(this)).attr({ x, y });\n });\n });\n join.exit().remove();\n }\n points.datum(cdscatter);\n text.datum(cdscatter);\n makePoints(points, text, cdscatter);\n var hasClipOnAxisFalse = trace.cliponaxis === false;\n var clipUrl = hasClipOnAxisFalse ? null : plotinfo.layerClipId;\n Drawing.setClipUrl(points, clipUrl, gd);\n Drawing.setClipUrl(text, clipUrl, gd);\n }\n function selectMarkers(gd, idx, plotinfo, cdscatter, cdscatterAll) {\n var xa = plotinfo.xaxis;\n var ya = plotinfo.yaxis;\n var xr = d3.extent(Lib.simpleMap(xa.range, xa.r2c));\n var yr = d3.extent(Lib.simpleMap(ya.range, ya.r2c));\n var trace = cdscatter[0].trace;\n if (!subTypes.hasMarkers(trace)) return;\n var mnum = trace.marker.maxdisplayed;\n if (mnum === 0) return;\n var cd = cdscatter.filter(function(v) {\n return v.x >= xr[0] && v.x <= xr[1] && v.y >= yr[0] && v.y <= yr[1];\n });\n var inc = Math.ceil(cd.length / mnum);\n var tnum = 0;\n cdscatterAll.forEach(function(cdj, j) {\n var tracei = cdj[0].trace;\n if (subTypes.hasMarkers(tracei) && tracei.marker.maxdisplayed > 0 && j < idx) {\n tnum++;\n }\n });\n var i0 = Math.round(tnum * inc / 3 + Math.floor(tnum / 3) * inc / 7.1);\n cdscatter.forEach(function(v) {\n delete v.vis;\n });\n cd.forEach(function(v, i) {\n if (Math.round((i + i0) % inc) === 0) v.vis = true;\n });\n }\n }\n });\n\n // src/traces/scatter/marker_colorbar.js\n var require_marker_colorbar = __commonJS({\n \"src/traces/scatter/marker_colorbar.js\"(exports, module) {\n \"use strict\";\n module.exports = {\n container: \"marker\",\n min: \"cmin\",\n max: \"cmax\"\n };\n }\n });\n\n // src/traces/scatter/format_labels.js\n var require_format_labels = __commonJS({\n \"src/traces/scatter/format_labels.js\"(exports, module) {\n \"use strict\";\n var Axes = require_axes();\n module.exports = function formatLabels(cdi, trace, fullLayout) {\n var labels = {};\n var mockGd = { _fullLayout: fullLayout };\n var xa = Axes.getFromTrace(mockGd, trace, \"x\");\n var ya = Axes.getFromTrace(mockGd, trace, \"y\");\n var x = cdi.orig_x;\n if (x === void 0) x = cdi.x;\n var y = cdi.orig_y;\n if (y === void 0) y = cdi.y;\n labels.xLabel = Axes.tickText(xa, xa.c2l(x), true).text;\n labels.yLabel = Axes.tickText(ya, ya.c2l(y), true).text;\n return labels;\n };\n }\n });\n\n // src/traces/scatter/style.js\n var require_style2 = __commonJS({\n \"src/traces/scatter/style.js\"(exports, module) {\n \"use strict\";\n var d3 = require_d3();\n var Drawing = require_drawing();\n var Registry = require_registry();\n function style(gd) {\n var s = d3.select(gd).selectAll(\"g.trace.scatter\");\n s.style(\"opacity\", function(d) {\n return d[0].trace.opacity;\n });\n s.selectAll(\"g.points\").each(function(d) {\n var sel = d3.select(this);\n var trace = d.trace || d[0].trace;\n stylePoints(sel, trace, gd);\n });\n s.selectAll(\"g.text\").each(function(d) {\n var sel = d3.select(this);\n var trace = d.trace || d[0].trace;\n styleText(sel, trace, gd);\n });\n s.selectAll(\"g.trace path.js-line\").call(Drawing.lineGroupStyle);\n s.selectAll(\"g.trace path.js-fill\").call(Drawing.fillGroupStyle, gd, false);\n Registry.getComponentMethod(\"errorbars\", \"style\")(s);\n }\n function stylePoints(sel, trace, gd) {\n Drawing.pointStyle(sel.selectAll(\"path.point\"), trace, gd);\n }\n function styleText(sel, trace, gd) {\n Drawing.textPointStyle(sel.selectAll(\"text\"), trace, gd);\n }\n function styleOnSelect(gd, cd, sel) {\n var trace = cd[0].trace;\n if (trace.selectedpoints) {\n Drawing.selectedPointStyle(sel.selectAll(\"path.point\"), trace);\n Drawing.selectedTextStyle(sel.selectAll(\"text\"), trace);\n } else {\n stylePoints(sel, trace, gd);\n styleText(sel, trace, gd);\n }\n }\n module.exports = {\n style,\n stylePoints,\n styleText,\n styleOnSelect\n };\n }\n });\n\n // src/traces/scatter/get_trace_color.js\n var require_get_trace_color = __commonJS({\n \"src/traces/scatter/get_trace_color.js\"(exports, module) {\n \"use strict\";\n var Color = require_color();\n var subtypes = require_subtypes();\n module.exports = function getTraceColor(trace, di) {\n var lc, tc;\n if (trace.mode === \"lines\") {\n lc = trace.line.color;\n return lc && Color.opacity(lc) ? lc : trace.fillcolor;\n } else if (trace.mode === \"none\") {\n return trace.fill ? trace.fillcolor : \"\";\n } else {\n var mc = di.mcc || (trace.marker || {}).color;\n var mlc = di.mlcc || ((trace.marker || {}).line || {}).color;\n tc = mc && Color.opacity(mc) ? mc : mlc && Color.opacity(mlc) && (di.mlw || ((trace.marker || {}).line || {}).width) ? mlc : \"\";\n if (tc) {\n if (Color.opacity(tc) < 0.3) {\n return Color.addOpacity(tc, 0.3);\n } else return tc;\n } else {\n lc = (trace.line || {}).color;\n return lc && Color.opacity(lc) && subtypes.hasLines(trace) && trace.line.width ? lc : trace.fillcolor;\n }\n }\n };\n }\n });\n\n // src/traces/scatter/hover.js\n var require_hover2 = __commonJS({\n \"src/traces/scatter/hover.js\"(exports, module) {\n \"use strict\";\n var Lib = require_lib();\n var Fx = require_fx();\n var Registry = require_registry();\n var getTraceColor = require_get_trace_color();\n var Color = require_color();\n var fillText = Lib.fillText;\n module.exports = function hoverPoints(pointData, xval, yval, hovermode) {\n var cd = pointData.cd;\n var trace = cd[0].trace;\n var xa = pointData.xa;\n var ya = pointData.ya;\n var xpx = xa.c2p(xval);\n var ypx = ya.c2p(yval);\n var pt = [xpx, ypx];\n var hoveron = trace.hoveron || \"\";\n var minRad = trace.mode.indexOf(\"markers\") !== -1 ? 3 : 0.5;\n var xPeriod = !!trace.xperiodalignment;\n var yPeriod = !!trace.yperiodalignment;\n if (hoveron.indexOf(\"points\") !== -1) {\n var dx = function(di2) {\n if (xPeriod) {\n var x0 = xa.c2p(di2.xStart);\n var x1 = xa.c2p(di2.xEnd);\n return xpx >= Math.min(x0, x1) && xpx <= Math.max(x0, x1) ? 0 : Infinity;\n }\n var rad2 = Math.max(3, di2.mrc || 0);\n var kink = 1 - 1 / rad2;\n var dxRaw = Math.abs(xa.c2p(di2.x) - xpx);\n return dxRaw < rad2 ? kink * dxRaw / rad2 : dxRaw - rad2 + kink;\n };\n var dy = function(di2) {\n if (yPeriod) {\n var y0 = ya.c2p(di2.yStart);\n var y1 = ya.c2p(di2.yEnd);\n return ypx >= Math.min(y0, y1) && ypx <= Math.max(y0, y1) ? 0 : Infinity;\n }\n var rad2 = Math.max(3, di2.mrc || 0);\n var kink = 1 - 1 / rad2;\n var dyRaw = Math.abs(ya.c2p(di2.y) - ypx);\n return dyRaw < rad2 ? kink * dyRaw / rad2 : dyRaw - rad2 + kink;\n };\n var dxy = function(di2) {\n var rad2 = Math.max(minRad, di2.mrc || 0);\n var dx2 = xa.c2p(di2.x) - xpx;\n var dy2 = ya.c2p(di2.y) - ypx;\n return Math.max(Math.sqrt(dx2 * dx2 + dy2 * dy2) - rad2, 1 - minRad / rad2);\n };\n var distfn = Fx.getDistanceFunction(hovermode, dx, dy, dxy);\n Fx.getClosest(cd, distfn, pointData);\n if (pointData.index !== false) {\n var di = cd[pointData.index];\n var xc = xa.c2p(di.x, true);\n var yc = ya.c2p(di.y, true);\n var rad = di.mrc || 1;\n pointData.index = di.i;\n var orientation = cd[0].t.orientation;\n var sizeVal = orientation && (di.sNorm || di.s);\n var xLabelVal = orientation === \"h\" ? sizeVal : di.orig_x !== void 0 ? di.orig_x : di.x;\n var yLabelVal = orientation === \"v\" ? sizeVal : di.orig_y !== void 0 ? di.orig_y : di.y;\n Lib.extendFlat(pointData, {\n color: getTraceColor(trace, di),\n x0: xc - rad,\n x1: xc + rad,\n xLabelVal,\n y0: yc - rad,\n y1: yc + rad,\n yLabelVal,\n spikeDistance: dxy(di),\n hovertemplate: trace.hovertemplate\n });\n fillText(di, trace, pointData);\n Registry.getComponentMethod(\"errorbars\", \"hoverInfo\")(di, trace, pointData);\n return [pointData];\n }\n }\n function isHoverPointInFillElement(el) {\n if (!el) {\n return false;\n }\n var svgElement = el.node();\n try {\n var domPoint = new DOMPoint(pt[0], pt[1]);\n return svgElement.isPointInFill(domPoint);\n } catch (TypeError2) {\n var svgPoint = svgElement.ownerSVGElement.createSVGPoint();\n svgPoint.x = pt[0];\n svgPoint.y = pt[1];\n return svgElement.isPointInFill(svgPoint);\n }\n }\n function getHoverLabelPosition(polygons) {\n var i;\n var polygonsIn = [];\n var xmin = Infinity;\n var xmax = -Infinity;\n var ymin = Infinity;\n var ymax = -Infinity;\n var yPos;\n for (i = 0; i < polygons.length; i++) {\n var polygon = polygons[i];\n if (polygon.contains(pt)) {\n polygonsIn.push(polygon);\n ymin = Math.min(ymin, polygon.ymin);\n ymax = Math.max(ymax, polygon.ymax);\n }\n }\n if (polygonsIn.length === 0) {\n return null;\n }\n ymin = Math.max(ymin, 0);\n ymax = Math.min(ymax, ya._length);\n yPos = (ymin + ymax) / 2;\n var j, pts, xAtYPos, x0, x1, y0, y1;\n for (i = 0; i < polygonsIn.length; i++) {\n pts = polygonsIn[i].pts;\n for (j = 1; j < pts.length; j++) {\n y0 = pts[j - 1][1];\n y1 = pts[j][1];\n if (y0 > yPos !== y1 >= yPos) {\n x0 = pts[j - 1][0];\n x1 = pts[j][0];\n if (y1 - y0) {\n xAtYPos = x0 + (x1 - x0) * (yPos - y0) / (y1 - y0);\n xmin = Math.min(xmin, xAtYPos);\n xmax = Math.max(xmax, xAtYPos);\n }\n }\n }\n }\n xmin = Math.max(xmin, 0);\n xmax = Math.min(xmax, xa._length);\n return {\n x0: xmin,\n x1: xmax,\n y0: yPos,\n y1: yPos\n };\n }\n if (hoveron.indexOf(\"fills\") !== -1 && trace._fillElement) {\n var inside = isHoverPointInFillElement(trace._fillElement) && !isHoverPointInFillElement(trace._fillExclusionElement);\n if (inside) {\n var hoverLabelCoords = getHoverLabelPosition(trace._polygons);\n if (hoverLabelCoords === null) {\n hoverLabelCoords = {\n x0: pt[0],\n x1: pt[0],\n y0: pt[1],\n y1: pt[1]\n };\n }\n var color = Color.defaultLine;\n if (Color.opacity(trace.fillcolor)) color = trace.fillcolor;\n else if (Color.opacity((trace.line || {}).color)) {\n color = trace.line.color;\n }\n Lib.extendFlat(pointData, {\n // never let a 2D override 1D type as closest point\n // also: no spikeDistance, it's not allowed for fills\n distance: pointData.maxHoverDistance,\n x0: hoverLabelCoords.x0,\n x1: hoverLabelCoords.x1,\n y0: hoverLabelCoords.y0,\n y1: hoverLabelCoords.y1,\n color,\n hovertemplate: false\n });\n delete pointData.index;\n if (trace.text && !Lib.isArrayOrTypedArray(trace.text)) {\n pointData.text = String(trace.text);\n } else pointData.text = trace.name;\n return [pointData];\n }\n }\n };\n }\n });\n\n // src/traces/scatter/select.js\n var require_select2 = __commonJS({\n \"src/traces/scatter/select.js\"(exports, module) {\n \"use strict\";\n var subtypes = require_subtypes();\n module.exports = function selectPoints(searchInfo, selectionTester) {\n var cd = searchInfo.cd;\n var xa = searchInfo.xaxis;\n var ya = searchInfo.yaxis;\n var selection = [];\n var trace = cd[0].trace;\n var i;\n var di;\n var x;\n var y;\n var hasOnlyLines = !subtypes.hasMarkers(trace) && !subtypes.hasText(trace);\n if (hasOnlyLines) return [];\n if (selectionTester === false) {\n for (i = 0; i < cd.length; i++) {\n cd[i].selected = 0;\n }\n } else {\n for (i = 0; i < cd.length; i++) {\n di = cd[i];\n x = xa.c2p(di.x);\n y = ya.c2p(di.y);\n if (di.i !== null && selectionTester.contains([x, y], false, i, searchInfo)) {\n selection.push({\n pointNumber: di.i,\n x: xa.c2d(di.x),\n y: ya.c2d(di.y)\n });\n di.selected = 1;\n } else {\n di.selected = 0;\n }\n }\n }\n return selection;\n };\n }\n });\n\n // src/plots/cartesian/attributes.js\n var require_attributes14 = __commonJS({\n \"src/plots/cartesian/attributes.js\"(exports, module) {\n \"use strict\";\n module.exports = {\n xaxis: {\n valType: \"subplotid\",\n dflt: \"x\",\n editType: \"calc+clearAxisTypes\"\n },\n yaxis: {\n valType: \"subplotid\",\n dflt: \"y\",\n editType: \"calc+clearAxisTypes\"\n }\n };\n }\n });\n\n // src/plots/cartesian/type_defaults.js\n var require_type_defaults = __commonJS({\n \"src/plots/cartesian/type_defaults.js\"(exports, module) {\n \"use strict\";\n var traceIs = require_registry().traceIs;\n var autoType = require_axis_autotype();\n module.exports = function handleTypeDefaults(containerIn, containerOut, coerce, options) {\n coerce(\"autotypenumbers\", options.autotypenumbersDflt);\n var axType = coerce(\"type\", (options.splomStash || {}).type);\n if (axType === \"-\") {\n setAutoType(containerOut, options.data);\n if (containerOut.type === \"-\") {\n containerOut.type = \"linear\";\n } else {\n containerIn.type = containerOut.type;\n }\n }\n };\n function setAutoType(ax, data) {\n if (ax.type !== \"-\") return;\n var id = ax._id;\n var axLetter = id.charAt(0);\n var i;\n if (id.indexOf(\"scene\") !== -1) id = axLetter;\n var d0 = getFirstNonEmptyTrace(data, id, axLetter);\n if (!d0) return;\n if (d0.type === \"histogram\" && axLetter === { v: \"y\", h: \"x\" }[d0.orientation || \"v\"]) {\n ax.type = \"linear\";\n return;\n }\n var calAttr = axLetter + \"calendar\";\n var calendar = d0[calAttr];\n var opts = { noMultiCategory: !traceIs(d0, \"cartesian\") || traceIs(d0, \"noMultiCategory\") };\n if (d0.type === \"box\" && d0._hasPreCompStats && axLetter === { h: \"x\", v: \"y\" }[d0.orientation || \"v\"]) {\n opts.noMultiCategory = true;\n }\n opts.autotypenumbers = ax.autotypenumbers;\n if (isBoxWithoutPositionCoords(d0, axLetter)) {\n var posLetter = getBoxPosLetter(d0);\n var boxPositions = [];\n for (i = 0; i < data.length; i++) {\n var trace = data[i];\n if (!traceIs(trace, \"box-violin\") || (trace[axLetter + \"axis\"] || axLetter) !== id) continue;\n if (trace[posLetter] !== void 0) boxPositions.push(trace[posLetter][0]);\n else if (trace.name !== void 0) boxPositions.push(trace.name);\n else boxPositions.push(\"text\");\n if (trace[calAttr] !== calendar) calendar = void 0;\n }\n ax.type = autoType(boxPositions, calendar, opts);\n } else if (d0.type === \"splom\") {\n var dimensions = d0.dimensions;\n var dim = dimensions[d0._axesDim[id]];\n if (dim.visible) ax.type = autoType(dim.values, calendar, opts);\n } else {\n ax.type = autoType(d0[axLetter] || [d0[axLetter + \"0\"]], calendar, opts);\n }\n }\n function getFirstNonEmptyTrace(data, id, axLetter) {\n for (var i = 0; i < data.length; i++) {\n var trace = data[i];\n if (trace.type === \"splom\" && trace._length > 0 && (trace[\"_\" + axLetter + \"axes\"] || {})[id]) {\n return trace;\n }\n if ((trace[axLetter + \"axis\"] || axLetter) === id) {\n if (isBoxWithoutPositionCoords(trace, axLetter)) {\n return trace;\n } else if ((trace[axLetter] || []).length || trace[axLetter + \"0\"]) {\n return trace;\n }\n }\n }\n }\n function getBoxPosLetter(trace) {\n return { v: \"x\", h: \"y\" }[trace.orientation || \"v\"];\n }\n function isBoxWithoutPositionCoords(trace, axLetter) {\n var posLetter = getBoxPosLetter(trace);\n var isBox = traceIs(trace, \"box-violin\");\n var isCandlestick = traceIs(trace._fullInput || {}, \"candlestick\");\n return isBox && !isCandlestick && axLetter === posLetter && trace[posLetter] === void 0 && trace[posLetter + \"0\"] === void 0;\n }\n }\n });\n\n // src/plots/cartesian/category_order_defaults.js\n var require_category_order_defaults = __commonJS({\n \"src/plots/cartesian/category_order_defaults.js\"(exports, module) {\n \"use strict\";\n var isTypedArraySpec = require_array().isTypedArraySpec;\n function findCategories(ax, opts) {\n var dataAttr = opts.dataAttr || ax._id.charAt(0);\n var lookup = {};\n var axData;\n var i, j;\n if (opts.axData) {\n axData = opts.axData;\n } else {\n axData = [];\n for (i = 0; i < opts.data.length; i++) {\n var trace = opts.data[i];\n if (trace[dataAttr + \"axis\"] === ax._id) {\n axData.push(trace);\n }\n }\n }\n for (i = 0; i < axData.length; i++) {\n var vals = axData[i][dataAttr];\n for (j = 0; j < vals.length; j++) {\n var v = vals[j];\n if (v !== null && v !== void 0) {\n lookup[v] = 1;\n }\n }\n }\n return Object.keys(lookup);\n }\n module.exports = function handleCategoryOrderDefaults(containerIn, containerOut, coerce, opts) {\n if (containerOut.type !== \"category\") return;\n var arrayIn = containerIn.categoryarray;\n var isValidArray = Array.isArray(arrayIn) && arrayIn.length > 0 || isTypedArraySpec(arrayIn);\n var orderDefault;\n if (isValidArray) orderDefault = \"array\";\n var order = coerce(\"categoryorder\", orderDefault);\n var array;\n if (order === \"array\") {\n array = coerce(\"categoryarray\");\n }\n if (!isValidArray && order === \"array\") {\n order = containerOut.categoryorder = \"trace\";\n }\n if (order === \"trace\") {\n containerOut._initialCategories = [];\n } else if (order === \"array\") {\n containerOut._initialCategories = array.slice();\n } else {\n array = findCategories(containerOut, opts).sort();\n if (order === \"category ascending\") {\n containerOut._initialCategories = array;\n } else if (order === \"category descending\") {\n containerOut._initialCategories = array.reverse();\n }\n }\n };\n }\n });\n\n // src/plots/cartesian/line_grid_defaults.js\n var require_line_grid_defaults = __commonJS({\n \"src/plots/cartesian/line_grid_defaults.js\"(exports, module) {\n \"use strict\";\n var colorMix = require_tinycolor().mix;\n var colorAttrs = require_attributes3();\n var Lib = require_lib();\n module.exports = function handleLineGridDefaults(containerIn, containerOut, coerce, opts) {\n opts = opts || {};\n var dfltColor = opts.dfltColor;\n function coerce2(attr, dflt) {\n return Lib.coerce2(containerIn, containerOut, opts.attributes, attr, dflt);\n }\n var lineColor = coerce2(\"linecolor\", dfltColor);\n var lineWidth = coerce2(\"linewidth\");\n var showLine = coerce(\"showline\", opts.showLine || !!lineColor || !!lineWidth);\n if (!showLine) {\n delete containerOut.linecolor;\n delete containerOut.linewidth;\n }\n var gridColorDflt = colorMix(dfltColor, opts.bgColor, opts.blend || colorAttrs.lightFraction).toRgbString();\n var gridColor = coerce2(\"gridcolor\", gridColorDflt);\n var gridWidth = coerce2(\"gridwidth\");\n var gridDash = coerce2(\"griddash\");\n var showGridLines = coerce(\n \"showgrid\",\n opts.showGrid || !!gridColor || !!gridWidth || !!gridDash\n );\n if (!showGridLines) {\n delete containerOut.gridcolor;\n delete containerOut.gridwidth;\n delete containerOut.griddash;\n }\n if (opts.hasMinor) {\n var minorGridColorDflt = colorMix(containerOut.gridcolor, opts.bgColor, 67).toRgbString();\n var minorGridColor = coerce2(\"minor.gridcolor\", minorGridColorDflt);\n var minorGridWidth = coerce2(\"minor.gridwidth\", containerOut.gridwidth || 1);\n var minorGridDash = coerce2(\"minor.griddash\", containerOut.griddash || \"solid\");\n var minorShowGridLines = coerce(\n \"minor.showgrid\",\n !!minorGridColor || !!minorGridWidth || !!minorGridDash\n );\n if (!minorShowGridLines) {\n delete containerOut.minor.gridcolor;\n delete containerOut.minor.gridwidth;\n delete containerOut.minor.griddash;\n }\n }\n if (!opts.noZeroLine) {\n var zeroLineColor = coerce2(\"zerolinecolor\", dfltColor);\n var zeroLineWidth = coerce2(\"zerolinewidth\");\n var showZeroLine = coerce(\"zeroline\", opts.showGrid || !!zeroLineColor || !!zeroLineWidth);\n if (!showZeroLine) {\n delete containerOut.zerolinecolor;\n delete containerOut.zerolinewidth;\n }\n }\n };\n }\n });\n\n // src/plots/cartesian/axis_defaults.js\n var require_axis_defaults = __commonJS({\n \"src/plots/cartesian/axis_defaults.js\"(exports, module) {\n \"use strict\";\n var isNumeric = require_fast_isnumeric();\n var Registry = require_registry();\n var Lib = require_lib();\n var Template = require_plot_template();\n var handleArrayContainerDefaults = require_array_container_defaults();\n var layoutAttributes = require_layout_attributes4();\n var handleTickValueDefaults = require_tick_value_defaults();\n var handleTickMarkDefaults = require_tick_mark_defaults();\n var handleTickLabelDefaults = require_tick_label_defaults();\n var handlePrefixSuffixDefaults = require_prefix_suffix_defaults();\n var handleCategoryOrderDefaults = require_category_order_defaults();\n var handleLineGridDefaults = require_line_grid_defaults();\n var handleRangeDefaults = require_range_defaults();\n var setConvert = require_set_convert();\n var DAY_OF_WEEK = require_constants2().WEEKDAY_PATTERN;\n var HOUR = require_constants2().HOUR_PATTERN;\n module.exports = function handleAxisDefaults(containerIn, containerOut, coerce, options, layoutOut) {\n var letter = options.letter;\n var font = options.font || {};\n var splomStash = options.splomStash || {};\n var visible = coerce(\"visible\", !options.visibleDflt);\n var axTemplate = containerOut._template || {};\n var axType = containerOut.type || axTemplate.type || \"-\";\n var ticklabelmode;\n if (axType === \"date\") {\n var handleCalendarDefaults = Registry.getComponentMethod(\"calendars\", \"handleDefaults\");\n handleCalendarDefaults(containerIn, containerOut, \"calendar\", options.calendar);\n if (!options.noTicklabelmode) {\n ticklabelmode = coerce(\"ticklabelmode\");\n }\n }\n if (!options.noTicklabelindex && (axType === \"date\" || axType === \"linear\")) {\n coerce(\"ticklabelindex\");\n }\n var ticklabelposition = \"\";\n if (!options.noTicklabelposition || axType === \"multicategory\") {\n ticklabelposition = Lib.coerce(containerIn, containerOut, {\n ticklabelposition: {\n valType: \"enumerated\",\n dflt: \"outside\",\n values: ticklabelmode === \"period\" ? [\"outside\", \"inside\"] : letter === \"x\" ? [\n \"outside\",\n \"inside\",\n \"outside left\",\n \"inside left\",\n \"outside right\",\n \"inside right\"\n ] : [\n \"outside\",\n \"inside\",\n \"outside top\",\n \"inside top\",\n \"outside bottom\",\n \"inside bottom\"\n ]\n }\n }, \"ticklabelposition\");\n }\n if (!options.noTicklabeloverflow) {\n coerce(\n \"ticklabeloverflow\",\n ticklabelposition.indexOf(\"inside\") !== -1 ? \"hide past domain\" : axType === \"category\" || axType === \"multicategory\" ? \"allow\" : \"hide past div\"\n );\n }\n setConvert(containerOut, layoutOut);\n handleRangeDefaults(containerIn, containerOut, coerce, options);\n handleCategoryOrderDefaults(containerIn, containerOut, coerce, options);\n if (axType !== \"category\" && !options.noHover) coerce(\"hoverformat\");\n var dfltColor = coerce(\"color\");\n var dfltFontColor = dfltColor !== layoutAttributes.color.dflt ? dfltColor : font.color;\n var dfltTitle = splomStash.label || layoutOut._dfltTitle[letter];\n handlePrefixSuffixDefaults(containerIn, containerOut, coerce, axType, options);\n if (!visible) return containerOut;\n coerce(\"title.text\", dfltTitle);\n Lib.coerceFont(coerce, \"title.font\", font, { overrideDflt: {\n size: Lib.bigFont(font.size),\n color: dfltFontColor\n } });\n handleTickValueDefaults(containerIn, containerOut, coerce, axType);\n var hasMinor = options.hasMinor;\n if (hasMinor) {\n Template.newContainer(containerOut, \"minor\");\n handleTickValueDefaults(containerIn, containerOut, coerce, axType, { isMinor: true });\n }\n handleTickLabelDefaults(containerIn, containerOut, coerce, axType, options);\n handleTickMarkDefaults(containerIn, containerOut, coerce, options);\n if (hasMinor) {\n var keepIsMinor = options.isMinor;\n options.isMinor = true;\n handleTickMarkDefaults(containerIn, containerOut, coerce, options);\n options.isMinor = keepIsMinor;\n }\n handleLineGridDefaults(containerIn, containerOut, coerce, {\n dfltColor,\n bgColor: options.bgColor,\n showGrid: options.showGrid,\n hasMinor,\n attributes: layoutAttributes\n });\n if (hasMinor && !containerOut.minor.ticks && !containerOut.minor.showgrid) {\n delete containerOut.minor;\n }\n if (containerOut.showline || containerOut.ticks) coerce(\"mirror\");\n var isMultiCategory = axType === \"multicategory\";\n if (!options.noTickson && (axType === \"category\" || isMultiCategory) && (containerOut.ticks || containerOut.showgrid)) {\n var ticksonDflt;\n if (isMultiCategory) ticksonDflt = \"boundaries\";\n var tickson = coerce(\"tickson\", ticksonDflt);\n if (tickson === \"boundaries\") {\n delete containerOut.ticklabelposition;\n }\n }\n if (isMultiCategory) {\n var showDividers = coerce(\"showdividers\");\n if (showDividers) {\n coerce(\"dividercolor\");\n coerce(\"dividerwidth\");\n }\n }\n if (axType === \"date\") {\n handleArrayContainerDefaults(containerIn, containerOut, {\n name: \"rangebreaks\",\n inclusionAttr: \"enabled\",\n handleItemDefaults: rangebreaksDefaults\n });\n if (!containerOut.rangebreaks.length) {\n delete containerOut.rangebreaks;\n } else {\n for (var k = 0; k < containerOut.rangebreaks.length; k++) {\n if (containerOut.rangebreaks[k].pattern === DAY_OF_WEEK) {\n containerOut._hasDayOfWeekBreaks = true;\n break;\n }\n }\n setConvert(containerOut, layoutOut);\n if (layoutOut._has(\"scattergl\") || layoutOut._has(\"splom\")) {\n for (var i = 0; i < options.data.length; i++) {\n var trace = options.data[i];\n if (trace.type === \"scattergl\" || trace.type === \"splom\") {\n trace.visible = false;\n Lib.warn(trace.type + \" traces do not work on axes with rangebreaks. Setting trace \" + trace.index + \" to `visible: false`.\");\n }\n }\n }\n }\n }\n return containerOut;\n };\n function rangebreaksDefaults(itemIn, itemOut, containerOut) {\n function coerce(attr, dflt) {\n return Lib.coerce(itemIn, itemOut, layoutAttributes.rangebreaks, attr, dflt);\n }\n var enabled = coerce(\"enabled\");\n if (enabled) {\n var bnds = coerce(\"bounds\");\n if (bnds && bnds.length >= 2) {\n var dfltPattern = \"\";\n var i, q;\n if (bnds.length === 2) {\n for (i = 0; i < 2; i++) {\n q = indexOfDay(bnds[i]);\n if (q) {\n dfltPattern = DAY_OF_WEEK;\n break;\n }\n }\n }\n var pattern = coerce(\"pattern\", dfltPattern);\n if (pattern === DAY_OF_WEEK) {\n for (i = 0; i < 2; i++) {\n q = indexOfDay(bnds[i]);\n if (q) {\n itemOut.bounds[i] = bnds[i] = q - 1;\n }\n }\n }\n if (pattern) {\n for (i = 0; i < 2; i++) {\n q = bnds[i];\n switch (pattern) {\n case DAY_OF_WEEK:\n if (!isNumeric(q)) {\n itemOut.enabled = false;\n return;\n }\n q = +q;\n if (q !== Math.floor(q) || // don't accept fractional days for mow\n q < 0 || q >= 7) {\n itemOut.enabled = false;\n return;\n }\n itemOut.bounds[i] = bnds[i] = q;\n break;\n case HOUR:\n if (!isNumeric(q)) {\n itemOut.enabled = false;\n return;\n }\n q = +q;\n if (q < 0 || q > 24) {\n itemOut.enabled = false;\n return;\n }\n itemOut.bounds[i] = bnds[i] = q;\n break;\n }\n }\n }\n if (containerOut.autorange === false) {\n var rng = containerOut.range;\n if (rng[0] < rng[1]) {\n if (bnds[0] < rng[0] && bnds[1] > rng[1]) {\n itemOut.enabled = false;\n return;\n }\n } else if (bnds[0] > rng[0] && bnds[1] < rng[1]) {\n itemOut.enabled = false;\n return;\n }\n }\n } else {\n var values = coerce(\"values\");\n if (values && values.length) {\n coerce(\"dvalue\");\n } else {\n itemOut.enabled = false;\n return;\n }\n }\n }\n }\n var dayStrToNum = {\n sun: 1,\n mon: 2,\n tue: 3,\n wed: 4,\n thu: 5,\n fri: 6,\n sat: 7\n };\n function indexOfDay(v) {\n if (typeof v !== \"string\") return;\n return dayStrToNum[v.substr(0, 3).toLowerCase()];\n }\n }\n });\n\n // src/plots/cartesian/position_defaults.js\n var require_position_defaults = __commonJS({\n \"src/plots/cartesian/position_defaults.js\"(exports, module) {\n \"use strict\";\n var isNumeric = require_fast_isnumeric();\n var Lib = require_lib();\n module.exports = function handlePositionDefaults(containerIn, containerOut, coerce, options) {\n var counterAxes = options.counterAxes || [];\n var overlayableAxes = options.overlayableAxes || [];\n var letter = options.letter;\n var grid = options.grid;\n var overlayingDomain = options.overlayingDomain;\n var dfltAnchor, dfltDomain, dfltSide, dfltPosition, dfltShift, dfltAutomargin;\n if (grid) {\n dfltDomain = grid._domains[letter][grid._axisMap[containerOut._id]];\n dfltAnchor = grid._anchors[containerOut._id];\n if (dfltDomain) {\n dfltSide = grid[letter + \"side\"].split(\" \")[0];\n dfltPosition = grid.domain[letter][dfltSide === \"right\" || dfltSide === \"top\" ? 1 : 0];\n }\n }\n dfltDomain = dfltDomain || [0, 1];\n dfltAnchor = dfltAnchor || (isNumeric(containerIn.position) ? \"free\" : counterAxes[0] || \"free\");\n dfltSide = dfltSide || (letter === \"x\" ? \"bottom\" : \"left\");\n dfltPosition = dfltPosition || 0;\n dfltShift = 0;\n dfltAutomargin = false;\n var anchor = Lib.coerce(containerIn, containerOut, {\n anchor: {\n valType: \"enumerated\",\n values: [\"free\"].concat(counterAxes),\n dflt: dfltAnchor\n }\n }, \"anchor\");\n var side = Lib.coerce(containerIn, containerOut, {\n side: {\n valType: \"enumerated\",\n values: letter === \"x\" ? [\"bottom\", \"top\"] : [\"left\", \"right\"],\n dflt: dfltSide\n }\n }, \"side\");\n if (anchor === \"free\") {\n if (letter === \"y\") {\n var autoshift = coerce(\"autoshift\");\n if (autoshift) {\n dfltPosition = side === \"left\" ? overlayingDomain[0] : overlayingDomain[1];\n dfltAutomargin = containerOut.automargin ? containerOut.automargin : true;\n dfltShift = side === \"left\" ? -3 : 3;\n }\n coerce(\"shift\", dfltShift);\n }\n coerce(\"position\", dfltPosition);\n }\n coerce(\"automargin\", dfltAutomargin);\n var overlaying = false;\n if (overlayableAxes.length) {\n overlaying = Lib.coerce(containerIn, containerOut, {\n overlaying: {\n valType: \"enumerated\",\n values: [false].concat(overlayableAxes),\n dflt: false\n }\n }, \"overlaying\");\n }\n if (!overlaying) {\n var domain = coerce(\"domain\", dfltDomain);\n if (domain[0] > domain[1] - 1 / 4096) containerOut.domain = dfltDomain;\n Lib.noneOrAll(containerIn.domain, containerOut.domain, dfltDomain);\n if (containerOut.tickmode === \"sync\") {\n containerOut.tickmode = \"auto\";\n }\n }\n coerce(\"layer\");\n return containerOut;\n };\n }\n });\n\n // src/plots/cartesian/layout_defaults.js\n var require_layout_defaults4 = __commonJS({\n \"src/plots/cartesian/layout_defaults.js\"(exports, module) {\n \"use strict\";\n var Lib = require_lib();\n var Color = require_color();\n var isUnifiedHover = require_helpers2().isUnifiedHover;\n var handleHoverModeDefaults = require_hovermode_defaults();\n var Template = require_plot_template();\n var basePlotLayoutAttributes = require_layout_attributes2();\n var layoutAttributes = require_layout_attributes4();\n var handleTypeDefaults = require_type_defaults();\n var handleAxisDefaults = require_axis_defaults();\n var constraints = require_constraints();\n var handlePositionDefaults = require_position_defaults();\n var axisIds = require_axis_ids();\n var id2name = axisIds.id2name;\n var name2id = axisIds.name2id;\n var AX_ID_PATTERN = require_constants2().AX_ID_PATTERN;\n var Registry = require_registry();\n var traceIs = Registry.traceIs;\n var getComponentMethod = Registry.getComponentMethod;\n function appendList(cont, k, item) {\n if (Array.isArray(cont[k])) cont[k].push(item);\n else cont[k] = [item];\n }\n module.exports = function supplyLayoutDefaults(layoutIn, layoutOut, fullData) {\n var autotypenumbersDflt = layoutOut.autotypenumbers;\n var ax2traces = {};\n var xaMayHide = {};\n var yaMayHide = {};\n var xaMustDisplay = {};\n var yaMustDisplay = {};\n var yaMustNotReverse = {};\n var yaMayReverse = {};\n var axHasImage = {};\n var outerTicks = {};\n var noGrids = {};\n var i, j;\n for (i = 0; i < fullData.length; i++) {\n var trace = fullData[i];\n if (!traceIs(trace, \"cartesian\")) continue;\n var xaName;\n if (trace.xaxis) {\n xaName = id2name(trace.xaxis);\n appendList(ax2traces, xaName, trace);\n } else if (trace.xaxes) {\n for (j = 0; j < trace.xaxes.length; j++) {\n appendList(ax2traces, id2name(trace.xaxes[j]), trace);\n }\n }\n var yaName;\n if (trace.yaxis) {\n yaName = id2name(trace.yaxis);\n appendList(ax2traces, yaName, trace);\n } else if (trace.yaxes) {\n for (j = 0; j < trace.yaxes.length; j++) {\n appendList(ax2traces, id2name(trace.yaxes[j]), trace);\n }\n }\n if (trace.type === \"funnel\") {\n if (trace.orientation === \"h\") {\n if (xaName) xaMayHide[xaName] = true;\n if (yaName) yaMayReverse[yaName] = true;\n } else {\n if (yaName) yaMayHide[yaName] = true;\n }\n } else if (trace.type === \"image\") {\n if (yaName) axHasImage[yaName] = true;\n if (xaName) axHasImage[xaName] = true;\n } else {\n if (yaName) {\n yaMustDisplay[yaName] = true;\n yaMustNotReverse[yaName] = true;\n }\n if (!traceIs(trace, \"carpet\") || trace.type === \"carpet\" && !trace._cheater) {\n if (xaName) xaMustDisplay[xaName] = true;\n }\n }\n if (trace.type === \"carpet\" && trace._cheater) {\n if (xaName) xaMayHide[xaName] = true;\n }\n if (traceIs(trace, \"2dMap\")) {\n outerTicks[xaName] = true;\n outerTicks[yaName] = true;\n }\n if (traceIs(trace, \"oriented\")) {\n var positionAxis = trace.orientation === \"h\" ? yaName : xaName;\n noGrids[positionAxis] = true;\n }\n }\n var subplots = layoutOut._subplots;\n var xIds = subplots.xaxis;\n var yIds = subplots.yaxis;\n var xNames = Lib.simpleMap(xIds, id2name);\n var yNames = Lib.simpleMap(yIds, id2name);\n var axNames = xNames.concat(yNames);\n var plotBgColor = Color.background;\n if (xIds.length && yIds.length) {\n plotBgColor = Lib.coerce(layoutIn, layoutOut, basePlotLayoutAttributes, \"plot_bgcolor\");\n }\n var bgColor = Color.combine(plotBgColor, layoutOut.paper_bgcolor);\n var axName;\n var axId;\n var axLetter;\n var axLayoutIn;\n var axLayoutOut;\n function newAxLayoutOut() {\n var traces = ax2traces[axName] || [];\n axLayoutOut._traceIndices = traces.map(function(t) {\n return t.index;\n });\n axLayoutOut._annIndices = [];\n axLayoutOut._shapeIndices = [];\n axLayoutOut._selectionIndices = [];\n axLayoutOut._imgIndices = [];\n axLayoutOut._subplotsWith = [];\n axLayoutOut._counterAxes = [];\n axLayoutOut._name = axLayoutOut._attr = axName;\n axLayoutOut._id = axId;\n }\n function coerce(attr, dflt) {\n return Lib.coerce(axLayoutIn, axLayoutOut, layoutAttributes, attr, dflt);\n }\n function coerce2(attr, dflt) {\n return Lib.coerce2(axLayoutIn, axLayoutOut, layoutAttributes, attr, dflt);\n }\n function getCounterAxes(axLetter2) {\n return axLetter2 === \"x\" ? yIds : xIds;\n }\n function getOverlayableAxes(axLetter2, axName2) {\n var list = axLetter2 === \"x\" ? xNames : yNames;\n var out = [];\n for (var j2 = 0; j2 < list.length; j2++) {\n var axName22 = list[j2];\n if (axName22 !== axName2 && !(layoutIn[axName22] || {}).overlaying) {\n out.push(name2id(axName22));\n }\n }\n return out;\n }\n var counterAxes = { x: getCounterAxes(\"x\"), y: getCounterAxes(\"y\") };\n var allAxisIds = counterAxes.x.concat(counterAxes.y);\n var missingMatchedAxisIdsLookup = {};\n var missingMatchedAxisIds = [];\n function addMissingMatchedAxis() {\n var matchesIn = axLayoutIn.matches;\n if (AX_ID_PATTERN.test(matchesIn) && allAxisIds.indexOf(matchesIn) === -1) {\n missingMatchedAxisIdsLookup[matchesIn] = axLayoutIn.type;\n missingMatchedAxisIds = Object.keys(missingMatchedAxisIdsLookup);\n }\n }\n var hovermode = handleHoverModeDefaults(layoutIn, layoutOut);\n var unifiedHover = isUnifiedHover(hovermode);\n for (i = 0; i < axNames.length; i++) {\n axName = axNames[i];\n axId = name2id(axName);\n axLetter = axName.charAt(0);\n if (!Lib.isPlainObject(layoutIn[axName])) {\n layoutIn[axName] = {};\n }\n axLayoutIn = layoutIn[axName];\n axLayoutOut = Template.newContainer(layoutOut, axName, axLetter + \"axis\");\n newAxLayoutOut();\n var visibleDflt = axLetter === \"x\" && !xaMustDisplay[axName] && xaMayHide[axName] || axLetter === \"y\" && !yaMustDisplay[axName] && yaMayHide[axName];\n var reverseDflt = axLetter === \"y\" && (!yaMustNotReverse[axName] && yaMayReverse[axName] || axHasImage[axName]);\n var defaultOptions = {\n hasMinor: true,\n letter: axLetter,\n font: layoutOut.font,\n outerTicks: outerTicks[axName],\n showGrid: !noGrids[axName],\n data: ax2traces[axName] || [],\n bgColor,\n calendar: layoutOut.calendar,\n automargin: true,\n visibleDflt,\n reverseDflt,\n autotypenumbersDflt,\n splomStash: ((layoutOut._splomAxes || {})[axLetter] || {})[axId],\n noAutotickangles: axLetter === \"y\"\n };\n coerce(\"uirevision\", layoutOut.uirevision);\n handleTypeDefaults(axLayoutIn, axLayoutOut, coerce, defaultOptions);\n handleAxisDefaults(axLayoutIn, axLayoutOut, coerce, defaultOptions, layoutOut);\n var unifiedSpike = unifiedHover && axLetter === hovermode.charAt(0);\n var spikecolor = coerce2(\"spikecolor\", unifiedHover ? axLayoutOut.color : void 0);\n var spikethickness = coerce2(\"spikethickness\", unifiedHover ? 1.5 : void 0);\n var spikedash = coerce2(\"spikedash\", unifiedHover ? \"dot\" : void 0);\n var spikemode = coerce2(\"spikemode\", unifiedHover ? \"across\" : void 0);\n var spikesnap = coerce2(\"spikesnap\");\n var showSpikes = coerce(\"showspikes\", !!unifiedSpike || !!spikecolor || !!spikethickness || !!spikedash || !!spikemode || !!spikesnap);\n if (!showSpikes) {\n delete axLayoutOut.spikecolor;\n delete axLayoutOut.spikethickness;\n delete axLayoutOut.spikedash;\n delete axLayoutOut.spikemode;\n delete axLayoutOut.spikesnap;\n }\n var overlayingAxis = id2name(axLayoutIn.overlaying);\n var overlayingAnchorDomain = [0, 1];\n if (layoutOut[overlayingAxis] !== void 0) {\n var overlayingAnchor = id2name(layoutOut[overlayingAxis].anchor);\n if (layoutOut[overlayingAnchor] !== void 0) {\n overlayingAnchorDomain = layoutOut[overlayingAnchor].domain;\n }\n }\n handlePositionDefaults(axLayoutIn, axLayoutOut, coerce, {\n letter: axLetter,\n counterAxes: counterAxes[axLetter],\n overlayableAxes: getOverlayableAxes(axLetter, axName),\n grid: layoutOut.grid,\n overlayingDomain: overlayingAnchorDomain\n });\n coerce(\"title.standoff\");\n addMissingMatchedAxis();\n axLayoutOut._input = axLayoutIn;\n }\n i = 0;\n while (i < missingMatchedAxisIds.length) {\n axId = missingMatchedAxisIds[i++];\n axName = id2name(axId);\n axLetter = axName.charAt(0);\n if (!Lib.isPlainObject(layoutIn[axName])) {\n layoutIn[axName] = {};\n }\n axLayoutIn = layoutIn[axName];\n axLayoutOut = Template.newContainer(layoutOut, axName, axLetter + \"axis\");\n newAxLayoutOut();\n var defaultOptions2 = {\n letter: axLetter,\n font: layoutOut.font,\n outerTicks: outerTicks[axName],\n showGrid: !noGrids[axName],\n data: [],\n bgColor,\n calendar: layoutOut.calendar,\n automargin: true,\n visibleDflt: false,\n reverseDflt: false,\n autotypenumbersDflt,\n splomStash: ((layoutOut._splomAxes || {})[axLetter] || {})[axId]\n };\n coerce(\"uirevision\", layoutOut.uirevision);\n axLayoutOut.type = missingMatchedAxisIdsLookup[axId] || \"linear\";\n handleAxisDefaults(axLayoutIn, axLayoutOut, coerce, defaultOptions2, layoutOut);\n handlePositionDefaults(axLayoutIn, axLayoutOut, coerce, {\n letter: axLetter,\n counterAxes: counterAxes[axLetter],\n overlayableAxes: getOverlayableAxes(axLetter, axName),\n grid: layoutOut.grid\n });\n coerce(\"fixedrange\");\n addMissingMatchedAxis();\n axLayoutOut._input = axLayoutIn;\n }\n var rangeSliderDefaults = getComponentMethod(\"rangeslider\", \"handleDefaults\");\n var rangeSelectorDefaults = getComponentMethod(\"rangeselector\", \"handleDefaults\");\n for (i = 0; i < xNames.length; i++) {\n axName = xNames[i];\n axLayoutIn = layoutIn[axName];\n axLayoutOut = layoutOut[axName];\n rangeSliderDefaults(layoutIn, layoutOut, axName);\n if (axLayoutOut.type === \"date\") {\n rangeSelectorDefaults(\n axLayoutIn,\n axLayoutOut,\n layoutOut,\n yNames,\n axLayoutOut.calendar\n );\n }\n coerce(\"fixedrange\");\n }\n for (i = 0; i < yNames.length; i++) {\n axName = yNames[i];\n axLayoutIn = layoutIn[axName];\n axLayoutOut = layoutOut[axName];\n var anchoredAxis = layoutOut[id2name(axLayoutOut.anchor)];\n var fixedRangeDflt = getComponentMethod(\"rangeslider\", \"isVisible\")(anchoredAxis);\n coerce(\"fixedrange\", fixedRangeDflt);\n }\n constraints.handleDefaults(layoutIn, layoutOut, {\n axIds: allAxisIds.concat(missingMatchedAxisIds).sort(axisIds.idSort),\n axHasImage\n });\n };\n }\n });\n\n // src/plots/cartesian/transition_axes.js\n var require_transition_axes = __commonJS({\n \"src/plots/cartesian/transition_axes.js\"(exports, module) {\n \"use strict\";\n var d3 = require_d3();\n var Registry = require_registry();\n var Lib = require_lib();\n var Drawing = require_drawing();\n var Axes = require_axes();\n module.exports = function transitionAxes(gd, edits, transitionOpts, makeOnCompleteCallback) {\n var fullLayout = gd._fullLayout;\n if (edits.length === 0) {\n Axes.redrawComponents(gd);\n return;\n }\n function unsetSubplotTransform(subplot) {\n var xa = subplot.xaxis;\n var ya = subplot.yaxis;\n fullLayout._defs.select(\"#\" + subplot.clipId + \"> rect\").call(Drawing.setTranslate, 0, 0).call(Drawing.setScale, 1, 1);\n subplot.plot.call(Drawing.setTranslate, xa._offset, ya._offset).call(Drawing.setScale, 1, 1);\n var traceGroups = subplot.plot.selectAll(\".scatterlayer .trace\");\n traceGroups.selectAll(\".point\").call(Drawing.setPointGroupScale, 1, 1);\n traceGroups.selectAll(\".textpoint\").call(Drawing.setTextPointsScale, 1, 1);\n traceGroups.call(Drawing.hideOutsideRangePoints, subplot);\n }\n function updateSubplot(edit, progress) {\n var plotinfo = edit.plotinfo;\n var xa = plotinfo.xaxis;\n var ya = plotinfo.yaxis;\n var xlen = xa._length;\n var ylen = ya._length;\n var editX = !!edit.xr1;\n var editY = !!edit.yr1;\n var viewBox = [];\n if (editX) {\n var xr0 = Lib.simpleMap(edit.xr0, xa.r2l);\n var xr1 = Lib.simpleMap(edit.xr1, xa.r2l);\n var dx0 = xr0[1] - xr0[0];\n var dx1 = xr1[1] - xr1[0];\n viewBox[0] = (xr0[0] * (1 - progress) + progress * xr1[0] - xr0[0]) / (xr0[1] - xr0[0]) * xlen;\n viewBox[2] = xlen * (1 - progress + progress * dx1 / dx0);\n xa.range[0] = xa.l2r(xr0[0] * (1 - progress) + progress * xr1[0]);\n xa.range[1] = xa.l2r(xr0[1] * (1 - progress) + progress * xr1[1]);\n } else {\n viewBox[0] = 0;\n viewBox[2] = xlen;\n }\n if (editY) {\n var yr0 = Lib.simpleMap(edit.yr0, ya.r2l);\n var yr1 = Lib.simpleMap(edit.yr1, ya.r2l);\n var dy0 = yr0[1] - yr0[0];\n var dy1 = yr1[1] - yr1[0];\n viewBox[1] = (yr0[1] * (1 - progress) + progress * yr1[1] - yr0[1]) / (yr0[0] - yr0[1]) * ylen;\n viewBox[3] = ylen * (1 - progress + progress * dy1 / dy0);\n ya.range[0] = xa.l2r(yr0[0] * (1 - progress) + progress * yr1[0]);\n ya.range[1] = ya.l2r(yr0[1] * (1 - progress) + progress * yr1[1]);\n } else {\n viewBox[1] = 0;\n viewBox[3] = ylen;\n }\n Axes.drawOne(gd, xa, { skipTitle: true });\n Axes.drawOne(gd, ya, { skipTitle: true });\n Axes.redrawComponents(gd, [xa._id, ya._id]);\n var xScaleFactor = editX ? xlen / viewBox[2] : 1;\n var yScaleFactor = editY ? ylen / viewBox[3] : 1;\n var clipDx = editX ? viewBox[0] : 0;\n var clipDy = editY ? viewBox[1] : 0;\n var fracDx = editX ? viewBox[0] / viewBox[2] * xlen : 0;\n var fracDy = editY ? viewBox[1] / viewBox[3] * ylen : 0;\n var plotDx = xa._offset - fracDx;\n var plotDy = ya._offset - fracDy;\n plotinfo.clipRect.call(Drawing.setTranslate, clipDx, clipDy).call(Drawing.setScale, 1 / xScaleFactor, 1 / yScaleFactor);\n plotinfo.plot.call(Drawing.setTranslate, plotDx, plotDy).call(Drawing.setScale, xScaleFactor, yScaleFactor);\n Drawing.setPointGroupScale(plotinfo.zoomScalePts, 1 / xScaleFactor, 1 / yScaleFactor);\n Drawing.setTextPointsScale(plotinfo.zoomScaleTxt, 1 / xScaleFactor, 1 / yScaleFactor);\n }\n var onComplete;\n if (makeOnCompleteCallback) {\n onComplete = makeOnCompleteCallback();\n }\n function transitionComplete() {\n var aobj = {};\n for (var i = 0; i < edits.length; i++) {\n var edit = edits[i];\n var xa = edit.plotinfo.xaxis;\n var ya = edit.plotinfo.yaxis;\n if (edit.xr1) aobj[xa._name + \".range\"] = edit.xr1.slice();\n if (edit.yr1) aobj[ya._name + \".range\"] = edit.yr1.slice();\n }\n onComplete && onComplete();\n return Registry.call(\"relayout\", gd, aobj).then(function() {\n for (var i2 = 0; i2 < edits.length; i2++) {\n unsetSubplotTransform(edits[i2].plotinfo);\n }\n });\n }\n function transitionInterrupt() {\n var aobj = {};\n for (var i = 0; i < edits.length; i++) {\n var edit = edits[i];\n var xa = edit.plotinfo.xaxis;\n var ya = edit.plotinfo.yaxis;\n if (edit.xr0) aobj[xa._name + \".range\"] = edit.xr0.slice();\n if (edit.yr0) aobj[ya._name + \".range\"] = edit.yr0.slice();\n }\n return Registry.call(\"relayout\", gd, aobj).then(function() {\n for (var i2 = 0; i2 < edits.length; i2++) {\n unsetSubplotTransform(edits[i2].plotinfo);\n }\n });\n }\n var t1, t2, raf;\n var easeFn = d3.ease(transitionOpts.easing);\n gd._transitionData._interruptCallbacks.push(function() {\n window.cancelAnimationFrame(raf);\n raf = null;\n return transitionInterrupt();\n });\n function doFrame() {\n t2 = Date.now();\n var tInterp = Math.min(1, (t2 - t1) / transitionOpts.duration);\n var progress = easeFn(tInterp);\n for (var i = 0; i < edits.length; i++) {\n updateSubplot(edits[i], progress);\n }\n if (t2 - t1 > transitionOpts.duration) {\n transitionComplete();\n raf = window.cancelAnimationFrame(doFrame);\n } else {\n raf = window.requestAnimationFrame(doFrame);\n }\n }\n t1 = Date.now();\n raf = window.requestAnimationFrame(doFrame);\n return Promise.resolve();\n };\n }\n });\n\n // src/plots/cartesian/index.js\n var require_cartesian = __commonJS({\n \"src/plots/cartesian/index.js\"(exports) {\n \"use strict\";\n var d3 = require_d3();\n var Registry = require_registry();\n var Lib = require_lib();\n var Plots = require_plots();\n var Drawing = require_drawing();\n var getModuleCalcData = require_get_data().getModuleCalcData;\n var axisIds = require_axis_ids();\n var constants = require_constants2();\n var xmlnsNamespaces = require_xmlns_namespaces();\n var ensureSingle = Lib.ensureSingle;\n function ensureSingleAndAddDatum(parent, nodeType, className) {\n return Lib.ensureSingle(parent, nodeType, className, function(s) {\n s.datum(className);\n });\n }\n var zindexSeparator = constants.zindexSeparator;\n exports.name = \"cartesian\";\n exports.attr = [\"xaxis\", \"yaxis\"];\n exports.idRoot = [\"x\", \"y\"];\n exports.idRegex = constants.idRegex;\n exports.attrRegex = constants.attrRegex;\n exports.attributes = require_attributes14();\n exports.layoutAttributes = require_layout_attributes4();\n exports.supplyLayoutDefaults = require_layout_defaults4();\n exports.transitionAxes = require_transition_axes();\n exports.finalizeSubplots = function(layoutIn, layoutOut) {\n var subplots = layoutOut._subplots;\n var xList = subplots.xaxis;\n var yList = subplots.yaxis;\n var spSVG = subplots.cartesian;\n var spAll = spSVG;\n var allX = {};\n var allY = {};\n var i, xi, yi;\n for (i = 0; i < spAll.length; i++) {\n var parts = spAll[i].split(\"y\");\n allX[parts[0]] = 1;\n allY[\"y\" + parts[1]] = 1;\n }\n for (i = 0; i < xList.length; i++) {\n xi = xList[i];\n if (!allX[xi]) {\n yi = (layoutIn[axisIds.id2name(xi)] || {}).anchor;\n if (!constants.idRegex.y.test(yi)) yi = \"y\";\n spSVG.push(xi + yi);\n spAll.push(xi + yi);\n if (!allY[yi]) {\n allY[yi] = 1;\n Lib.pushUnique(yList, yi);\n }\n }\n }\n for (i = 0; i < yList.length; i++) {\n yi = yList[i];\n if (!allY[yi]) {\n xi = (layoutIn[axisIds.id2name(yi)] || {}).anchor;\n if (!constants.idRegex.x.test(xi)) xi = \"x\";\n spSVG.push(xi + yi);\n spAll.push(xi + yi);\n if (!allX[xi]) {\n allX[xi] = 1;\n Lib.pushUnique(xList, xi);\n }\n }\n }\n if (!spAll.length) {\n xi = \"\";\n yi = \"\";\n for (var ki in layoutIn) {\n if (constants.attrRegex.test(ki)) {\n var axLetter = ki.charAt(0);\n if (axLetter === \"x\") {\n if (!xi || +ki.substr(5) < +xi.substr(5)) {\n xi = ki;\n }\n } else if (!yi || +ki.substr(5) < +yi.substr(5)) {\n yi = ki;\n }\n }\n }\n xi = xi ? axisIds.name2id(xi) : \"x\";\n yi = yi ? axisIds.name2id(yi) : \"y\";\n xList.push(xi);\n yList.push(yi);\n spSVG.push(xi + yi);\n }\n };\n exports.plot = function(gd, traces, transitionOpts, makeOnCompleteCallback) {\n var fullLayout = gd._fullLayout;\n var subplots = fullLayout._subplots.cartesian;\n var calcdata = gd.calcdata;\n var i;\n if (!Array.isArray(traces)) {\n traces = [];\n for (i = 0; i < calcdata.length; i++) traces.push(i);\n }\n var zindices = fullLayout._zindices;\n for (var z = 0; z < zindices.length; z++) {\n var zorder = zindices[z];\n for (i = 0; i < subplots.length; i++) {\n var subplot = subplots[i];\n var subplotInfo = fullLayout._plots[subplot];\n if (z > 0) {\n var idWithZ = subplotInfo.id;\n if (idWithZ.indexOf(zindexSeparator) !== -1) continue;\n idWithZ += zindexSeparator + (z + 1);\n subplotInfo = Lib.extendFlat({}, subplotInfo, {\n id: idWithZ,\n plot: fullLayout._cartesianlayer.selectAll(\".subplot\").select(\".\" + idWithZ)\n });\n }\n var cdSubplot = [];\n var pcd;\n for (var j = 0; j < calcdata.length; j++) {\n var cd = calcdata[j];\n var trace = cd[0].trace;\n if (zorder !== (trace.zorder || 0)) continue;\n if (trace.xaxis + trace.yaxis === subplot) {\n if (traces.indexOf(trace.index) !== -1 || trace.carpet) {\n if (pcd && pcd[0].trace.xaxis + pcd[0].trace.yaxis === subplot && [\"tonextx\", \"tonexty\", \"tonext\"].indexOf(trace.fill) !== -1 && cdSubplot.indexOf(pcd) === -1) {\n cdSubplot.push(pcd);\n }\n cdSubplot.push(cd);\n }\n pcd = cd;\n }\n }\n plotOne(gd, subplotInfo, cdSubplot, transitionOpts, makeOnCompleteCallback);\n }\n }\n };\n function plotOne(gd, plotinfo, cdSubplot, transitionOpts, makeOnCompleteCallback) {\n var traceLayerClasses = constants.traceLayerClasses;\n var fullLayout = gd._fullLayout;\n var zindices = fullLayout._zindices;\n var modules = fullLayout._modules;\n var _module, cdModuleAndOthers, cdModule;\n var layerData = [];\n var zoomScaleQueryParts = [];\n for (var z = 0; z < zindices.length; z++) {\n var zorder = zindices[z];\n for (var i = 0; i < modules.length; i++) {\n _module = modules[i];\n var name = _module.name;\n var categories = Registry.modules[name].categories;\n if (categories.svg) {\n var classBaseName = _module.layerName || name + \"layer\";\n var className = classBaseName + (z ? Number(z) + 1 : \"\");\n var plotMethod = _module.plot;\n cdModuleAndOthers = getModuleCalcData(cdSubplot, plotMethod, zorder);\n cdModule = cdModuleAndOthers[0];\n cdSubplot = cdModuleAndOthers[1];\n if (cdModule.length) {\n layerData.push({\n i: traceLayerClasses.indexOf(classBaseName),\n zindex: z,\n className,\n plotMethod,\n cdModule\n });\n }\n if (categories.zoomScale) {\n zoomScaleQueryParts.push(\".\" + className);\n }\n }\n }\n }\n layerData.sort(function(a, b) {\n return (a.zindex || 0) - (b.zindex || 0) || a.i - b.i;\n });\n var layers = plotinfo.plot.selectAll(\"g.mlayer\").data(layerData, function(d) {\n return d.className;\n });\n layers.enter().append(\"g\").attr(\"class\", function(d) {\n return d.className;\n }).classed(\"mlayer\", true).classed(\"rangeplot\", plotinfo.isRangePlot);\n layers.exit().remove();\n layers.order();\n layers.each(function(d) {\n var sel = d3.select(this);\n var className2 = d.className;\n d.plotMethod(\n gd,\n plotinfo,\n d.cdModule,\n sel,\n transitionOpts,\n makeOnCompleteCallback\n );\n if (constants.clipOnAxisFalseQuery.indexOf(\".\" + className2) === -1) {\n Drawing.setClipUrl(sel, plotinfo.layerClipId, gd);\n }\n });\n if (fullLayout._has(\"scattergl\")) {\n _module = Registry.getModule(\"scattergl\");\n cdModule = getModuleCalcData(cdSubplot, _module)[0];\n _module.plot(gd, plotinfo, cdModule);\n }\n if (!gd._context.staticPlot) {\n if (plotinfo._hasClipOnAxisFalse) {\n plotinfo.clipOnAxisFalseTraces = plotinfo.plot.selectAll(constants.clipOnAxisFalseQuery.join(\",\")).selectAll(\".trace\");\n }\n if (zoomScaleQueryParts.length) {\n var traces = plotinfo.plot.selectAll(zoomScaleQueryParts.join(\",\")).selectAll(\".trace\");\n plotinfo.zoomScalePts = traces.selectAll(\"path.point\");\n plotinfo.zoomScaleTxt = traces.selectAll(\".textpoint\");\n }\n }\n }\n exports.clean = function(newFullData, newFullLayout, oldFullData, oldFullLayout) {\n var oldPlots = oldFullLayout._plots || {};\n var newPlots = newFullLayout._plots || {};\n var oldSubplotList = oldFullLayout._subplots || {};\n var plotinfo;\n var i, k;\n if (oldFullLayout._hasOnlyLargeSploms && !newFullLayout._hasOnlyLargeSploms) {\n for (k in oldPlots) {\n plotinfo = oldPlots[k];\n if (plotinfo.plotgroup) plotinfo.plotgroup.remove();\n }\n }\n var hadGl = oldFullLayout._has && oldFullLayout._has(\"gl\");\n var hasGl = newFullLayout._has && newFullLayout._has(\"gl\");\n if (hadGl && !hasGl) {\n for (k in oldPlots) {\n plotinfo = oldPlots[k];\n if (plotinfo._scene) plotinfo._scene.destroy();\n }\n }\n if (oldSubplotList.xaxis && oldSubplotList.yaxis) {\n var oldAxIDs = axisIds.listIds({ _fullLayout: oldFullLayout });\n for (i = 0; i < oldAxIDs.length; i++) {\n var oldAxId = oldAxIDs[i];\n if (!newFullLayout[axisIds.id2name(oldAxId)]) {\n oldFullLayout._infolayer.selectAll(\".g-\" + oldAxId + \"title\").remove();\n }\n }\n }\n var hadCartesian = oldFullLayout._has && oldFullLayout._has(\"cartesian\");\n var hasCartesian = newFullLayout._has && newFullLayout._has(\"cartesian\");\n if (hadCartesian && !hasCartesian) {\n purgeSubplotLayers(oldFullLayout._cartesianlayer.selectAll(\".subplot\"), oldFullLayout);\n oldFullLayout._defs.selectAll(\".axesclip\").remove();\n delete oldFullLayout._axisConstraintGroups;\n delete oldFullLayout._axisMatchGroups;\n } else if (oldSubplotList.cartesian) {\n for (i = 0; i < oldSubplotList.cartesian.length; i++) {\n var oldSubplotId = oldSubplotList.cartesian[i];\n if (oldSubplotId.indexOf(zindexSeparator) !== -1) continue;\n if (!newPlots[oldSubplotId]) {\n var selector = \".\" + oldSubplotId + \",.\" + oldSubplotId + \"-x,.\" + oldSubplotId + \"-y\";\n oldFullLayout._cartesianlayer.selectAll(selector).remove();\n removeSubplotExtras(oldSubplotId, oldFullLayout);\n }\n }\n }\n };\n exports.drawFramework = function(gd) {\n var fullLayout = gd._fullLayout;\n var calcdata = gd.calcdata;\n var i;\n var traceZorderGroups = {};\n for (i = 0; i < calcdata.length; i++) {\n var cdi = calcdata[i][0];\n var trace = cdi.trace;\n var zi = trace.zorder || 0;\n if (!traceZorderGroups[zi]) traceZorderGroups[zi] = [];\n traceZorderGroups[zi].push(cdi);\n }\n var zindices = Object.keys(traceZorderGroups).map(Number).sort(Lib.sorterAsc);\n if (!zindices.length) zindices = [0];\n fullLayout._zindices = zindices;\n var initialSubplotData = makeSubplotData(gd);\n var len = initialSubplotData.length;\n var subplotData = [];\n for (i = 0; i < len; i++) {\n subplotData[i] = initialSubplotData[i].slice();\n }\n for (var z = 1; z < zindices.length; z++) {\n var newSubplotData = [];\n for (i = 0; i < len; i++) {\n newSubplotData[i] = initialSubplotData[i].slice();\n newSubplotData[i][0] += zindexSeparator + (z + 1);\n }\n subplotData = subplotData.concat(newSubplotData);\n }\n var subplotLayers = fullLayout._cartesianlayer.selectAll(\".subplot\").data(subplotData, String);\n subplotLayers.enter().append(\"g\").attr(\"class\", function(d) {\n return \"subplot \" + d[0];\n });\n subplotLayers.order();\n subplotLayers.exit().call(purgeSubplotLayers, fullLayout);\n subplotLayers.each(function(d) {\n var id = d[0];\n var posZ = id.indexOf(zindexSeparator);\n var hasZ = posZ !== -1;\n var idWithoutZ = hasZ ? id.slice(0, posZ) : id;\n var plotinfo = fullLayout._plots[id];\n if (!plotinfo) {\n plotinfo = Lib.extendFlat({}, fullLayout._plots[idWithoutZ]);\n if (plotinfo) {\n plotinfo.id = id;\n fullLayout._plots[id] = plotinfo;\n fullLayout._subplots.cartesian.push(id);\n }\n }\n if (plotinfo) {\n plotinfo.plotgroup = d3.select(this);\n makeSubplotLayer(gd, plotinfo);\n if (!hasZ) {\n plotinfo.draglayer = ensureSingle(fullLayout._draggers, \"g\", id);\n }\n }\n });\n };\n exports.rangePlot = function(gd, plotinfo, cdSubplot) {\n makeSubplotLayer(gd, plotinfo);\n plotOne(gd, plotinfo, cdSubplot);\n Plots.style(gd);\n };\n function makeSubplotData(gd) {\n var fullLayout = gd._fullLayout;\n var numZ = fullLayout._zindices.length;\n var ids = fullLayout._subplots.cartesian;\n var len = ids.length;\n var i, j, id, plotinfo, xa, ya;\n var regulars = [];\n var overlays = [];\n for (i = 0; i < len; i++) {\n id = ids[i];\n plotinfo = fullLayout._plots[id];\n xa = plotinfo.xaxis;\n ya = plotinfo.yaxis;\n var xa2 = xa._mainAxis;\n var ya2 = ya._mainAxis;\n var mainplot = xa2._id + ya2._id;\n var mainplotinfo = fullLayout._plots[mainplot];\n plotinfo.overlays = [];\n if (mainplot !== id && mainplotinfo) {\n plotinfo.mainplot = mainplot;\n plotinfo.mainplotinfo = mainplotinfo;\n overlays.push(id);\n } else {\n plotinfo.mainplot = void 0;\n plotinfo.mainplotinfo = void 0;\n regulars.push(id);\n }\n }\n for (i = 0; i < overlays.length; i++) {\n id = overlays[i];\n plotinfo = fullLayout._plots[id];\n plotinfo.mainplotinfo.overlays.push(plotinfo);\n }\n var subplotIds = regulars.concat(overlays);\n var subplotData = [];\n for (i = 0; i < len; i++) {\n id = subplotIds[i];\n plotinfo = fullLayout._plots[id];\n xa = plotinfo.xaxis;\n ya = plotinfo.yaxis;\n var d = [];\n for (var z = 1; z <= numZ; z++) {\n var zStr = \"\";\n if (z > 1) zStr += zindexSeparator + z;\n d.push(id + zStr);\n for (j = 0; j < plotinfo.overlays.length; j++) {\n d.push(plotinfo.overlays[j].id + zStr);\n }\n }\n d = d.concat([\n xa.layer,\n ya.layer,\n xa.overlaying || \"\",\n ya.overlaying || \"\"\n ]);\n subplotData.push(d);\n }\n return subplotData;\n }\n function makeSubplotLayer(gd, plotinfo) {\n var fullLayout = gd._fullLayout;\n var plotgroup = plotinfo.plotgroup;\n var id = plotinfo.id;\n var posZ = id.indexOf(zindexSeparator);\n var hasZ = posZ !== -1;\n var xLayer = constants.layerValue2layerClass[plotinfo.xaxis.layer];\n var yLayer = constants.layerValue2layerClass[plotinfo.yaxis.layer];\n var hasOnlyLargeSploms = fullLayout._hasOnlyLargeSploms;\n var hasMultipleZ = fullLayout._zindices.length > 1;\n var mainplotinfo = plotinfo.mainplotinfo;\n if (!plotinfo.mainplot || hasMultipleZ) {\n if (hasOnlyLargeSploms) {\n plotinfo.xlines = ensureSingle(plotgroup, \"path\", \"xlines-above\");\n plotinfo.ylines = ensureSingle(plotgroup, \"path\", \"ylines-above\");\n plotinfo.xaxislayer = ensureSingle(plotgroup, \"g\", \"xaxislayer-above\");\n plotinfo.yaxislayer = ensureSingle(plotgroup, \"g\", \"yaxislayer-above\");\n } else {\n if (!hasZ) {\n var backLayer = ensureSingle(plotgroup, \"g\", \"layer-subplot\");\n plotinfo.shapelayer = ensureSingle(backLayer, \"g\", \"shapelayer\");\n plotinfo.imagelayer = ensureSingle(backLayer, \"g\", \"imagelayer\");\n if (mainplotinfo && hasMultipleZ) {\n plotinfo.minorGridlayer = mainplotinfo.minorGridlayer;\n plotinfo.gridlayer = mainplotinfo.gridlayer;\n plotinfo.zerolinelayer = mainplotinfo.zerolinelayer;\n } else {\n plotinfo.minorGridlayer = ensureSingle(plotgroup, \"g\", \"minor-gridlayer\");\n plotinfo.gridlayer = ensureSingle(plotgroup, \"g\", \"gridlayer\");\n plotinfo.zerolinelayer = ensureSingle(plotgroup, \"g\", \"zerolinelayer\");\n }\n var betweenLayer = ensureSingle(plotgroup, \"g\", \"layer-between\");\n plotinfo.shapelayerBetween = ensureSingle(betweenLayer, \"g\", \"shapelayer\");\n plotinfo.imagelayerBetween = ensureSingle(betweenLayer, \"g\", \"imagelayer\");\n ensureSingle(plotgroup, \"path\", \"xlines-below\");\n ensureSingle(plotgroup, \"path\", \"ylines-below\");\n plotinfo.overlinesBelow = ensureSingle(plotgroup, \"g\", \"overlines-below\");\n ensureSingle(plotgroup, \"g\", \"xaxislayer-below\");\n ensureSingle(plotgroup, \"g\", \"yaxislayer-below\");\n plotinfo.overaxesBelow = ensureSingle(plotgroup, \"g\", \"overaxes-below\");\n }\n plotinfo.overplot = ensureSingle(plotgroup, \"g\", \"overplot\");\n plotinfo.plot = ensureSingle(plotinfo.overplot, \"g\", id);\n if (!hasZ) {\n plotinfo.xlines = ensureSingle(plotgroup, \"path\", \"xlines-above\");\n plotinfo.ylines = ensureSingle(plotgroup, \"path\", \"ylines-above\");\n plotinfo.overlinesAbove = ensureSingle(plotgroup, \"g\", \"overlines-above\");\n ensureSingle(plotgroup, \"g\", \"xaxislayer-above\");\n ensureSingle(plotgroup, \"g\", \"yaxislayer-above\");\n plotinfo.overaxesAbove = ensureSingle(plotgroup, \"g\", \"overaxes-above\");\n plotinfo.xlines = plotgroup.select(\".xlines-\" + xLayer);\n plotinfo.ylines = plotgroup.select(\".ylines-\" + yLayer);\n plotinfo.xaxislayer = plotgroup.select(\".xaxislayer-\" + xLayer);\n plotinfo.yaxislayer = plotgroup.select(\".yaxislayer-\" + yLayer);\n }\n }\n } else {\n var mainplotgroup = mainplotinfo.plotgroup;\n var xId = id + \"-x\";\n var yId = id + \"-y\";\n plotinfo.minorGridlayer = mainplotinfo.minorGridlayer;\n plotinfo.gridlayer = mainplotinfo.gridlayer;\n plotinfo.zerolinelayer = mainplotinfo.zerolinelayer;\n ensureSingle(mainplotinfo.overlinesBelow, \"path\", xId);\n ensureSingle(mainplotinfo.overlinesBelow, \"path\", yId);\n ensureSingle(mainplotinfo.overaxesBelow, \"g\", xId);\n ensureSingle(mainplotinfo.overaxesBelow, \"g\", yId);\n plotinfo.plot = ensureSingle(mainplotinfo.overplot, \"g\", id);\n ensureSingle(mainplotinfo.overlinesAbove, \"path\", xId);\n ensureSingle(mainplotinfo.overlinesAbove, \"path\", yId);\n ensureSingle(mainplotinfo.overaxesAbove, \"g\", xId);\n ensureSingle(mainplotinfo.overaxesAbove, \"g\", yId);\n plotinfo.xlines = mainplotgroup.select(\".overlines-\" + xLayer).select(\".\" + xId);\n plotinfo.ylines = mainplotgroup.select(\".overlines-\" + yLayer).select(\".\" + yId);\n plotinfo.xaxislayer = mainplotgroup.select(\".overaxes-\" + xLayer).select(\".\" + xId);\n plotinfo.yaxislayer = mainplotgroup.select(\".overaxes-\" + yLayer).select(\".\" + yId);\n }\n if (!hasZ) {\n if (!hasOnlyLargeSploms) {\n ensureSingleAndAddDatum(plotinfo.minorGridlayer, \"g\", plotinfo.xaxis._id);\n ensureSingleAndAddDatum(plotinfo.minorGridlayer, \"g\", plotinfo.yaxis._id);\n plotinfo.minorGridlayer.selectAll(\"g\").map(function(d) {\n return d[0];\n }).sort(axisIds.idSort);\n ensureSingleAndAddDatum(plotinfo.gridlayer, \"g\", plotinfo.xaxis._id);\n ensureSingleAndAddDatum(plotinfo.gridlayer, \"g\", plotinfo.yaxis._id);\n plotinfo.gridlayer.selectAll(\"g\").map(function(d) {\n return d[0];\n }).sort(axisIds.idSort);\n }\n plotinfo.xlines.style(\"fill\", \"none\").classed(\"crisp\", true);\n plotinfo.ylines.style(\"fill\", \"none\").classed(\"crisp\", true);\n }\n }\n function purgeSubplotLayers(layers, fullLayout) {\n if (!layers) return;\n var overlayIdsToRemove = {};\n layers.each(function(d) {\n var id = d[0];\n var plotgroup = d3.select(this);\n plotgroup.remove();\n removeSubplotExtras(id, fullLayout);\n overlayIdsToRemove[id] = true;\n });\n for (var k in fullLayout._plots) {\n var subplotInfo = fullLayout._plots[k];\n var overlays = subplotInfo.overlays || [];\n for (var j = 0; j < overlays.length; j++) {\n var overlayInfo = overlays[j];\n if (overlayIdsToRemove[overlayInfo.id]) {\n overlayInfo.plot.selectAll(\".trace\").remove();\n }\n }\n }\n }\n function removeSubplotExtras(subplotId, fullLayout) {\n fullLayout._draggers.selectAll(\"g.\" + subplotId).remove();\n fullLayout._defs.select(\"#clip\" + fullLayout._uid + subplotId + \"plot\").remove();\n }\n exports.toSVG = function(gd) {\n var imageRoot = gd._fullLayout._glimages;\n var root = d3.select(gd).selectAll(\".svg-container\");\n var canvases = root.filter(function(d, i) {\n return i === root.size() - 1;\n }).selectAll(\".gl-canvas-context, .gl-canvas-focus\");\n function canvasToImage() {\n var canvas = this;\n var imageData = canvas.toDataURL(\"image/png\");\n var image = imageRoot.append(\"svg:image\");\n image.attr({\n xmlns: xmlnsNamespaces.svg,\n \"xlink:href\": imageData,\n preserveAspectRatio: \"none\",\n x: 0,\n y: 0,\n width: canvas.style.width,\n height: canvas.style.height\n });\n }\n canvases.each(canvasToImage);\n };\n exports.updateFx = require_graph_interact().updateFx;\n }\n });\n\n // src/traces/scatter/index.js\n var require_scatter = __commonJS({\n \"src/traces/scatter/index.js\"(exports, module) {\n \"use strict\";\n var subtypes = require_subtypes();\n module.exports = {\n hasLines: subtypes.hasLines,\n hasMarkers: subtypes.hasMarkers,\n hasText: subtypes.hasText,\n isBubble: subtypes.isBubble,\n attributes: require_attributes12(),\n layoutAttributes: require_layout_attributes3(),\n supplyDefaults: require_defaults8(),\n crossTraceDefaults: require_cross_trace_defaults2(),\n supplyLayoutDefaults: require_layout_defaults3(),\n calc: require_calc3().calc,\n crossTraceCalc: require_cross_trace_calc2(),\n arraysToCalcdata: require_arrays_to_calcdata(),\n plot: require_plot(),\n colorbar: require_marker_colorbar(),\n formatLabels: require_format_labels(),\n style: require_style2().style,\n styleOnSelect: require_style2().styleOnSelect,\n hoverPoints: require_hover2(),\n selectPoints: require_select2(),\n animatable: true,\n moduleType: \"trace\",\n name: \"scatter\",\n basePlotModule: require_cartesian(),\n categories: [\n \"cartesian\",\n \"svg\",\n \"symbols\",\n \"errorBarsOK\",\n \"showLegend\",\n \"scatter-like\",\n \"zoomScale\"\n ],\n meta: {}\n };\n }\n });\n\n // src/components/annotations/draw_arrow_head.js\n var require_draw_arrow_head = __commonJS({\n \"src/components/annotations/draw_arrow_head.js\"(exports, module) {\n \"use strict\";\n var d3 = require_d3();\n var Color = require_color();\n var ARROWPATHS = require_arrow_paths();\n var Lib = require_lib();\n var strScale = Lib.strScale;\n var strRotate = Lib.strRotate;\n var strTranslate = Lib.strTranslate;\n module.exports = function drawArrowHead(el3, ends, options) {\n var el = el3.node();\n var headStyle = ARROWPATHS[options.arrowhead || 0];\n var startHeadStyle = ARROWPATHS[options.startarrowhead || 0];\n var scale = (options.arrowwidth || 1) * (options.arrowsize || 1);\n var startScale = (options.arrowwidth || 1) * (options.startarrowsize || 1);\n var doStart = ends.indexOf(\"start\") >= 0;\n var doEnd = ends.indexOf(\"end\") >= 0;\n var backOff = headStyle.backoff * scale + options.standoff;\n var startBackOff = startHeadStyle.backoff * startScale + options.startstandoff;\n var start, end, startRot, endRot;\n if (el.nodeName === \"line\") {\n start = { x: +el3.attr(\"x1\"), y: +el3.attr(\"y1\") };\n end = { x: +el3.attr(\"x2\"), y: +el3.attr(\"y2\") };\n var dx = start.x - end.x;\n var dy = start.y - end.y;\n startRot = Math.atan2(dy, dx);\n endRot = startRot + Math.PI;\n if (backOff && startBackOff) {\n if (backOff + startBackOff > Math.sqrt(dx * dx + dy * dy)) {\n hideLine();\n return;\n }\n }\n if (backOff) {\n if (backOff * backOff > dx * dx + dy * dy) {\n hideLine();\n return;\n }\n var backOffX = backOff * Math.cos(startRot);\n var backOffY = backOff * Math.sin(startRot);\n end.x += backOffX;\n end.y += backOffY;\n el3.attr({ x2: end.x, y2: end.y });\n }\n if (startBackOff) {\n if (startBackOff * startBackOff > dx * dx + dy * dy) {\n hideLine();\n return;\n }\n var startBackOffX = startBackOff * Math.cos(startRot);\n var startbackOffY = startBackOff * Math.sin(startRot);\n start.x -= startBackOffX;\n start.y -= startbackOffY;\n el3.attr({ x1: start.x, y1: start.y });\n }\n } else if (el.nodeName === \"path\") {\n var pathlen = el.getTotalLength();\n var dashArray = \"\";\n if (pathlen < backOff + startBackOff) {\n hideLine();\n return;\n }\n var start0 = el.getPointAtLength(0);\n var dstart = el.getPointAtLength(0.1);\n startRot = Math.atan2(start0.y - dstart.y, start0.x - dstart.x);\n start = el.getPointAtLength(Math.min(startBackOff, pathlen));\n dashArray = \"0px,\" + startBackOff + \"px,\";\n var end0 = el.getPointAtLength(pathlen);\n var dend = el.getPointAtLength(pathlen - 0.1);\n endRot = Math.atan2(end0.y - dend.y, end0.x - dend.x);\n end = el.getPointAtLength(Math.max(0, pathlen - backOff));\n var shortening = dashArray ? startBackOff + backOff : backOff;\n dashArray += pathlen - shortening + \"px,\" + pathlen + \"px\";\n el3.style(\"stroke-dasharray\", dashArray);\n }\n function hideLine() {\n el3.style(\"stroke-dasharray\", \"0px,100px\");\n }\n function drawhead(arrowHeadStyle, p, rot, arrowScale) {\n if (!arrowHeadStyle.path) return;\n if (arrowHeadStyle.noRotate) rot = 0;\n d3.select(el.parentNode).append(\"path\").attr({\n class: el3.attr(\"class\"),\n d: arrowHeadStyle.path,\n transform: strTranslate(p.x, p.y) + strRotate(rot * 180 / Math.PI) + strScale(arrowScale)\n }).style({\n fill: Color.rgb(options.arrowcolor),\n \"stroke-width\": 0\n });\n }\n if (doStart) drawhead(startHeadStyle, start, startRot, startScale);\n if (doEnd) drawhead(headStyle, end, endRot, scale);\n };\n }\n });\n\n // src/components/annotations/draw.js\n var require_draw4 = __commonJS({\n \"src/components/annotations/draw.js\"(exports, module) {\n \"use strict\";\n var d3 = require_d3();\n var Registry = require_registry();\n var Plots = require_plots();\n var Lib = require_lib();\n var strTranslate = Lib.strTranslate;\n var Axes = require_axes();\n var Color = require_color();\n var Drawing = require_drawing();\n var Fx = require_fx();\n var svgTextUtils = require_svg_text_utils();\n var setCursor = require_setcursor();\n var dragElement = require_dragelement();\n var arrayEditor = require_plot_template().arrayEditor;\n var drawArrowHead = require_draw_arrow_head();\n module.exports = {\n draw,\n drawOne,\n drawRaw\n };\n function draw(gd) {\n var fullLayout = gd._fullLayout;\n fullLayout._infolayer.selectAll(\".annotation\").remove();\n for (var i = 0; i < fullLayout.annotations.length; i++) {\n if (fullLayout.annotations[i].visible) {\n drawOne(gd, i);\n }\n }\n return Plots.previousPromises(gd);\n }\n function drawOne(gd, index) {\n var fullLayout = gd._fullLayout;\n var options = fullLayout.annotations[index] || {};\n var xa = Axes.getFromId(gd, options.xref);\n var ya = Axes.getFromId(gd, options.yref);\n if (xa) xa.setScale();\n if (ya) ya.setScale();\n drawRaw(gd, options, index, false, xa, ya);\n }\n function shiftPosition(axa, dAx, axLetter, gs, options) {\n var optAx = options[axLetter];\n var axRef = options[axLetter + \"ref\"];\n var vertical = axLetter.indexOf(\"y\") !== -1;\n var axDomainRef = Axes.getRefType(axRef) === \"domain\";\n var gsDim = vertical ? gs.h : gs.w;\n if (axa) {\n if (axDomainRef) {\n return optAx + (vertical ? -dAx : dAx) / axa._length;\n } else {\n return axa.p2r(axa.r2p(optAx) + dAx);\n }\n } else {\n return optAx + (vertical ? -dAx : dAx) / gsDim;\n }\n }\n function drawRaw(gd, options, index, subplotId, xa, ya) {\n var fullLayout = gd._fullLayout;\n var gs = gd._fullLayout._size;\n var edits = gd._context.edits;\n var className, containerStr;\n if (subplotId) {\n className = \"annotation-\" + subplotId;\n containerStr = subplotId + \".annotations\";\n } else {\n className = \"annotation\";\n containerStr = \"annotations\";\n }\n var editHelpers = arrayEditor(gd.layout, containerStr, options);\n var modifyBase = editHelpers.modifyBase;\n var modifyItem = editHelpers.modifyItem;\n var getUpdateObj = editHelpers.getUpdateObj;\n fullLayout._infolayer.selectAll(\".\" + className + '[data-index=\"' + index + '\"]').remove();\n var annClipID = \"clip\" + fullLayout._uid + \"_ann\" + index;\n if (!options._input || options.visible === false) {\n d3.selectAll(\"#\" + annClipID).remove();\n return;\n }\n var annPosPx = { x: {}, y: {} };\n var textangle = +options.textangle || 0;\n var annGroup = fullLayout._infolayer.append(\"g\").classed(className, true).attr(\"data-index\", String(index)).style(\"opacity\", options.opacity);\n var annTextGroup = annGroup.append(\"g\").classed(\"annotation-text-g\", true);\n var editTextPosition = edits[options.showarrow ? \"annotationTail\" : \"annotationPosition\"];\n var textEvents = options.captureevents || edits.annotationText || editTextPosition;\n function makeEventData(initialEvent) {\n var eventData = {\n index,\n annotation: options._input,\n fullAnnotation: options,\n event: initialEvent\n };\n if (subplotId) {\n eventData.subplotId = subplotId;\n }\n return eventData;\n }\n var annTextGroupInner = annTextGroup.append(\"g\").style(\"pointer-events\", textEvents ? \"all\" : null).call(setCursor, \"pointer\").on(\"click\", function() {\n gd._dragging = false;\n gd.emit(\"plotly_clickannotation\", makeEventData(d3.event));\n });\n if (options.hovertext) {\n annTextGroupInner.on(\"mouseover\", function() {\n var hoverOptions = options.hoverlabel;\n var hoverFont = hoverOptions.font;\n var bBox = this.getBoundingClientRect();\n var bBoxRef = gd.getBoundingClientRect();\n Fx.loneHover({\n x0: bBox.left - bBoxRef.left,\n x1: bBox.right - bBoxRef.left,\n y: (bBox.top + bBox.bottom) / 2 - bBoxRef.top,\n text: options.hovertext,\n color: hoverOptions.bgcolor,\n borderColor: hoverOptions.bordercolor,\n fontFamily: hoverFont.family,\n fontSize: hoverFont.size,\n fontColor: hoverFont.color,\n fontWeight: hoverFont.weight,\n fontStyle: hoverFont.style,\n fontVariant: hoverFont.variant,\n fontShadow: hoverFont.fontShadow,\n fontLineposition: hoverFont.fontLineposition,\n fontTextcase: hoverFont.fontTextcase\n }, {\n container: fullLayout._hoverlayer.node(),\n outerContainer: fullLayout._paper.node(),\n gd\n });\n }).on(\"mouseout\", function() {\n Fx.loneUnhover(fullLayout._hoverlayer.node());\n });\n }\n var borderwidth = options.borderwidth;\n var borderpad = options.borderpad;\n var borderfull = borderwidth + borderpad;\n var annTextBG = annTextGroupInner.append(\"rect\").attr(\"class\", \"bg\").style(\"stroke-width\", borderwidth + \"px\").call(Color.stroke, options.bordercolor).call(Color.fill, options.bgcolor);\n var isSizeConstrained = options.width || options.height;\n var annTextClip = fullLayout._topclips.selectAll(\"#\" + annClipID).data(isSizeConstrained ? [0] : []);\n annTextClip.enter().append(\"clipPath\").classed(\"annclip\", true).attr(\"id\", annClipID).append(\"rect\");\n annTextClip.exit().remove();\n var font = options.font;\n var text = fullLayout._meta ? Lib.templateString(options.text, fullLayout._meta) : options.text;\n var annText = annTextGroupInner.append(\"text\").classed(\"annotation-text\", true).text(text);\n function textLayout(s) {\n s.call(Drawing.font, font).attr({\n \"text-anchor\": {\n left: \"start\",\n right: \"end\"\n }[options.align] || \"middle\"\n });\n svgTextUtils.convertToTspans(s, gd, drawGraphicalElements);\n return s;\n }\n function drawGraphicalElements() {\n var anchor3 = annText.selectAll(\"a\");\n if (anchor3.size() === 1 && anchor3.text() === annText.text()) {\n var wholeLink = annTextGroupInner.insert(\"a\", \":first-child\").attr({\n \"xlink:xlink:href\": anchor3.attr(\"xlink:href\"),\n \"xlink:xlink:show\": anchor3.attr(\"xlink:show\")\n }).style({ cursor: \"pointer\" });\n wholeLink.node().appendChild(annTextBG.node());\n }\n var mathjaxGroup = annTextGroupInner.select(\".annotation-text-math-group\");\n var hasMathjax = !mathjaxGroup.empty();\n var anntextBB = Drawing.bBox(\n (hasMathjax ? mathjaxGroup : annText).node()\n );\n var textWidth = anntextBB.width;\n var textHeight = anntextBB.height;\n var annWidth = options.width || textWidth;\n var annHeight = options.height || textHeight;\n var outerWidth = Math.round(annWidth + 2 * borderfull);\n var outerHeight = Math.round(annHeight + 2 * borderfull);\n function shiftFraction(v, anchor2) {\n if (anchor2 === \"auto\") {\n if (v < 1 / 3) anchor2 = \"left\";\n else if (v > 2 / 3) anchor2 = \"right\";\n else anchor2 = \"center\";\n }\n return {\n center: 0,\n middle: 0,\n left: 0.5,\n bottom: -0.5,\n right: -0.5,\n top: 0.5\n }[anchor2];\n }\n var annotationIsOffscreen = false;\n var letters = [\"x\", \"y\"];\n for (var i = 0; i < letters.length; i++) {\n var axLetter = letters[i];\n var axRef = options[axLetter + \"ref\"] || axLetter;\n var tailRef = options[\"a\" + axLetter + \"ref\"];\n var ax = { x: xa, y: ya }[axLetter];\n var dimAngle = (textangle + (axLetter === \"x\" ? 0 : -90)) * Math.PI / 180;\n var annSizeFromWidth = outerWidth * Math.cos(dimAngle);\n var annSizeFromHeight = outerHeight * Math.sin(dimAngle);\n var annSize = Math.abs(annSizeFromWidth) + Math.abs(annSizeFromHeight);\n var anchor = options[axLetter + \"anchor\"];\n var overallShift = options[axLetter + \"shift\"] * (axLetter === \"x\" ? 1 : -1);\n var posPx = annPosPx[axLetter];\n var basePx;\n var textPadShift;\n var alignPosition;\n var autoAlignFraction;\n var textShift;\n var axRefType = Axes.getRefType(axRef);\n if (ax && axRefType !== \"domain\") {\n var posFraction = ax.r2fraction(options[axLetter]);\n if (posFraction < 0 || posFraction > 1) {\n if (tailRef === axRef) {\n posFraction = ax.r2fraction(options[\"a\" + axLetter]);\n if (posFraction < 0 || posFraction > 1) {\n annotationIsOffscreen = true;\n }\n } else {\n annotationIsOffscreen = true;\n }\n }\n basePx = ax._offset + ax.r2p(options[axLetter]);\n autoAlignFraction = 0.5;\n } else {\n var axRefTypeEqDomain = axRefType === \"domain\";\n if (axLetter === \"x\") {\n alignPosition = options[axLetter];\n basePx = axRefTypeEqDomain ? ax._offset + ax._length * alignPosition : basePx = gs.l + gs.w * alignPosition;\n } else {\n alignPosition = 1 - options[axLetter];\n basePx = axRefTypeEqDomain ? ax._offset + ax._length * alignPosition : basePx = gs.t + gs.h * alignPosition;\n }\n autoAlignFraction = options.showarrow ? 0.5 : alignPosition;\n }\n if (options.showarrow) {\n posPx.head = basePx;\n var arrowLength = options[\"a\" + axLetter];\n textShift = annSizeFromWidth * shiftFraction(0.5, options.xanchor) - annSizeFromHeight * shiftFraction(0.5, options.yanchor);\n if (tailRef === axRef) {\n var tailRefType = Axes.getRefType(tailRef);\n if (tailRefType === \"domain\") {\n if (axLetter === \"y\") {\n arrowLength = 1 - arrowLength;\n }\n posPx.tail = ax._offset + ax._length * arrowLength;\n } else if (tailRefType === \"paper\") {\n if (axLetter === \"y\") {\n arrowLength = 1 - arrowLength;\n posPx.tail = gs.t + gs.h * arrowLength;\n } else {\n posPx.tail = gs.l + gs.w * arrowLength;\n }\n } else {\n posPx.tail = ax._offset + ax.r2p(arrowLength);\n }\n textPadShift = textShift;\n } else {\n posPx.tail = basePx + arrowLength;\n textPadShift = textShift + arrowLength;\n }\n posPx.text = posPx.tail + textShift;\n var maxPx = fullLayout[axLetter === \"x\" ? \"width\" : \"height\"];\n if (axRef === \"paper\") {\n posPx.head = Lib.constrain(posPx.head, 1, maxPx - 1);\n }\n if (tailRef === \"pixel\") {\n var shiftPlus = -Math.max(posPx.tail - 3, posPx.text);\n var shiftMinus = Math.min(posPx.tail + 3, posPx.text) - maxPx;\n if (shiftPlus > 0) {\n posPx.tail += shiftPlus;\n posPx.text += shiftPlus;\n } else if (shiftMinus > 0) {\n posPx.tail -= shiftMinus;\n posPx.text -= shiftMinus;\n }\n }\n posPx.tail += overallShift;\n posPx.head += overallShift;\n } else {\n textShift = annSize * shiftFraction(autoAlignFraction, anchor);\n textPadShift = textShift;\n posPx.text = basePx + textShift;\n }\n posPx.text += overallShift;\n textShift += overallShift;\n textPadShift += overallShift;\n options[\"_\" + axLetter + \"padplus\"] = annSize / 2 + textPadShift;\n options[\"_\" + axLetter + \"padminus\"] = annSize / 2 - textPadShift;\n options[\"_\" + axLetter + \"size\"] = annSize;\n options[\"_\" + axLetter + \"shift\"] = textShift;\n }\n if (annotationIsOffscreen) {\n annTextGroupInner.remove();\n return;\n }\n var xShift = 0;\n var yShift = 0;\n if (options.align !== \"left\") {\n xShift = (annWidth - textWidth) * (options.align === \"center\" ? 0.5 : 1);\n }\n if (options.valign !== \"top\") {\n yShift = (annHeight - textHeight) * (options.valign === \"middle\" ? 0.5 : 1);\n }\n if (hasMathjax) {\n mathjaxGroup.select(\"svg\").attr({\n x: borderfull + xShift - 1,\n y: borderfull + yShift\n }).call(Drawing.setClipUrl, isSizeConstrained ? annClipID : null, gd);\n } else {\n var texty = borderfull + yShift - anntextBB.top;\n var textx = borderfull + xShift - anntextBB.left;\n annText.call(svgTextUtils.positionText, textx, texty).call(Drawing.setClipUrl, isSizeConstrained ? annClipID : null, gd);\n }\n annTextClip.select(\"rect\").call(\n Drawing.setRect,\n borderfull,\n borderfull,\n annWidth,\n annHeight\n );\n annTextBG.call(\n Drawing.setRect,\n borderwidth / 2,\n borderwidth / 2,\n outerWidth - borderwidth,\n outerHeight - borderwidth\n );\n annTextGroupInner.call(\n Drawing.setTranslate,\n Math.round(annPosPx.x.text - outerWidth / 2),\n Math.round(annPosPx.y.text - outerHeight / 2)\n );\n annTextGroup.attr({ transform: \"rotate(\" + textangle + \",\" + annPosPx.x.text + \",\" + annPosPx.y.text + \")\" });\n var drawArrow = function(dx, dy) {\n annGroup.selectAll(\".annotation-arrow-g\").remove();\n var headX = annPosPx.x.head;\n var headY = annPosPx.y.head;\n var tailX = annPosPx.x.tail + dx;\n var tailY = annPosPx.y.tail + dy;\n var textX = annPosPx.x.text + dx;\n var textY = annPosPx.y.text + dy;\n var transform = Lib.rotationXYMatrix(textangle, textX, textY);\n var applyTransform = Lib.apply2DTransform(transform);\n var applyTransform2 = Lib.apply2DTransform2(transform);\n var width = +annTextBG.attr(\"width\");\n var height = +annTextBG.attr(\"height\");\n var xLeft = textX - 0.5 * width;\n var xRight = xLeft + width;\n var yTop = textY - 0.5 * height;\n var yBottom = yTop + height;\n var edges = [\n [xLeft, yTop, xLeft, yBottom],\n [xLeft, yBottom, xRight, yBottom],\n [xRight, yBottom, xRight, yTop],\n [xRight, yTop, xLeft, yTop]\n ].map(applyTransform2);\n if (edges.reduce(function(a, x) {\n return a ^ !!Lib.segmentsIntersect(\n headX,\n headY,\n headX + 1e6,\n headY + 1e6,\n x[0],\n x[1],\n x[2],\n x[3]\n );\n }, false)) {\n return;\n }\n edges.forEach(function(x) {\n var p = Lib.segmentsIntersect(\n tailX,\n tailY,\n headX,\n headY,\n x[0],\n x[1],\n x[2],\n x[3]\n );\n if (p) {\n tailX = p.x;\n tailY = p.y;\n }\n });\n var strokewidth = options.arrowwidth;\n var arrowColor = options.arrowcolor;\n var arrowSide = options.arrowside;\n var arrowGroup = annGroup.append(\"g\").style({ opacity: Color.opacity(arrowColor) }).classed(\"annotation-arrow-g\", true);\n var arrow = arrowGroup.append(\"path\").attr(\"d\", \"M\" + tailX + \",\" + tailY + \"L\" + headX + \",\" + headY).style(\"stroke-width\", strokewidth + \"px\").call(Color.stroke, Color.rgb(arrowColor));\n drawArrowHead(arrow, arrowSide, options);\n if (edits.annotationPosition && arrow.node().parentNode && !subplotId) {\n var arrowDragHeadX = headX;\n var arrowDragHeadY = headY;\n if (options.standoff) {\n var arrowLength2 = Math.sqrt(Math.pow(headX - tailX, 2) + Math.pow(headY - tailY, 2));\n arrowDragHeadX += options.standoff * (tailX - headX) / arrowLength2;\n arrowDragHeadY += options.standoff * (tailY - headY) / arrowLength2;\n }\n var arrowDrag = arrowGroup.append(\"path\").classed(\"annotation-arrow\", true).classed(\"anndrag\", true).classed(\"cursor-move\", true).attr({\n d: \"M3,3H-3V-3H3ZM0,0L\" + (tailX - arrowDragHeadX) + \",\" + (tailY - arrowDragHeadY),\n transform: strTranslate(arrowDragHeadX, arrowDragHeadY)\n }).style(\"stroke-width\", strokewidth + 6 + \"px\").call(Color.stroke, \"rgba(0,0,0,0)\").call(Color.fill, \"rgba(0,0,0,0)\");\n var annx0, anny0;\n dragElement.init({\n element: arrowDrag.node(),\n gd,\n prepFn: function() {\n var pos = Drawing.getTranslate(annTextGroupInner);\n annx0 = pos.x;\n anny0 = pos.y;\n if (xa && xa.autorange) {\n modifyBase(xa._name + \".autorange\", true);\n }\n if (ya && ya.autorange) {\n modifyBase(ya._name + \".autorange\", true);\n }\n },\n moveFn: function(dx2, dy2) {\n var annxy0 = applyTransform(annx0, anny0);\n var xcenter = annxy0[0] + dx2;\n var ycenter = annxy0[1] + dy2;\n annTextGroupInner.call(Drawing.setTranslate, xcenter, ycenter);\n modifyItem(\n \"x\",\n shiftPosition(xa, dx2, \"x\", gs, options)\n );\n modifyItem(\n \"y\",\n shiftPosition(ya, dy2, \"y\", gs, options)\n );\n if (options.axref === options.xref) {\n modifyItem(\"ax\", shiftPosition(xa, dx2, \"ax\", gs, options));\n }\n if (options.ayref === options.yref) {\n modifyItem(\"ay\", shiftPosition(ya, dy2, \"ay\", gs, options));\n }\n arrowGroup.attr(\"transform\", strTranslate(dx2, dy2));\n annTextGroup.attr({\n transform: \"rotate(\" + textangle + \",\" + xcenter + \",\" + ycenter + \")\"\n });\n },\n doneFn: function() {\n Registry.call(\"_guiRelayout\", gd, getUpdateObj());\n var notesBox = document.querySelector(\".js-notes-box-panel\");\n if (notesBox) notesBox.redraw(notesBox.selectedObj);\n }\n });\n }\n };\n if (options.showarrow) drawArrow(0, 0);\n if (editTextPosition) {\n var baseTextTransform;\n dragElement.init({\n element: annTextGroupInner.node(),\n gd,\n prepFn: function() {\n baseTextTransform = annTextGroup.attr(\"transform\");\n },\n moveFn: function(dx, dy) {\n var csr = \"pointer\";\n if (options.showarrow) {\n if (options.axref === options.xref) {\n modifyItem(\"ax\", shiftPosition(xa, dx, \"ax\", gs, options));\n } else {\n modifyItem(\"ax\", options.ax + dx);\n }\n if (options.ayref === options.yref) {\n modifyItem(\"ay\", shiftPosition(ya, dy, \"ay\", gs.w, options));\n } else {\n modifyItem(\"ay\", options.ay + dy);\n }\n drawArrow(dx, dy);\n } else if (!subplotId) {\n var xUpdate, yUpdate;\n if (xa) {\n xUpdate = shiftPosition(xa, dx, \"x\", gs, options);\n } else {\n var widthFraction = options._xsize / gs.w;\n var xLeft = options.x + (options._xshift - options.xshift) / gs.w - widthFraction / 2;\n xUpdate = dragElement.align(\n xLeft + dx / gs.w,\n widthFraction,\n 0,\n 1,\n options.xanchor\n );\n }\n if (ya) {\n yUpdate = shiftPosition(ya, dy, \"y\", gs, options);\n } else {\n var heightFraction = options._ysize / gs.h;\n var yBottom = options.y - (options._yshift + options.yshift) / gs.h - heightFraction / 2;\n yUpdate = dragElement.align(\n yBottom - dy / gs.h,\n heightFraction,\n 0,\n 1,\n options.yanchor\n );\n }\n modifyItem(\"x\", xUpdate);\n modifyItem(\"y\", yUpdate);\n if (!xa || !ya) {\n csr = dragElement.getCursor(\n xa ? 0.5 : xUpdate,\n ya ? 0.5 : yUpdate,\n options.xanchor,\n options.yanchor\n );\n }\n } else return;\n annTextGroup.attr({\n transform: strTranslate(dx, dy) + baseTextTransform\n });\n setCursor(annTextGroupInner, csr);\n },\n clickFn: function(_, initialEvent) {\n if (options.captureevents) {\n gd.emit(\"plotly_clickannotation\", makeEventData(initialEvent));\n }\n },\n doneFn: function() {\n setCursor(annTextGroupInner);\n Registry.call(\"_guiRelayout\", gd, getUpdateObj());\n var notesBox = document.querySelector(\".js-notes-box-panel\");\n if (notesBox) notesBox.redraw(notesBox.selectedObj);\n }\n });\n }\n }\n if (edits.annotationText) {\n annText.call(svgTextUtils.makeEditable, { delegate: annTextGroupInner, gd }).call(textLayout).on(\"edit\", function(_text) {\n options.text = _text;\n this.call(textLayout);\n modifyItem(\"text\", _text);\n if (xa && xa.autorange) {\n modifyBase(xa._name + \".autorange\", true);\n }\n if (ya && ya.autorange) {\n modifyBase(ya._name + \".autorange\", true);\n }\n Registry.call(\"_guiRelayout\", gd, getUpdateObj());\n });\n } else annText.call(textLayout);\n }\n }\n });\n\n // src/components/annotations/click.js\n var require_click2 = __commonJS({\n \"src/components/annotations/click.js\"(exports, module) {\n \"use strict\";\n var Lib = require_lib();\n var Registry = require_registry();\n var arrayEditor = require_plot_template().arrayEditor;\n module.exports = {\n hasClickToShow,\n onClick\n };\n function hasClickToShow(gd, hoverData) {\n var sets = getToggleSets(gd, hoverData);\n return sets.on.length > 0 || sets.explicitOff.length > 0;\n }\n function onClick(gd, hoverData) {\n var toggleSets = getToggleSets(gd, hoverData);\n var onSet = toggleSets.on;\n var offSet = toggleSets.off.concat(toggleSets.explicitOff);\n var update = {};\n var annotationsOut = gd._fullLayout.annotations;\n var i, editHelpers;\n if (!(onSet.length || offSet.length)) return;\n for (i = 0; i < onSet.length; i++) {\n editHelpers = arrayEditor(gd.layout, \"annotations\", annotationsOut[onSet[i]]);\n editHelpers.modifyItem(\"visible\", true);\n Lib.extendFlat(update, editHelpers.getUpdateObj());\n }\n for (i = 0; i < offSet.length; i++) {\n editHelpers = arrayEditor(gd.layout, \"annotations\", annotationsOut[offSet[i]]);\n editHelpers.modifyItem(\"visible\", false);\n Lib.extendFlat(update, editHelpers.getUpdateObj());\n }\n return Registry.call(\"update\", gd, {}, update);\n }\n function getToggleSets(gd, hoverData) {\n var annotations = gd._fullLayout.annotations;\n var onSet = [];\n var offSet = [];\n var explicitOffSet = [];\n var hoverLen = (hoverData || []).length;\n var i, j, anni, showMode, pointj, xa, ya, toggleType;\n for (i = 0; i < annotations.length; i++) {\n anni = annotations[i];\n showMode = anni.clicktoshow;\n if (showMode) {\n for (j = 0; j < hoverLen; j++) {\n pointj = hoverData[j];\n xa = pointj.xaxis;\n ya = pointj.yaxis;\n if (xa._id === anni.xref && ya._id === anni.yref && xa.d2r(pointj.x) === clickData2r(anni._xclick, xa) && ya.d2r(pointj.y) === clickData2r(anni._yclick, ya)) {\n if (anni.visible) {\n if (showMode === \"onout\") toggleType = offSet;\n else toggleType = explicitOffSet;\n } else {\n toggleType = onSet;\n }\n toggleType.push(i);\n break;\n }\n }\n if (j === hoverLen) {\n if (anni.visible && showMode === \"onout\") offSet.push(i);\n }\n }\n }\n return { on: onSet, off: offSet, explicitOff: explicitOffSet };\n }\n function clickData2r(d, ax) {\n return ax.type === \"log\" ? ax.l2r(d) : ax.d2r(d);\n }\n }\n });\n\n // src/components/annotations/common_defaults.js\n var require_common_defaults = __commonJS({\n \"src/components/annotations/common_defaults.js\"(exports, module) {\n \"use strict\";\n var Lib = require_lib();\n var Color = require_color();\n module.exports = function handleAnnotationCommonDefaults(annIn, annOut, fullLayout, coerce) {\n coerce(\"opacity\");\n var bgColor = coerce(\"bgcolor\");\n var borderColor = coerce(\"bordercolor\");\n var borderOpacity = Color.opacity(borderColor);\n coerce(\"borderpad\");\n var borderWidth = coerce(\"borderwidth\");\n var showArrow = coerce(\"showarrow\");\n coerce(\"text\", showArrow ? \" \" : fullLayout._dfltTitle.annotation);\n coerce(\"textangle\");\n Lib.coerceFont(coerce, \"font\", fullLayout.font);\n coerce(\"width\");\n coerce(\"align\");\n var h = coerce(\"height\");\n if (h) coerce(\"valign\");\n if (showArrow) {\n var arrowside = coerce(\"arrowside\");\n var arrowhead;\n var arrowsize;\n if (arrowside.indexOf(\"end\") !== -1) {\n arrowhead = coerce(\"arrowhead\");\n arrowsize = coerce(\"arrowsize\");\n }\n if (arrowside.indexOf(\"start\") !== -1) {\n coerce(\"startarrowhead\", arrowhead);\n coerce(\"startarrowsize\", arrowsize);\n }\n coerce(\"arrowcolor\", borderOpacity ? annOut.bordercolor : Color.defaultLine);\n coerce(\"arrowwidth\", (borderOpacity && borderWidth || 1) * 2);\n coerce(\"standoff\");\n coerce(\"startstandoff\");\n }\n var hoverText = coerce(\"hovertext\");\n var globalHoverLabel = fullLayout.hoverlabel || {};\n if (hoverText) {\n var hoverBG = coerce(\n \"hoverlabel.bgcolor\",\n globalHoverLabel.bgcolor || (Color.opacity(bgColor) ? Color.rgb(bgColor) : Color.defaultLine)\n );\n var hoverBorder = coerce(\n \"hoverlabel.bordercolor\",\n globalHoverLabel.bordercolor || Color.contrast(hoverBG)\n );\n var fontDflt = Lib.extendFlat({}, globalHoverLabel.font);\n if (!fontDflt.color) {\n fontDflt.color = hoverBorder;\n }\n Lib.coerceFont(coerce, \"hoverlabel.font\", fontDflt);\n }\n coerce(\"captureevents\", !!hoverText);\n };\n }\n });\n\n // src/components/annotations/defaults.js\n var require_defaults9 = __commonJS({\n \"src/components/annotations/defaults.js\"(exports, module) {\n \"use strict\";\n var Lib = require_lib();\n var Axes = require_axes();\n var handleArrayContainerDefaults = require_array_container_defaults();\n var handleAnnotationCommonDefaults = require_common_defaults();\n var attributes = require_attributes11();\n module.exports = function supplyLayoutDefaults(layoutIn, layoutOut) {\n handleArrayContainerDefaults(layoutIn, layoutOut, {\n name: \"annotations\",\n handleItemDefaults: handleAnnotationDefaults\n });\n };\n function handleAnnotationDefaults(annIn, annOut, fullLayout) {\n function coerce(attr, dflt) {\n return Lib.coerce(annIn, annOut, attributes, attr, dflt);\n }\n var visible = coerce(\"visible\");\n var clickToShow = coerce(\"clicktoshow\");\n if (!(visible || clickToShow)) return;\n handleAnnotationCommonDefaults(annIn, annOut, fullLayout, coerce);\n var showArrow = annOut.showarrow;\n var axLetters = [\"x\", \"y\"];\n var arrowPosDflt = [-10, -30];\n var gdMock = { _fullLayout: fullLayout };\n for (var i = 0; i < 2; i++) {\n var axLetter = axLetters[i];\n var axRef = Axes.coerceRef(annIn, annOut, gdMock, axLetter, \"\", \"paper\");\n if (axRef !== \"paper\") {\n var ax = Axes.getFromId(gdMock, axRef);\n ax._annIndices.push(annOut._index);\n }\n Axes.coercePosition(annOut, gdMock, coerce, axRef, axLetter, 0.5);\n if (showArrow) {\n var arrowPosAttr = \"a\" + axLetter;\n var aaxRef = Axes.coerceRef(\n annIn,\n annOut,\n gdMock,\n arrowPosAttr,\n \"pixel\",\n [\"pixel\", \"paper\"]\n );\n if (aaxRef !== \"pixel\" && aaxRef !== axRef) {\n aaxRef = annOut[arrowPosAttr] = \"pixel\";\n }\n var aDflt = aaxRef === \"pixel\" ? arrowPosDflt[i] : 0.4;\n Axes.coercePosition(annOut, gdMock, coerce, aaxRef, arrowPosAttr, aDflt);\n }\n coerce(axLetter + \"anchor\");\n coerce(axLetter + \"shift\");\n }\n Lib.noneOrAll(annIn, annOut, [\"x\", \"y\"]);\n if (showArrow) {\n Lib.noneOrAll(annIn, annOut, [\"ax\", \"ay\"]);\n }\n if (clickToShow) {\n var xClick = coerce(\"xclick\");\n var yClick = coerce(\"yclick\");\n annOut._xclick = xClick === void 0 ? annOut.x : Axes.cleanPosition(xClick, gdMock, annOut.xref);\n annOut._yclick = yClick === void 0 ? annOut.y : Axes.cleanPosition(yClick, gdMock, annOut.yref);\n }\n }\n }\n });\n\n // src/components/annotations/calc_autorange.js\n var require_calc_autorange = __commonJS({\n \"src/components/annotations/calc_autorange.js\"(exports, module) {\n \"use strict\";\n var Lib = require_lib();\n var Axes = require_axes();\n var draw = require_draw4().draw;\n module.exports = function calcAutorange(gd) {\n var fullLayout = gd._fullLayout;\n var annotationList = Lib.filterVisible(fullLayout.annotations);\n if (annotationList.length && gd._fullData.length) {\n return Lib.syncOrAsync([draw, annAutorange], gd);\n }\n };\n function annAutorange(gd) {\n var fullLayout = gd._fullLayout;\n Lib.filterVisible(fullLayout.annotations).forEach(function(ann) {\n var xa = Axes.getFromId(gd, ann.xref);\n var ya = Axes.getFromId(gd, ann.yref);\n var xRefType = Axes.getRefType(ann.xref);\n var yRefType = Axes.getRefType(ann.yref);\n ann._extremes = {};\n if (xRefType === \"range\") calcAxisExpansion(ann, xa);\n if (yRefType === \"range\") calcAxisExpansion(ann, ya);\n });\n }\n function calcAxisExpansion(ann, ax) {\n var axId = ax._id;\n var letter = axId.charAt(0);\n var pos = ann[letter];\n var apos = ann[\"a\" + letter];\n var ref = ann[letter + \"ref\"];\n var aref = ann[\"a\" + letter + \"ref\"];\n var padplus = ann[\"_\" + letter + \"padplus\"];\n var padminus = ann[\"_\" + letter + \"padminus\"];\n var shift = { x: 1, y: -1 }[letter] * ann[letter + \"shift\"];\n var headSize = 3 * ann.arrowsize * ann.arrowwidth || 0;\n var headPlus = headSize + shift;\n var headMinus = headSize - shift;\n var startHeadSize = 3 * ann.startarrowsize * ann.arrowwidth || 0;\n var startHeadPlus = startHeadSize + shift;\n var startHeadMinus = startHeadSize - shift;\n var extremes;\n if (aref === ref) {\n var extremeArrowHead = Axes.findExtremes(ax, [ax.r2c(pos)], {\n ppadplus: headPlus,\n ppadminus: headMinus\n });\n var extremeText = Axes.findExtremes(ax, [ax.r2c(apos)], {\n ppadplus: Math.max(padplus, startHeadPlus),\n ppadminus: Math.max(padminus, startHeadMinus)\n });\n extremes = {\n min: [extremeArrowHead.min[0], extremeText.min[0]],\n max: [extremeArrowHead.max[0], extremeText.max[0]]\n };\n } else {\n startHeadPlus = apos ? startHeadPlus + apos : startHeadPlus;\n startHeadMinus = apos ? startHeadMinus - apos : startHeadMinus;\n extremes = Axes.findExtremes(ax, [ax.r2c(pos)], {\n ppadplus: Math.max(padplus, headPlus, startHeadPlus),\n ppadminus: Math.max(padminus, headMinus, startHeadMinus)\n });\n }\n ann._extremes[axId] = extremes;\n }\n }\n });\n\n // src/components/annotations/convert_coords.js\n var require_convert_coords = __commonJS({\n \"src/components/annotations/convert_coords.js\"(exports, module) {\n \"use strict\";\n var isNumeric = require_fast_isnumeric();\n var toLogRange = require_to_log_range();\n module.exports = function convertCoords(gd, ax, newType, doExtra) {\n ax = ax || {};\n var toLog = newType === \"log\" && ax.type === \"linear\";\n var fromLog = newType === \"linear\" && ax.type === \"log\";\n if (!(toLog || fromLog)) return;\n var annotations = gd._fullLayout.annotations;\n var axLetter = ax._id.charAt(0);\n var ann;\n var attrPrefix;\n function convert(attr) {\n var currentVal = ann[attr];\n var newVal = null;\n if (toLog) newVal = toLogRange(currentVal, ax.range);\n else newVal = Math.pow(10, currentVal);\n if (!isNumeric(newVal)) newVal = null;\n doExtra(attrPrefix + attr, newVal);\n }\n for (var i = 0; i < annotations.length; i++) {\n ann = annotations[i];\n attrPrefix = \"annotations[\" + i + \"].\";\n if (ann[axLetter + \"ref\"] === ax._id) convert(axLetter);\n if (ann[\"a\" + axLetter + \"ref\"] === ax._id) convert(\"a\" + axLetter);\n }\n };\n }\n });\n\n // src/components/annotations/index.js\n var require_annotations = __commonJS({\n \"src/components/annotations/index.js\"(exports, module) {\n \"use strict\";\n var drawModule = require_draw4();\n var clickModule = require_click2();\n module.exports = {\n moduleType: \"component\",\n name: \"annotations\",\n layoutAttributes: require_attributes11(),\n supplyLayoutDefaults: require_defaults9(),\n includeBasePlot: require_include_components()(\"annotations\"),\n calcAutorange: require_calc_autorange(),\n draw: drawModule.draw,\n drawOne: drawModule.drawOne,\n drawRaw: drawModule.drawRaw,\n hasClickToShow: clickModule.hasClickToShow,\n onClick: clickModule.onClick,\n convertCoords: require_convert_coords()\n };\n }\n });\n\n // src/components/annotations3d/attributes.js\n var require_attributes15 = __commonJS({\n \"src/components/annotations3d/attributes.js\"(exports, module) {\n \"use strict\";\n var annAttrs = require_attributes11();\n var overrideAll = require_edit_types().overrideAll;\n var templatedArray = require_plot_template().templatedArray;\n module.exports = overrideAll(templatedArray(\"annotation\", {\n visible: annAttrs.visible,\n x: {\n valType: \"any\"\n },\n y: {\n valType: \"any\"\n },\n z: {\n valType: \"any\"\n },\n ax: {\n valType: \"number\"\n },\n ay: {\n valType: \"number\"\n },\n xanchor: annAttrs.xanchor,\n xshift: annAttrs.xshift,\n yanchor: annAttrs.yanchor,\n yshift: annAttrs.yshift,\n text: annAttrs.text,\n textangle: annAttrs.textangle,\n font: annAttrs.font,\n width: annAttrs.width,\n height: annAttrs.height,\n opacity: annAttrs.opacity,\n align: annAttrs.align,\n valign: annAttrs.valign,\n bgcolor: annAttrs.bgcolor,\n bordercolor: annAttrs.bordercolor,\n borderpad: annAttrs.borderpad,\n borderwidth: annAttrs.borderwidth,\n showarrow: annAttrs.showarrow,\n arrowcolor: annAttrs.arrowcolor,\n arrowhead: annAttrs.arrowhead,\n startarrowhead: annAttrs.startarrowhead,\n arrowside: annAttrs.arrowside,\n arrowsize: annAttrs.arrowsize,\n startarrowsize: annAttrs.startarrowsize,\n arrowwidth: annAttrs.arrowwidth,\n standoff: annAttrs.standoff,\n startstandoff: annAttrs.startstandoff,\n hovertext: annAttrs.hovertext,\n hoverlabel: annAttrs.hoverlabel,\n captureevents: annAttrs.captureevents\n // maybes later?\n // clicktoshow: annAttrs.clicktoshow,\n // xclick: annAttrs.xclick,\n // yclick: annAttrs.yclick,\n // not needed!\n // axref: 'pixel'\n // ayref: 'pixel'\n // xref: 'x'\n // yref: 'y\n // zref: 'z'\n }), \"calc\", \"from-root\");\n }\n });\n\n // src/components/annotations3d/defaults.js\n var require_defaults10 = __commonJS({\n \"src/components/annotations3d/defaults.js\"(exports, module) {\n \"use strict\";\n var Lib = require_lib();\n var Axes = require_axes();\n var handleArrayContainerDefaults = require_array_container_defaults();\n var handleAnnotationCommonDefaults = require_common_defaults();\n var attributes = require_attributes15();\n module.exports = function handleDefaults(sceneLayoutIn, sceneLayoutOut, opts) {\n handleArrayContainerDefaults(sceneLayoutIn, sceneLayoutOut, {\n name: \"annotations\",\n handleItemDefaults: handleAnnotationDefaults,\n fullLayout: opts.fullLayout\n });\n };\n function handleAnnotationDefaults(annIn, annOut, sceneLayout, opts) {\n function coerce(attr, dflt) {\n return Lib.coerce(annIn, annOut, attributes, attr, dflt);\n }\n function coercePosition(axLetter) {\n var axName = axLetter + \"axis\";\n var gdMock = { _fullLayout: {} };\n gdMock._fullLayout[axName] = sceneLayout[axName];\n return Axes.coercePosition(annOut, gdMock, coerce, axLetter, axLetter, 0.5);\n }\n var visible = coerce(\"visible\");\n if (!visible) return;\n handleAnnotationCommonDefaults(annIn, annOut, opts.fullLayout, coerce);\n coercePosition(\"x\");\n coercePosition(\"y\");\n coercePosition(\"z\");\n Lib.noneOrAll(annIn, annOut, [\"x\", \"y\", \"z\"]);\n annOut.xref = \"x\";\n annOut.yref = \"y\";\n annOut.zref = \"z\";\n coerce(\"xanchor\");\n coerce(\"yanchor\");\n coerce(\"xshift\");\n coerce(\"yshift\");\n if (annOut.showarrow) {\n annOut.axref = \"pixel\";\n annOut.ayref = \"pixel\";\n coerce(\"ax\", -10);\n coerce(\"ay\", -30);\n Lib.noneOrAll(annIn, annOut, [\"ax\", \"ay\"]);\n }\n }\n }\n });\n\n // src/components/annotations3d/convert.js\n var require_convert = __commonJS({\n \"src/components/annotations3d/convert.js\"(exports, module) {\n \"use strict\";\n var Lib = require_lib();\n var Axes = require_axes();\n module.exports = function convert(scene) {\n var fullSceneLayout = scene.fullSceneLayout;\n var anns = fullSceneLayout.annotations;\n for (var i = 0; i < anns.length; i++) {\n mockAnnAxes(anns[i], scene);\n }\n scene.fullLayout._infolayer.selectAll(\".annotation-\" + scene.id).remove();\n };\n function mockAnnAxes(ann, scene) {\n var fullSceneLayout = scene.fullSceneLayout;\n var domain = fullSceneLayout.domain;\n var size = scene.fullLayout._size;\n var base = {\n // this gets fill in on render\n pdata: null,\n // to get setConvert to not execute cleanly\n type: \"linear\",\n // don't try to update them on `editable: true`\n autorange: false,\n // set infinite range so that annotation draw routine\n // does not try to remove 'outside-range' annotations,\n // this case is handled in the render loop\n range: [-Infinity, Infinity]\n };\n ann._xa = {};\n Lib.extendFlat(ann._xa, base);\n Axes.setConvert(ann._xa);\n ann._xa._offset = size.l + domain.x[0] * size.w;\n ann._xa.l2p = function() {\n return 0.5 * (1 + ann._pdata[0] / ann._pdata[3]) * size.w * (domain.x[1] - domain.x[0]);\n };\n ann._ya = {};\n Lib.extendFlat(ann._ya, base);\n Axes.setConvert(ann._ya);\n ann._ya._offset = size.t + (1 - domain.y[1]) * size.h;\n ann._ya.l2p = function() {\n return 0.5 * (1 - ann._pdata[1] / ann._pdata[3]) * size.h * (domain.y[1] - domain.y[0]);\n };\n }\n }\n });\n\n // src/plots/gl3d/project.js\n var require_project = __commonJS({\n \"src/plots/gl3d/project.js\"(exports, module) {\n \"use strict\";\n function xformMatrix(m, v) {\n var out = [0, 0, 0, 0];\n var i, j;\n for (i = 0; i < 4; ++i) {\n for (j = 0; j < 4; ++j) {\n out[j] += m[4 * i + j] * v[i];\n }\n }\n return out;\n }\n function project(camera, v) {\n var p = xformMatrix(\n camera.projection,\n xformMatrix(\n camera.view,\n xformMatrix(camera.model, [v[0], v[1], v[2], 1])\n )\n );\n return p;\n }\n module.exports = project;\n }\n });\n\n // src/components/annotations3d/draw.js\n var require_draw5 = __commonJS({\n \"src/components/annotations3d/draw.js\"(exports, module) {\n \"use strict\";\n var drawRaw = require_draw4().drawRaw;\n var project = require_project();\n var axLetters = [\"x\", \"y\", \"z\"];\n module.exports = function draw(scene) {\n var fullSceneLayout = scene.fullSceneLayout;\n var dataScale = scene.dataScale;\n var anns = fullSceneLayout.annotations;\n for (var i = 0; i < anns.length; i++) {\n var ann = anns[i];\n var annotationIsOffscreen = false;\n for (var j = 0; j < 3; j++) {\n var axLetter = axLetters[j];\n var pos = ann[axLetter];\n var ax = fullSceneLayout[axLetter + \"axis\"];\n var posFraction = ax.r2fraction(pos);\n if (posFraction < 0 || posFraction > 1) {\n annotationIsOffscreen = true;\n break;\n }\n }\n if (annotationIsOffscreen) {\n scene.fullLayout._infolayer.select(\".annotation-\" + scene.id + '[data-index=\"' + i + '\"]').remove();\n } else {\n ann._pdata = project(scene.glplot.cameraParams, [\n fullSceneLayout.xaxis.r2l(ann.x) * dataScale[0],\n fullSceneLayout.yaxis.r2l(ann.y) * dataScale[1],\n fullSceneLayout.zaxis.r2l(ann.z) * dataScale[2]\n ]);\n drawRaw(scene.graphDiv, ann, i, scene.id, ann._xa, ann._ya);\n }\n }\n };\n }\n });\n\n // src/components/annotations3d/index.js\n var require_annotations3d = __commonJS({\n \"src/components/annotations3d/index.js\"(exports, module) {\n \"use strict\";\n var Registry = require_registry();\n var Lib = require_lib();\n module.exports = {\n moduleType: \"component\",\n name: \"annotations3d\",\n schema: {\n subplots: {\n scene: { annotations: require_attributes15() }\n }\n },\n layoutAttributes: require_attributes15(),\n handleDefaults: require_defaults10(),\n includeBasePlot: includeGL3D,\n convert: require_convert(),\n draw: require_draw5()\n };\n function includeGL3D(layoutIn, layoutOut) {\n var GL3D = Registry.subplotsRegistry.gl3d;\n if (!GL3D) return;\n var attrRegex = GL3D.attrRegex;\n var keys = Object.keys(layoutIn);\n for (var i = 0; i < keys.length; i++) {\n var k = keys[i];\n if (attrRegex.test(k) && (layoutIn[k].annotations || []).length) {\n Lib.pushUnique(layoutOut._basePlotModules, GL3D);\n Lib.pushUnique(layoutOut._subplots.gl3d, k);\n }\n }\n }\n }\n });\n\n // src/components/shapes/attributes.js\n var require_attributes16 = __commonJS({\n \"src/components/shapes/attributes.js\"(exports, module) {\n \"use strict\";\n var annAttrs = require_attributes11();\n var fontAttrs = require_font_attributes();\n var scatterLineAttrs = require_attributes12().line;\n var dash = require_attributes4().dash;\n var extendFlat = require_extend().extendFlat;\n var templatedArray = require_plot_template().templatedArray;\n var axisPlaceableObjs = require_axis_placeable_objects();\n var basePlotAttributes = require_attributes2();\n var shapeTexttemplateAttrs = require_template_attributes().shapeTexttemplateAttrs;\n var shapeLabelTexttemplateVars = require_label_texttemplate();\n module.exports = templatedArray(\"shape\", {\n visible: extendFlat({}, basePlotAttributes.visible, {\n editType: \"calc+arraydraw\"\n }),\n showlegend: {\n valType: \"boolean\",\n dflt: false,\n editType: \"calc+arraydraw\"\n },\n legend: extendFlat({}, basePlotAttributes.legend, {\n editType: \"calc+arraydraw\"\n }),\n legendgroup: extendFlat({}, basePlotAttributes.legendgroup, {\n editType: \"calc+arraydraw\"\n }),\n legendgrouptitle: {\n text: extendFlat({}, basePlotAttributes.legendgrouptitle.text, {\n editType: \"calc+arraydraw\"\n }),\n font: fontAttrs({\n editType: \"calc+arraydraw\"\n }),\n editType: \"calc+arraydraw\"\n },\n legendrank: extendFlat({}, basePlotAttributes.legendrank, {\n editType: \"calc+arraydraw\"\n }),\n legendwidth: extendFlat({}, basePlotAttributes.legendwidth, {\n editType: \"calc+arraydraw\"\n }),\n type: {\n valType: \"enumerated\",\n values: [\"circle\", \"rect\", \"path\", \"line\"],\n editType: \"calc+arraydraw\"\n },\n layer: {\n valType: \"enumerated\",\n values: [\"below\", \"above\", \"between\"],\n dflt: \"above\",\n editType: \"arraydraw\"\n },\n xref: extendFlat({}, annAttrs.xref, {}),\n xsizemode: {\n valType: \"enumerated\",\n values: [\"scaled\", \"pixel\"],\n dflt: \"scaled\",\n editType: \"calc+arraydraw\"\n },\n xanchor: {\n valType: \"any\",\n editType: \"calc+arraydraw\"\n },\n x0: {\n valType: \"any\",\n editType: \"calc+arraydraw\"\n },\n x1: {\n valType: \"any\",\n editType: \"calc+arraydraw\"\n },\n x0shift: {\n valType: \"number\",\n dflt: 0,\n min: -1,\n max: 1,\n editType: \"calc\"\n },\n x1shift: {\n valType: \"number\",\n dflt: 0,\n min: -1,\n max: 1,\n editType: \"calc\"\n },\n yref: extendFlat({}, annAttrs.yref, {}),\n ysizemode: {\n valType: \"enumerated\",\n values: [\"scaled\", \"pixel\"],\n dflt: \"scaled\",\n editType: \"calc+arraydraw\"\n },\n yanchor: {\n valType: \"any\",\n editType: \"calc+arraydraw\"\n },\n y0: {\n valType: \"any\",\n editType: \"calc+arraydraw\"\n },\n y1: {\n valType: \"any\",\n editType: \"calc+arraydraw\"\n },\n y0shift: {\n valType: \"number\",\n dflt: 0,\n min: -1,\n max: 1,\n editType: \"calc\"\n },\n y1shift: {\n valType: \"number\",\n dflt: 0,\n min: -1,\n max: 1,\n editType: \"calc\"\n },\n path: {\n valType: \"string\",\n editType: \"calc+arraydraw\"\n },\n opacity: {\n valType: \"number\",\n min: 0,\n max: 1,\n dflt: 1,\n editType: \"arraydraw\"\n },\n line: {\n color: extendFlat({}, scatterLineAttrs.color, { editType: \"arraydraw\" }),\n width: extendFlat({}, scatterLineAttrs.width, { editType: \"calc+arraydraw\" }),\n dash: extendFlat({}, dash, { editType: \"arraydraw\" }),\n editType: \"calc+arraydraw\"\n },\n fillcolor: {\n valType: \"color\",\n dflt: \"rgba(0,0,0,0)\",\n editType: \"arraydraw\"\n },\n fillrule: {\n valType: \"enumerated\",\n values: [\"evenodd\", \"nonzero\"],\n dflt: \"evenodd\",\n editType: \"arraydraw\"\n },\n editable: {\n valType: \"boolean\",\n dflt: false,\n editType: \"calc+arraydraw\"\n },\n label: {\n text: {\n valType: \"string\",\n dflt: \"\",\n editType: \"arraydraw\"\n },\n texttemplate: shapeTexttemplateAttrs({}, { keys: Object.keys(shapeLabelTexttemplateVars) }),\n font: fontAttrs({\n editType: \"calc+arraydraw\",\n colorEditType: \"arraydraw\"\n }),\n textposition: {\n valType: \"enumerated\",\n values: [\n \"top left\",\n \"top center\",\n \"top right\",\n \"middle left\",\n \"middle center\",\n \"middle right\",\n \"bottom left\",\n \"bottom center\",\n \"bottom right\",\n \"start\",\n \"middle\",\n \"end\"\n ],\n editType: \"arraydraw\"\n },\n textangle: {\n valType: \"angle\",\n dflt: \"auto\",\n editType: \"calc+arraydraw\"\n },\n xanchor: {\n valType: \"enumerated\",\n values: [\"auto\", \"left\", \"center\", \"right\"],\n dflt: \"auto\",\n editType: \"calc+arraydraw\"\n },\n yanchor: {\n valType: \"enumerated\",\n values: [\"top\", \"middle\", \"bottom\"],\n editType: \"calc+arraydraw\"\n },\n padding: {\n valType: \"number\",\n dflt: 3,\n min: 0,\n editType: \"arraydraw\"\n },\n editType: \"arraydraw\"\n },\n editType: \"arraydraw\"\n });\n }\n });\n\n // src/components/shapes/defaults.js\n var require_defaults11 = __commonJS({\n \"src/components/shapes/defaults.js\"(exports, module) {\n \"use strict\";\n var Lib = require_lib();\n var Axes = require_axes();\n var handleArrayContainerDefaults = require_array_container_defaults();\n var attributes = require_attributes16();\n var helpers = require_helpers8();\n module.exports = function supplyLayoutDefaults(layoutIn, layoutOut) {\n handleArrayContainerDefaults(layoutIn, layoutOut, {\n name: \"shapes\",\n handleItemDefaults: handleShapeDefaults\n });\n };\n function dfltLabelYanchor(isLine, labelTextPosition) {\n return isLine ? \"bottom\" : labelTextPosition.indexOf(\"top\") !== -1 ? \"top\" : labelTextPosition.indexOf(\"bottom\") !== -1 ? \"bottom\" : \"middle\";\n }\n function handleShapeDefaults(shapeIn, shapeOut, fullLayout) {\n function coerce(attr, dflt) {\n return Lib.coerce(shapeIn, shapeOut, attributes, attr, dflt);\n }\n shapeOut._isShape = true;\n var visible = coerce(\"visible\");\n if (!visible) return;\n var showlegend = coerce(\"showlegend\");\n if (showlegend) {\n coerce(\"legend\");\n coerce(\"legendwidth\");\n coerce(\"legendgroup\");\n coerce(\"legendgrouptitle.text\");\n Lib.coerceFont(coerce, \"legendgrouptitle.font\");\n coerce(\"legendrank\");\n }\n var path = coerce(\"path\");\n var dfltType = path ? \"path\" : \"rect\";\n var shapeType = coerce(\"type\", dfltType);\n var noPath = shapeType !== \"path\";\n if (noPath) delete shapeOut.path;\n coerce(\"editable\");\n coerce(\"layer\");\n coerce(\"opacity\");\n coerce(\"fillcolor\");\n coerce(\"fillrule\");\n var lineWidth = coerce(\"line.width\");\n if (lineWidth) {\n coerce(\"line.color\");\n coerce(\"line.dash\");\n }\n var xSizeMode = coerce(\"xsizemode\");\n var ySizeMode = coerce(\"ysizemode\");\n var axLetters = [\"x\", \"y\"];\n for (var i = 0; i < 2; i++) {\n var axLetter = axLetters[i];\n var attrAnchor = axLetter + \"anchor\";\n var sizeMode = axLetter === \"x\" ? xSizeMode : ySizeMode;\n var gdMock = { _fullLayout: fullLayout };\n var ax;\n var pos2r;\n var r2pos;\n var axRef = Axes.coerceRef(\n shapeIn,\n shapeOut,\n gdMock,\n axLetter,\n void 0,\n \"paper\"\n );\n var axRefType = Axes.getRefType(axRef);\n if (axRefType === \"range\") {\n ax = Axes.getFromId(gdMock, axRef);\n ax._shapeIndices.push(shapeOut._index);\n r2pos = helpers.rangeToShapePosition(ax);\n pos2r = helpers.shapePositionToRange(ax);\n if (ax.type === \"category\" || ax.type === \"multicategory\") {\n coerce(axLetter + \"0shift\");\n coerce(axLetter + \"1shift\");\n }\n } else {\n pos2r = r2pos = Lib.identity;\n }\n if (noPath) {\n var dflt0 = 0.25;\n var dflt1 = 0.75;\n var attr0 = axLetter + \"0\";\n var attr1 = axLetter + \"1\";\n var in0 = shapeIn[attr0];\n var in1 = shapeIn[attr1];\n shapeIn[attr0] = pos2r(shapeIn[attr0], true);\n shapeIn[attr1] = pos2r(shapeIn[attr1], true);\n if (sizeMode === \"pixel\") {\n coerce(attr0, 0);\n coerce(attr1, 10);\n } else {\n Axes.coercePosition(shapeOut, gdMock, coerce, axRef, attr0, dflt0);\n Axes.coercePosition(shapeOut, gdMock, coerce, axRef, attr1, dflt1);\n }\n shapeOut[attr0] = r2pos(shapeOut[attr0]);\n shapeOut[attr1] = r2pos(shapeOut[attr1]);\n shapeIn[attr0] = in0;\n shapeIn[attr1] = in1;\n }\n if (sizeMode === \"pixel\") {\n var inAnchor = shapeIn[attrAnchor];\n shapeIn[attrAnchor] = pos2r(shapeIn[attrAnchor], true);\n Axes.coercePosition(shapeOut, gdMock, coerce, axRef, attrAnchor, 0.25);\n shapeOut[attrAnchor] = r2pos(shapeOut[attrAnchor]);\n shapeIn[attrAnchor] = inAnchor;\n }\n }\n if (noPath) {\n Lib.noneOrAll(shapeIn, shapeOut, [\"x0\", \"x1\", \"y0\", \"y1\"]);\n }\n var isLine = shapeType === \"line\";\n var labelTextTemplate, labelText;\n if (noPath) {\n labelTextTemplate = coerce(\"label.texttemplate\");\n }\n if (!labelTextTemplate) {\n labelText = coerce(\"label.text\");\n }\n if (labelText || labelTextTemplate) {\n coerce(\"label.textangle\");\n var labelTextPosition = coerce(\"label.textposition\", isLine ? \"middle\" : \"middle center\");\n coerce(\"label.xanchor\");\n coerce(\"label.yanchor\", dfltLabelYanchor(isLine, labelTextPosition));\n coerce(\"label.padding\");\n Lib.coerceFont(coerce, \"label.font\", fullLayout.font);\n }\n }\n }\n });\n\n // src/components/shapes/draw_newshape/defaults.js\n var require_defaults12 = __commonJS({\n \"src/components/shapes/draw_newshape/defaults.js\"(exports, module) {\n \"use strict\";\n var Color = require_color();\n var Lib = require_lib();\n function dfltLabelYanchor(isLine, labelTextPosition) {\n return isLine ? \"bottom\" : labelTextPosition.indexOf(\"top\") !== -1 ? \"top\" : labelTextPosition.indexOf(\"bottom\") !== -1 ? \"bottom\" : \"middle\";\n }\n module.exports = function supplyDrawNewShapeDefaults(layoutIn, layoutOut, coerce) {\n coerce(\"newshape.visible\");\n coerce(\"newshape.name\");\n coerce(\"newshape.showlegend\");\n coerce(\"newshape.legend\");\n coerce(\"newshape.legendwidth\");\n coerce(\"newshape.legendgroup\");\n coerce(\"newshape.legendgrouptitle.text\");\n Lib.coerceFont(coerce, \"newshape.legendgrouptitle.font\");\n coerce(\"newshape.legendrank\");\n coerce(\"newshape.drawdirection\");\n coerce(\"newshape.layer\");\n coerce(\"newshape.fillcolor\");\n coerce(\"newshape.fillrule\");\n coerce(\"newshape.opacity\");\n var newshapeLineWidth = coerce(\"newshape.line.width\");\n if (newshapeLineWidth) {\n var bgcolor = (layoutIn || {}).plot_bgcolor || \"#FFF\";\n coerce(\"newshape.line.color\", Color.contrast(bgcolor));\n coerce(\"newshape.line.dash\");\n }\n var isLine = layoutIn.dragmode === \"drawline\";\n var labelText = coerce(\"newshape.label.text\");\n var labelTextTemplate = coerce(\"newshape.label.texttemplate\");\n if (labelText || labelTextTemplate) {\n coerce(\"newshape.label.textangle\");\n var labelTextPosition = coerce(\"newshape.label.textposition\", isLine ? \"middle\" : \"middle center\");\n coerce(\"newshape.label.xanchor\");\n coerce(\"newshape.label.yanchor\", dfltLabelYanchor(isLine, labelTextPosition));\n coerce(\"newshape.label.padding\");\n Lib.coerceFont(coerce, \"newshape.label.font\", layoutOut.font);\n }\n coerce(\"activeshape.fillcolor\");\n coerce(\"activeshape.opacity\");\n };\n }\n });\n\n // src/components/shapes/calc_autorange.js\n var require_calc_autorange2 = __commonJS({\n \"src/components/shapes/calc_autorange.js\"(exports, module) {\n \"use strict\";\n var Lib = require_lib();\n var Axes = require_axes();\n var constants = require_constants5();\n var helpers = require_helpers8();\n module.exports = function calcAutorange(gd) {\n var fullLayout = gd._fullLayout;\n var shapeList = Lib.filterVisible(fullLayout.shapes);\n if (!shapeList.length || !gd._fullData.length) return;\n for (var i = 0; i < shapeList.length; i++) {\n var shape = shapeList[i];\n shape._extremes = {};\n var ax;\n var bounds;\n var xRefType = Axes.getRefType(shape.xref);\n var yRefType = Axes.getRefType(shape.yref);\n if (shape.xref !== \"paper\" && xRefType !== \"domain\") {\n ax = Axes.getFromId(gd, shape.xref);\n bounds = shapeBounds(ax, shape, constants.paramIsX);\n if (bounds) {\n shape._extremes[ax._id] = Axes.findExtremes(ax, bounds, calcXPaddingOptions(shape));\n }\n }\n if (shape.yref !== \"paper\" && yRefType !== \"domain\") {\n ax = Axes.getFromId(gd, shape.yref);\n bounds = shapeBounds(ax, shape, constants.paramIsY);\n if (bounds) {\n shape._extremes[ax._id] = Axes.findExtremes(ax, bounds, calcYPaddingOptions(shape));\n }\n }\n }\n };\n function calcXPaddingOptions(shape) {\n return calcPaddingOptions(shape.line.width, shape.xsizemode, shape.x0, shape.x1, shape.path, false);\n }\n function calcYPaddingOptions(shape) {\n return calcPaddingOptions(shape.line.width, shape.ysizemode, shape.y0, shape.y1, shape.path, true);\n }\n function calcPaddingOptions(lineWidth, sizeMode, v0, v1, path, isYAxis) {\n var ppad = lineWidth / 2;\n var axisDirectionReverted = isYAxis;\n if (sizeMode === \"pixel\") {\n var coords = path ? helpers.extractPathCoords(path, isYAxis ? constants.paramIsY : constants.paramIsX) : [v0, v1];\n var maxValue = Lib.aggNums(Math.max, null, coords);\n var minValue = Lib.aggNums(Math.min, null, coords);\n var beforePad = minValue < 0 ? Math.abs(minValue) + ppad : ppad;\n var afterPad = maxValue > 0 ? maxValue + ppad : ppad;\n return {\n ppad,\n ppadplus: axisDirectionReverted ? beforePad : afterPad,\n ppadminus: axisDirectionReverted ? afterPad : beforePad\n };\n } else {\n return { ppad };\n }\n }\n function shapeBounds(ax, shape, paramsToUse) {\n var dim = ax._id.charAt(0) === \"x\" ? \"x\" : \"y\";\n var isCategory = ax.type === \"category\" || ax.type === \"multicategory\";\n var v0;\n var v1;\n var shiftStart = 0;\n var shiftEnd = 0;\n var convertVal = isCategory ? ax.r2c : ax.d2c;\n var isSizeModeScale = shape[dim + \"sizemode\"] === \"scaled\";\n if (isSizeModeScale) {\n v0 = shape[dim + \"0\"];\n v1 = shape[dim + \"1\"];\n if (isCategory) {\n shiftStart = shape[dim + \"0shift\"];\n shiftEnd = shape[dim + \"1shift\"];\n }\n } else {\n v0 = shape[dim + \"anchor\"];\n v1 = shape[dim + \"anchor\"];\n }\n if (v0 !== void 0) return [convertVal(v0) + shiftStart, convertVal(v1) + shiftEnd];\n if (!shape.path) return;\n var min = Infinity;\n var max = -Infinity;\n var segments = shape.path.match(constants.segmentRE);\n var i;\n var segment;\n var drawnParam;\n var params;\n var val;\n if (ax.type === \"date\") convertVal = helpers.decodeDate(convertVal);\n for (i = 0; i < segments.length; i++) {\n segment = segments[i];\n drawnParam = paramsToUse[segment.charAt(0)].drawn;\n if (drawnParam === void 0) continue;\n params = segments[i].substr(1).match(constants.paramRE);\n if (!params || params.length < drawnParam) continue;\n val = convertVal(params[drawnParam]);\n if (val < min) min = val;\n if (val > max) max = val;\n }\n if (max >= min) return [min, max];\n }\n }\n });\n\n // src/components/shapes/index.js\n var require_shapes = __commonJS({\n \"src/components/shapes/index.js\"(exports, module) {\n \"use strict\";\n var drawModule = require_draw2();\n module.exports = {\n moduleType: \"component\",\n name: \"shapes\",\n layoutAttributes: require_attributes16(),\n supplyLayoutDefaults: require_defaults11(),\n supplyDrawNewShapeDefaults: require_defaults12(),\n includeBasePlot: require_include_components()(\"shapes\"),\n calcAutorange: require_calc_autorange2(),\n draw: drawModule.draw,\n drawOne: drawModule.drawOne\n };\n }\n });\n\n // src/components/images/attributes.js\n var require_attributes17 = __commonJS({\n \"src/components/images/attributes.js\"(exports, module) {\n \"use strict\";\n var cartesianConstants = require_constants2();\n var templatedArray = require_plot_template().templatedArray;\n var axisPlaceableObjs = require_axis_placeable_objects();\n module.exports = templatedArray(\"image\", {\n visible: {\n valType: \"boolean\",\n dflt: true,\n editType: \"arraydraw\"\n },\n source: {\n valType: \"string\",\n editType: \"arraydraw\"\n },\n layer: {\n valType: \"enumerated\",\n values: [\"below\", \"above\"],\n dflt: \"above\",\n editType: \"arraydraw\"\n },\n sizex: {\n valType: \"number\",\n dflt: 0,\n editType: \"arraydraw\"\n },\n sizey: {\n valType: \"number\",\n dflt: 0,\n editType: \"arraydraw\"\n },\n sizing: {\n valType: \"enumerated\",\n values: [\"fill\", \"contain\", \"stretch\"],\n dflt: \"contain\",\n editType: \"arraydraw\"\n },\n opacity: {\n valType: \"number\",\n min: 0,\n max: 1,\n dflt: 1,\n editType: \"arraydraw\"\n },\n x: {\n valType: \"any\",\n dflt: 0,\n editType: \"arraydraw\"\n },\n y: {\n valType: \"any\",\n dflt: 0,\n editType: \"arraydraw\"\n },\n xanchor: {\n valType: \"enumerated\",\n values: [\"left\", \"center\", \"right\"],\n dflt: \"left\",\n editType: \"arraydraw\"\n },\n yanchor: {\n valType: \"enumerated\",\n values: [\"top\", \"middle\", \"bottom\"],\n dflt: \"top\",\n editType: \"arraydraw\"\n },\n xref: {\n valType: \"enumerated\",\n values: [\n \"paper\",\n cartesianConstants.idRegex.x.toString()\n ],\n dflt: \"paper\",\n editType: \"arraydraw\"\n },\n yref: {\n valType: \"enumerated\",\n values: [\n \"paper\",\n cartesianConstants.idRegex.y.toString()\n ],\n dflt: \"paper\",\n editType: \"arraydraw\"\n },\n editType: \"arraydraw\"\n });\n }\n });\n\n // src/components/images/defaults.js\n var require_defaults13 = __commonJS({\n \"src/components/images/defaults.js\"(exports, module) {\n \"use strict\";\n var Lib = require_lib();\n var Axes = require_axes();\n var handleArrayContainerDefaults = require_array_container_defaults();\n var attributes = require_attributes17();\n var name = \"images\";\n module.exports = function supplyLayoutDefaults(layoutIn, layoutOut) {\n var opts = {\n name,\n handleItemDefaults: imageDefaults\n };\n handleArrayContainerDefaults(layoutIn, layoutOut, opts);\n };\n function imageDefaults(imageIn, imageOut, fullLayout) {\n function coerce(attr, dflt) {\n return Lib.coerce(imageIn, imageOut, attributes, attr, dflt);\n }\n var source = coerce(\"source\");\n var visible = coerce(\"visible\", !!source);\n if (!visible) return imageOut;\n coerce(\"layer\");\n coerce(\"xanchor\");\n coerce(\"yanchor\");\n coerce(\"sizex\");\n coerce(\"sizey\");\n coerce(\"sizing\");\n coerce(\"opacity\");\n var gdMock = { _fullLayout: fullLayout };\n var axLetters = [\"x\", \"y\"];\n for (var i = 0; i < 2; i++) {\n var axLetter = axLetters[i];\n var axRef = Axes.coerceRef(imageIn, imageOut, gdMock, axLetter, \"paper\", void 0);\n if (axRef !== \"paper\") {\n var ax = Axes.getFromId(gdMock, axRef);\n ax._imgIndices.push(imageOut._index);\n }\n Axes.coercePosition(imageOut, gdMock, coerce, axRef, axLetter, 0);\n }\n return imageOut;\n }\n }\n });\n\n // src/components/images/draw.js\n var require_draw6 = __commonJS({\n \"src/components/images/draw.js\"(exports, module) {\n \"use strict\";\n var d3 = require_d3();\n var Drawing = require_drawing();\n var Axes = require_axes();\n var axisIds = require_axis_ids();\n var xmlnsNamespaces = require_xmlns_namespaces();\n module.exports = function draw(gd) {\n var fullLayout = gd._fullLayout;\n var imageDataAbove = [];\n var imageDataSubplot = {};\n var imageDataBelow = [];\n var subplot;\n var i;\n for (i = 0; i < fullLayout.images.length; i++) {\n var img = fullLayout.images[i];\n if (img.visible) {\n if (img.layer === \"below\" && img.xref !== \"paper\" && img.yref !== \"paper\") {\n subplot = axisIds.ref2id(img.xref) + axisIds.ref2id(img.yref);\n var plotinfo = fullLayout._plots[subplot];\n if (!plotinfo) {\n imageDataBelow.push(img);\n continue;\n }\n if (plotinfo.mainplot) {\n subplot = plotinfo.mainplot.id;\n }\n if (!imageDataSubplot[subplot]) {\n imageDataSubplot[subplot] = [];\n }\n imageDataSubplot[subplot].push(img);\n } else if (img.layer === \"above\") {\n imageDataAbove.push(img);\n } else {\n imageDataBelow.push(img);\n }\n }\n }\n var anchors = {\n x: {\n left: { sizing: \"xMin\", offset: 0 },\n center: { sizing: \"xMid\", offset: -1 / 2 },\n right: { sizing: \"xMax\", offset: -1 }\n },\n y: {\n top: { sizing: \"YMin\", offset: 0 },\n middle: { sizing: \"YMid\", offset: -1 / 2 },\n bottom: { sizing: \"YMax\", offset: -1 }\n }\n };\n function setImage(d) {\n var thisImage = d3.select(this);\n if (this._imgSrc === d.source) {\n return;\n }\n thisImage.attr(\"xmlns\", xmlnsNamespaces.svg);\n if (!gd._context.staticPlot || d.source && d.source.slice(0, 5) === \"data:\") {\n thisImage.attr(\"xlink:href\", d.source);\n this._imgSrc = d.source;\n } else {\n var imagePromise = new Promise(function(resolve) {\n var img2 = new Image();\n this.img = img2;\n img2.setAttribute(\"crossOrigin\", \"anonymous\");\n img2.onerror = errorHandler;\n img2.onload = function() {\n var canvas = document.createElement(\"canvas\");\n canvas.width = this.width;\n canvas.height = this.height;\n var ctx = canvas.getContext(\"2d\", { willReadFrequently: true });\n ctx.drawImage(this, 0, 0);\n var dataURL = canvas.toDataURL(\"image/png\");\n thisImage.attr(\"xlink:href\", dataURL);\n resolve();\n };\n thisImage.on(\"error\", errorHandler);\n img2.src = d.source;\n this._imgSrc = d.source;\n function errorHandler() {\n thisImage.remove();\n resolve();\n }\n }.bind(this));\n gd._promises.push(imagePromise);\n }\n }\n function applyAttributes(d) {\n var thisImage = d3.select(this);\n var xa = Axes.getFromId(gd, d.xref);\n var ya = Axes.getFromId(gd, d.yref);\n var xIsDomain = Axes.getRefType(d.xref) === \"domain\";\n var yIsDomain = Axes.getRefType(d.yref) === \"domain\";\n var size = fullLayout._size;\n var width, height;\n if (xa !== void 0) {\n width = typeof d.xref === \"string\" && xIsDomain ? xa._length * d.sizex : Math.abs(xa.l2p(d.sizex) - xa.l2p(0));\n } else {\n width = d.sizex * size.w;\n }\n if (ya !== void 0) {\n height = typeof d.yref === \"string\" && yIsDomain ? ya._length * d.sizey : Math.abs(ya.l2p(d.sizey) - ya.l2p(0));\n } else {\n height = d.sizey * size.h;\n }\n var xOffset = width * anchors.x[d.xanchor].offset;\n var yOffset = height * anchors.y[d.yanchor].offset;\n var sizing = anchors.x[d.xanchor].sizing + anchors.y[d.yanchor].sizing;\n var xPos, yPos;\n if (xa !== void 0) {\n xPos = typeof d.xref === \"string\" && xIsDomain ? xa._length * d.x + xa._offset : xa.r2p(d.x) + xa._offset;\n } else {\n xPos = d.x * size.w + size.l;\n }\n xPos += xOffset;\n if (ya !== void 0) {\n yPos = typeof d.yref === \"string\" && yIsDomain ? (\n // consistent with \"paper\" yref value, where positive values\n // move up the page\n ya._length * (1 - d.y) + ya._offset\n ) : ya.r2p(d.y) + ya._offset;\n } else {\n yPos = size.h - d.y * size.h + size.t;\n }\n yPos += yOffset;\n switch (d.sizing) {\n case \"fill\":\n sizing += \" slice\";\n break;\n case \"stretch\":\n sizing = \"none\";\n break;\n }\n thisImage.attr({\n x: xPos,\n y: yPos,\n width,\n height,\n preserveAspectRatio: sizing,\n opacity: d.opacity\n });\n var xId = xa && Axes.getRefType(d.xref) !== \"domain\" ? xa._id : \"\";\n var yId = ya && Axes.getRefType(d.yref) !== \"domain\" ? ya._id : \"\";\n var clipAxes = xId + yId;\n Drawing.setClipUrl(\n thisImage,\n clipAxes ? \"clip\" + fullLayout._uid + clipAxes : null,\n gd\n );\n }\n function imgDataFunc(d) {\n return [d.xref, d.x, d.sizex, d.yref, d.y, d.sizey].join(\"_\");\n }\n function imgSort(a, b) {\n return a._index - b._index;\n }\n var imagesBelow = fullLayout._imageLowerLayer.selectAll(\"image\").data(imageDataBelow, imgDataFunc);\n var imagesAbove = fullLayout._imageUpperLayer.selectAll(\"image\").data(imageDataAbove, imgDataFunc);\n imagesBelow.enter().append(\"image\");\n imagesAbove.enter().append(\"image\");\n imagesBelow.exit().remove();\n imagesAbove.exit().remove();\n imagesBelow.each(function(d) {\n setImage.bind(this)(d);\n applyAttributes.bind(this)(d);\n });\n imagesAbove.each(function(d) {\n setImage.bind(this)(d);\n applyAttributes.bind(this)(d);\n });\n imagesBelow.sort(imgSort);\n imagesAbove.sort(imgSort);\n var allSubplots = Object.keys(fullLayout._plots);\n for (i = 0; i < allSubplots.length; i++) {\n subplot = allSubplots[i];\n var subplotObj = fullLayout._plots[subplot];\n if (!subplotObj.imagelayer) continue;\n var imagesOnSubplot = subplotObj.imagelayer.selectAll(\"image\").data(imageDataSubplot[subplot] || [], imgDataFunc);\n imagesOnSubplot.enter().append(\"image\");\n imagesOnSubplot.exit().remove();\n imagesOnSubplot.each(function(d) {\n setImage.bind(this)(d);\n applyAttributes.bind(this)(d);\n });\n imagesOnSubplot.sort(imgSort);\n }\n };\n }\n });\n\n // src/components/images/convert_coords.js\n var require_convert_coords2 = __commonJS({\n \"src/components/images/convert_coords.js\"(exports, module) {\n \"use strict\";\n var isNumeric = require_fast_isnumeric();\n var toLogRange = require_to_log_range();\n module.exports = function convertCoords(gd, ax, newType, doExtra) {\n ax = ax || {};\n var toLog = newType === \"log\" && ax.type === \"linear\";\n var fromLog = newType === \"linear\" && ax.type === \"log\";\n if (!(toLog || fromLog)) return;\n var images = gd._fullLayout.images;\n var axLetter = ax._id.charAt(0);\n var image;\n var attrPrefix;\n for (var i = 0; i < images.length; i++) {\n image = images[i];\n attrPrefix = \"images[\" + i + \"].\";\n if (image[axLetter + \"ref\"] === ax._id) {\n var currentPos = image[axLetter];\n var currentSize = image[\"size\" + axLetter];\n var newPos = null;\n var newSize = null;\n if (toLog) {\n newPos = toLogRange(currentPos, ax.range);\n var dx = currentSize / Math.pow(10, newPos) / 2;\n newSize = 2 * Math.log(dx + Math.sqrt(1 + dx * dx)) / Math.LN10;\n } else {\n newPos = Math.pow(10, currentPos);\n newSize = newPos * (Math.pow(10, currentSize / 2) - Math.pow(10, -currentSize / 2));\n }\n if (!isNumeric(newPos)) {\n newPos = null;\n newSize = null;\n } else if (!isNumeric(newSize)) newSize = null;\n doExtra(attrPrefix + axLetter, newPos);\n doExtra(attrPrefix + \"size\" + axLetter, newSize);\n }\n }\n };\n }\n });\n\n // src/components/images/index.js\n var require_images = __commonJS({\n \"src/components/images/index.js\"(exports, module) {\n \"use strict\";\n module.exports = {\n moduleType: \"component\",\n name: \"images\",\n layoutAttributes: require_attributes17(),\n supplyLayoutDefaults: require_defaults13(),\n includeBasePlot: require_include_components()(\"images\"),\n draw: require_draw6(),\n convertCoords: require_convert_coords2()\n };\n }\n });\n\n // src/components/updatemenus/constants.js\n var require_constants9 = __commonJS({\n \"src/components/updatemenus/constants.js\"(exports, module) {\n \"use strict\";\n module.exports = {\n // layout attribute name\n name: \"updatemenus\",\n // class names\n containerClassName: \"updatemenu-container\",\n headerGroupClassName: \"updatemenu-header-group\",\n headerClassName: \"updatemenu-header\",\n headerArrowClassName: \"updatemenu-header-arrow\",\n dropdownButtonGroupClassName: \"updatemenu-dropdown-button-group\",\n dropdownButtonClassName: \"updatemenu-dropdown-button\",\n buttonClassName: \"updatemenu-button\",\n itemRectClassName: \"updatemenu-item-rect\",\n itemTextClassName: \"updatemenu-item-text\",\n // DOM attribute name in button group keeping track\n // of active update menu\n menuIndexAttrName: \"updatemenu-active-index\",\n // id root pass to Plots.autoMargin\n autoMarginIdRoot: \"updatemenu-\",\n // options when 'active: -1'\n blankHeaderOpts: { label: \" \" },\n // min item width / height\n minWidth: 30,\n minHeight: 30,\n // padding around item text\n textPadX: 24,\n arrowPadX: 16,\n // item rect radii\n rx: 2,\n ry: 2,\n // item text x offset off left edge\n textOffsetX: 12,\n // item text y offset (w.r.t. middle)\n textOffsetY: 3,\n // arrow offset off right edge\n arrowOffsetX: 4,\n // gap between header and buttons\n gapButtonHeader: 5,\n // gap between between buttons\n gapButton: 2,\n // color given to active buttons\n activeColor: \"#F4FAFF\",\n // color given to hovered buttons\n hoverColor: \"#F4FAFF\",\n // symbol for menu open arrow\n arrowSymbol: {\n left: \"\\u25C4\",\n right: \"\\u25BA\",\n up: \"\\u25B2\",\n down: \"\\u25BC\"\n }\n };\n }\n });\n\n // src/components/updatemenus/attributes.js\n var require_attributes18 = __commonJS({\n \"src/components/updatemenus/attributes.js\"(exports, module) {\n \"use strict\";\n var fontAttrs = require_font_attributes();\n var colorAttrs = require_attributes3();\n var extendFlat = require_extend().extendFlat;\n var overrideAll = require_edit_types().overrideAll;\n var padAttrs = require_pad_attributes();\n var templatedArray = require_plot_template().templatedArray;\n var buttonsAttrs = templatedArray(\"button\", {\n visible: {\n valType: \"boolean\"\n },\n method: {\n valType: \"enumerated\",\n values: [\"restyle\", \"relayout\", \"animate\", \"update\", \"skip\"],\n dflt: \"restyle\"\n },\n args: {\n valType: \"info_array\",\n freeLength: true,\n items: [\n { valType: \"any\" },\n { valType: \"any\" },\n { valType: \"any\" }\n ]\n },\n args2: {\n valType: \"info_array\",\n freeLength: true,\n items: [\n { valType: \"any\" },\n { valType: \"any\" },\n { valType: \"any\" }\n ]\n },\n label: {\n valType: \"string\",\n dflt: \"\"\n },\n execute: {\n valType: \"boolean\",\n dflt: true\n }\n });\n module.exports = overrideAll(templatedArray(\"updatemenu\", {\n _arrayAttrRegexps: [/^updatemenus\\[(0|[1-9][0-9]+)\\]\\.buttons/],\n visible: {\n valType: \"boolean\"\n },\n type: {\n valType: \"enumerated\",\n values: [\"dropdown\", \"buttons\"],\n dflt: \"dropdown\"\n },\n direction: {\n valType: \"enumerated\",\n values: [\"left\", \"right\", \"up\", \"down\"],\n dflt: \"down\"\n },\n active: {\n valType: \"integer\",\n min: -1,\n dflt: 0\n },\n showactive: {\n valType: \"boolean\",\n dflt: true\n },\n buttons: buttonsAttrs,\n x: {\n valType: \"number\",\n min: -2,\n max: 3,\n dflt: -0.05\n },\n xanchor: {\n valType: \"enumerated\",\n values: [\"auto\", \"left\", \"center\", \"right\"],\n dflt: \"right\"\n },\n y: {\n valType: \"number\",\n min: -2,\n max: 3,\n dflt: 1\n },\n yanchor: {\n valType: \"enumerated\",\n values: [\"auto\", \"top\", \"middle\", \"bottom\"],\n dflt: \"top\"\n },\n pad: extendFlat(padAttrs({ editType: \"arraydraw\" }), {}),\n font: fontAttrs({}),\n bgcolor: {\n valType: \"color\"\n },\n bordercolor: {\n valType: \"color\",\n dflt: colorAttrs.borderLine\n },\n borderwidth: {\n valType: \"number\",\n min: 0,\n dflt: 1,\n editType: \"arraydraw\"\n }\n }), \"arraydraw\", \"from-root\");\n }\n });\n\n // src/components/updatemenus/defaults.js\n var require_defaults14 = __commonJS({\n \"src/components/updatemenus/defaults.js\"(exports, module) {\n \"use strict\";\n var Lib = require_lib();\n var handleArrayContainerDefaults = require_array_container_defaults();\n var attributes = require_attributes18();\n var constants = require_constants9();\n var name = constants.name;\n var buttonAttrs = attributes.buttons;\n module.exports = function updateMenusDefaults(layoutIn, layoutOut) {\n var opts = {\n name,\n handleItemDefaults: menuDefaults\n };\n handleArrayContainerDefaults(layoutIn, layoutOut, opts);\n };\n function menuDefaults(menuIn, menuOut, layoutOut) {\n function coerce(attr, dflt) {\n return Lib.coerce(menuIn, menuOut, attributes, attr, dflt);\n }\n var buttons = handleArrayContainerDefaults(menuIn, menuOut, {\n name: \"buttons\",\n handleItemDefaults: buttonDefaults\n });\n var visible = coerce(\"visible\", buttons.length > 0);\n if (!visible) return;\n coerce(\"active\");\n coerce(\"direction\");\n coerce(\"type\");\n coerce(\"showactive\");\n coerce(\"x\");\n coerce(\"y\");\n Lib.noneOrAll(menuIn, menuOut, [\"x\", \"y\"]);\n coerce(\"xanchor\");\n coerce(\"yanchor\");\n coerce(\"pad.t\");\n coerce(\"pad.r\");\n coerce(\"pad.b\");\n coerce(\"pad.l\");\n Lib.coerceFont(coerce, \"font\", layoutOut.font);\n coerce(\"bgcolor\", layoutOut.paper_bgcolor);\n coerce(\"bordercolor\");\n coerce(\"borderwidth\");\n }\n function buttonDefaults(buttonIn, buttonOut) {\n function coerce(attr, dflt) {\n return Lib.coerce(buttonIn, buttonOut, buttonAttrs, attr, dflt);\n }\n var visible = coerce(\n \"visible\",\n buttonIn.method === \"skip\" || Array.isArray(buttonIn.args)\n );\n if (visible) {\n coerce(\"method\");\n coerce(\"args\");\n coerce(\"args2\");\n coerce(\"label\");\n coerce(\"execute\");\n }\n }\n }\n });\n\n // src/components/updatemenus/scrollbox.js\n var require_scrollbox = __commonJS({\n \"src/components/updatemenus/scrollbox.js\"(exports, module) {\n \"use strict\";\n module.exports = ScrollBox;\n var d3 = require_d3();\n var Color = require_color();\n var Drawing = require_drawing();\n var Lib = require_lib();\n function ScrollBox(gd, container, id) {\n this.gd = gd;\n this.container = container;\n this.id = id;\n this.position = null;\n this.translateX = null;\n this.translateY = null;\n this.hbar = null;\n this.vbar = null;\n this.bg = this.container.selectAll(\"rect.scrollbox-bg\").data([0]);\n this.bg.exit().on(\".drag\", null).on(\"wheel\", null).remove();\n this.bg.enter().append(\"rect\").classed(\"scrollbox-bg\", true).style(\"pointer-events\", \"all\").attr({\n opacity: 0,\n x: 0,\n y: 0,\n width: 0,\n height: 0\n });\n }\n ScrollBox.barWidth = 2;\n ScrollBox.barLength = 20;\n ScrollBox.barRadius = 2;\n ScrollBox.barPad = 1;\n ScrollBox.barColor = \"#808BA4\";\n ScrollBox.prototype.enable = function enable(position, translateX, translateY) {\n var fullLayout = this.gd._fullLayout;\n var fullWidth = fullLayout.width;\n var fullHeight = fullLayout.height;\n this.position = position;\n var l = this.position.l;\n var w = this.position.w;\n var t = this.position.t;\n var h = this.position.h;\n var direction = this.position.direction;\n var isDown = direction === \"down\";\n var isLeft = direction === \"left\";\n var isRight = direction === \"right\";\n var isUp = direction === \"up\";\n var boxW = w;\n var boxH = h;\n var boxL, boxR;\n var boxT, boxB;\n if (!isDown && !isLeft && !isRight && !isUp) {\n this.position.direction = \"down\";\n isDown = true;\n }\n var isVertical = isDown || isUp;\n if (isVertical) {\n boxL = l;\n boxR = boxL + boxW;\n if (isDown) {\n boxT = t;\n boxB = Math.min(boxT + boxH, fullHeight);\n boxH = boxB - boxT;\n } else {\n boxB = t + boxH;\n boxT = Math.max(boxB - boxH, 0);\n boxH = boxB - boxT;\n }\n } else {\n boxT = t;\n boxB = boxT + boxH;\n if (isLeft) {\n boxR = l + boxW;\n boxL = Math.max(boxR - boxW, 0);\n boxW = boxR - boxL;\n } else {\n boxL = l;\n boxR = Math.min(boxL + boxW, fullWidth);\n boxW = boxR - boxL;\n }\n }\n this._box = {\n l: boxL,\n t: boxT,\n w: boxW,\n h: boxH\n };\n var needsHorizontalScrollBar = w > boxW;\n var hbarW = ScrollBox.barLength + 2 * ScrollBox.barPad;\n var hbarH = ScrollBox.barWidth + 2 * ScrollBox.barPad;\n var hbarL = l;\n var hbarT = t + h;\n if (hbarT + hbarH > fullHeight) hbarT = fullHeight - hbarH;\n var hbar = this.container.selectAll(\"rect.scrollbar-horizontal\").data(\n needsHorizontalScrollBar ? [0] : []\n );\n hbar.exit().on(\".drag\", null).remove();\n hbar.enter().append(\"rect\").classed(\"scrollbar-horizontal\", true).call(Color.fill, ScrollBox.barColor);\n if (needsHorizontalScrollBar) {\n this.hbar = hbar.attr({\n rx: ScrollBox.barRadius,\n ry: ScrollBox.barRadius,\n x: hbarL,\n y: hbarT,\n width: hbarW,\n height: hbarH\n });\n this._hbarXMin = hbarL + hbarW / 2;\n this._hbarTranslateMax = boxW - hbarW;\n } else {\n delete this.hbar;\n delete this._hbarXMin;\n delete this._hbarTranslateMax;\n }\n var needsVerticalScrollBar = h > boxH;\n var vbarW = ScrollBox.barWidth + 2 * ScrollBox.barPad;\n var vbarH = ScrollBox.barLength + 2 * ScrollBox.barPad;\n var vbarL = l + w;\n var vbarT = t;\n if (vbarL + vbarW > fullWidth) vbarL = fullWidth - vbarW;\n var vbar = this.container.selectAll(\"rect.scrollbar-vertical\").data(\n needsVerticalScrollBar ? [0] : []\n );\n vbar.exit().on(\".drag\", null).remove();\n vbar.enter().append(\"rect\").classed(\"scrollbar-vertical\", true).call(Color.fill, ScrollBox.barColor);\n if (needsVerticalScrollBar) {\n this.vbar = vbar.attr({\n rx: ScrollBox.barRadius,\n ry: ScrollBox.barRadius,\n x: vbarL,\n y: vbarT,\n width: vbarW,\n height: vbarH\n });\n this._vbarYMin = vbarT + vbarH / 2;\n this._vbarTranslateMax = boxH - vbarH;\n } else {\n delete this.vbar;\n delete this._vbarYMin;\n delete this._vbarTranslateMax;\n }\n var clipId = this.id;\n var clipL = boxL - 0.5;\n var clipR = needsVerticalScrollBar ? boxR + vbarW + 0.5 : boxR + 0.5;\n var clipT = boxT - 0.5;\n var clipB = needsHorizontalScrollBar ? boxB + hbarH + 0.5 : boxB + 0.5;\n var clipPath = fullLayout._topdefs.selectAll(\"#\" + clipId).data(needsHorizontalScrollBar || needsVerticalScrollBar ? [0] : []);\n clipPath.exit().remove();\n clipPath.enter().append(\"clipPath\").attr(\"id\", clipId).append(\"rect\");\n if (needsHorizontalScrollBar || needsVerticalScrollBar) {\n this._clipRect = clipPath.select(\"rect\").attr({\n x: Math.floor(clipL),\n y: Math.floor(clipT),\n width: Math.ceil(clipR) - Math.floor(clipL),\n height: Math.ceil(clipB) - Math.floor(clipT)\n });\n this.container.call(Drawing.setClipUrl, clipId, this.gd);\n this.bg.attr({\n x: l,\n y: t,\n width: w,\n height: h\n });\n } else {\n this.bg.attr({\n width: 0,\n height: 0\n });\n this.container.on(\"wheel\", null).on(\".drag\", null).call(Drawing.setClipUrl, null);\n delete this._clipRect;\n }\n if (needsHorizontalScrollBar || needsVerticalScrollBar) {\n var onBoxDrag = d3.behavior.drag().on(\"dragstart\", function() {\n d3.event.sourceEvent.preventDefault();\n }).on(\"drag\", this._onBoxDrag.bind(this));\n this.container.on(\"wheel\", null).on(\"wheel\", this._onBoxWheel.bind(this)).on(\".drag\", null).call(onBoxDrag);\n var onBarDrag = d3.behavior.drag().on(\"dragstart\", function() {\n d3.event.sourceEvent.preventDefault();\n d3.event.sourceEvent.stopPropagation();\n }).on(\"drag\", this._onBarDrag.bind(this));\n if (needsHorizontalScrollBar) {\n this.hbar.on(\".drag\", null).call(onBarDrag);\n }\n if (needsVerticalScrollBar) {\n this.vbar.on(\".drag\", null).call(onBarDrag);\n }\n }\n this.setTranslate(translateX, translateY);\n };\n ScrollBox.prototype.disable = function disable() {\n if (this.hbar || this.vbar) {\n this.bg.attr({\n width: 0,\n height: 0\n });\n this.container.on(\"wheel\", null).on(\".drag\", null).call(Drawing.setClipUrl, null);\n delete this._clipRect;\n }\n if (this.hbar) {\n this.hbar.on(\".drag\", null);\n this.hbar.remove();\n delete this.hbar;\n delete this._hbarXMin;\n delete this._hbarTranslateMax;\n }\n if (this.vbar) {\n this.vbar.on(\".drag\", null);\n this.vbar.remove();\n delete this.vbar;\n delete this._vbarYMin;\n delete this._vbarTranslateMax;\n }\n };\n ScrollBox.prototype._onBoxDrag = function _onBoxDrag() {\n var translateX = this.translateX;\n var translateY = this.translateY;\n if (this.hbar) {\n translateX -= d3.event.dx;\n }\n if (this.vbar) {\n translateY -= d3.event.dy;\n }\n this.setTranslate(translateX, translateY);\n };\n ScrollBox.prototype._onBoxWheel = function _onBoxWheel() {\n var translateX = this.translateX;\n var translateY = this.translateY;\n if (this.hbar) {\n translateX += d3.event.deltaY;\n }\n if (this.vbar) {\n translateY += d3.event.deltaY;\n }\n this.setTranslate(translateX, translateY);\n };\n ScrollBox.prototype._onBarDrag = function _onBarDrag() {\n var translateX = this.translateX;\n var translateY = this.translateY;\n if (this.hbar) {\n var xMin = translateX + this._hbarXMin;\n var xMax = xMin + this._hbarTranslateMax;\n var x = Lib.constrain(d3.event.x, xMin, xMax);\n var xf = (x - xMin) / (xMax - xMin);\n var translateXMax = this.position.w - this._box.w;\n translateX = xf * translateXMax;\n }\n if (this.vbar) {\n var yMin = translateY + this._vbarYMin;\n var yMax = yMin + this._vbarTranslateMax;\n var y = Lib.constrain(d3.event.y, yMin, yMax);\n var yf = (y - yMin) / (yMax - yMin);\n var translateYMax = this.position.h - this._box.h;\n translateY = yf * translateYMax;\n }\n this.setTranslate(translateX, translateY);\n };\n ScrollBox.prototype.setTranslate = function setTranslate(translateX, translateY) {\n var translateXMax = this.position.w - this._box.w;\n var translateYMax = this.position.h - this._box.h;\n translateX = Lib.constrain(translateX || 0, 0, translateXMax);\n translateY = Lib.constrain(translateY || 0, 0, translateYMax);\n this.translateX = translateX;\n this.translateY = translateY;\n this.container.call(\n Drawing.setTranslate,\n this._box.l - this.position.l - translateX,\n this._box.t - this.position.t - translateY\n );\n if (this._clipRect) {\n this._clipRect.attr({\n x: Math.floor(this.position.l + translateX - 0.5),\n y: Math.floor(this.position.t + translateY - 0.5)\n });\n }\n if (this.hbar) {\n var xf = translateX / translateXMax;\n this.hbar.call(\n Drawing.setTranslate,\n translateX + xf * this._hbarTranslateMax,\n translateY\n );\n }\n if (this.vbar) {\n var yf = translateY / translateYMax;\n this.vbar.call(\n Drawing.setTranslate,\n translateX,\n translateY + yf * this._vbarTranslateMax\n );\n }\n };\n }\n });\n\n // src/components/updatemenus/draw.js\n var require_draw7 = __commonJS({\n \"src/components/updatemenus/draw.js\"(exports, module) {\n \"use strict\";\n var d3 = require_d3();\n var Plots = require_plots();\n var Color = require_color();\n var Drawing = require_drawing();\n var Lib = require_lib();\n var svgTextUtils = require_svg_text_utils();\n var arrayEditor = require_plot_template().arrayEditor;\n var LINE_SPACING = require_alignment().LINE_SPACING;\n var constants = require_constants9();\n var ScrollBox = require_scrollbox();\n module.exports = function draw(gd) {\n var fullLayout = gd._fullLayout;\n var menuData = Lib.filterVisible(fullLayout[constants.name]);\n function clearAutoMargin(menuOpts2) {\n Plots.autoMargin(gd, autoMarginId(menuOpts2));\n }\n var menus = fullLayout._menulayer.selectAll(\"g.\" + constants.containerClassName).data(menuData.length > 0 ? [0] : []);\n menus.enter().append(\"g\").classed(constants.containerClassName, true).style(\"cursor\", \"pointer\");\n menus.exit().each(function() {\n d3.select(this).selectAll(\"g.\" + constants.headerGroupClassName).each(clearAutoMargin);\n }).remove();\n if (menuData.length === 0) return;\n var headerGroups = menus.selectAll(\"g.\" + constants.headerGroupClassName).data(menuData, keyFunction);\n headerGroups.enter().append(\"g\").classed(constants.headerGroupClassName, true);\n var gButton = Lib.ensureSingle(menus, \"g\", constants.dropdownButtonGroupClassName, function(s) {\n s.style(\"pointer-events\", \"all\");\n });\n for (var i = 0; i < menuData.length; i++) {\n var menuOpts = menuData[i];\n findDimensions(gd, menuOpts);\n }\n var scrollBoxId = \"updatemenus\" + fullLayout._uid;\n var scrollBox = new ScrollBox(gd, gButton, scrollBoxId);\n if (headerGroups.enter().size()) {\n gButton.node().parentNode.appendChild(gButton.node());\n gButton.call(removeAllButtons);\n }\n headerGroups.exit().each(function(menuOpts2) {\n gButton.call(removeAllButtons);\n clearAutoMargin(menuOpts2);\n }).remove();\n headerGroups.each(function(menuOpts2) {\n var gHeader = d3.select(this);\n var _gButton = menuOpts2.type === \"dropdown\" ? gButton : null;\n Plots.manageCommandObserver(gd, menuOpts2, menuOpts2.buttons, function(data) {\n setActive(gd, menuOpts2, menuOpts2.buttons[data.index], gHeader, _gButton, scrollBox, data.index, true);\n });\n if (menuOpts2.type === \"dropdown\") {\n drawHeader(gd, gHeader, gButton, scrollBox, menuOpts2);\n if (isActive(gButton, menuOpts2)) {\n drawButtons(gd, gHeader, gButton, scrollBox, menuOpts2);\n }\n } else {\n drawButtons(gd, gHeader, null, null, menuOpts2);\n }\n });\n };\n function keyFunction(menuOpts) {\n return menuOpts._index;\n }\n function isFolded(gButton) {\n return +gButton.attr(constants.menuIndexAttrName) === -1;\n }\n function isActive(gButton, menuOpts) {\n return +gButton.attr(constants.menuIndexAttrName) === menuOpts._index;\n }\n function setActive(gd, menuOpts, buttonOpts, gHeader, gButton, scrollBox, buttonIndex, isSilentUpdate) {\n menuOpts.active = buttonIndex;\n arrayEditor(gd.layout, constants.name, menuOpts).applyUpdate(\"active\", buttonIndex);\n if (menuOpts.type === \"buttons\") {\n drawButtons(gd, gHeader, null, null, menuOpts);\n } else if (menuOpts.type === \"dropdown\") {\n gButton.attr(constants.menuIndexAttrName, \"-1\");\n drawHeader(gd, gHeader, gButton, scrollBox, menuOpts);\n if (!isSilentUpdate) {\n drawButtons(gd, gHeader, gButton, scrollBox, menuOpts);\n }\n }\n }\n function drawHeader(gd, gHeader, gButton, scrollBox, menuOpts) {\n var header = Lib.ensureSingle(gHeader, \"g\", constants.headerClassName, function(s) {\n s.style(\"pointer-events\", \"all\");\n });\n var dims = menuOpts._dims;\n var active = menuOpts.active;\n var headerOpts = menuOpts.buttons[active] || constants.blankHeaderOpts;\n var posOpts = { y: menuOpts.pad.t, yPad: 0, x: menuOpts.pad.l, xPad: 0, index: 0 };\n var positionOverrides = {\n width: dims.headerWidth,\n height: dims.headerHeight\n };\n header.call(drawItem, menuOpts, headerOpts, gd).call(setItemPosition, menuOpts, posOpts, positionOverrides);\n var arrow = Lib.ensureSingle(gHeader, \"text\", constants.headerArrowClassName, function(s) {\n s.attr(\"text-anchor\", \"end\").call(Drawing.font, menuOpts.font).text(constants.arrowSymbol[menuOpts.direction]);\n });\n arrow.attr({\n x: dims.headerWidth - constants.arrowOffsetX + menuOpts.pad.l,\n y: dims.headerHeight / 2 + constants.textOffsetY + menuOpts.pad.t\n });\n header.on(\"click\", function() {\n gButton.call(\n removeAllButtons,\n String(isActive(gButton, menuOpts) ? -1 : menuOpts._index)\n );\n drawButtons(gd, gHeader, gButton, scrollBox, menuOpts);\n });\n header.on(\"mouseover\", function() {\n header.call(styleOnMouseOver);\n });\n header.on(\"mouseout\", function() {\n header.call(styleOnMouseOut, menuOpts);\n });\n Drawing.setTranslate(gHeader, dims.lx, dims.ly);\n }\n function drawButtons(gd, gHeader, gButton, scrollBox, menuOpts) {\n if (!gButton) {\n gButton = gHeader;\n gButton.attr(\"pointer-events\", \"all\");\n }\n var buttonData = !isFolded(gButton) || menuOpts.type === \"buttons\" ? menuOpts.buttons : [];\n var klass = menuOpts.type === \"dropdown\" ? constants.dropdownButtonClassName : constants.buttonClassName;\n var buttons = gButton.selectAll(\"g.\" + klass).data(Lib.filterVisible(buttonData));\n var enter = buttons.enter().append(\"g\").classed(klass, true);\n var exit = buttons.exit();\n if (menuOpts.type === \"dropdown\") {\n enter.attr(\"opacity\", \"0\").transition().attr(\"opacity\", \"1\");\n exit.transition().attr(\"opacity\", \"0\").remove();\n } else {\n exit.remove();\n }\n var x0 = 0;\n var y0 = 0;\n var dims = menuOpts._dims;\n var isVertical = [\"up\", \"down\"].indexOf(menuOpts.direction) !== -1;\n if (menuOpts.type === \"dropdown\") {\n if (isVertical) {\n y0 = dims.headerHeight + constants.gapButtonHeader;\n } else {\n x0 = dims.headerWidth + constants.gapButtonHeader;\n }\n }\n if (menuOpts.type === \"dropdown\" && menuOpts.direction === \"up\") {\n y0 = -constants.gapButtonHeader + constants.gapButton - dims.openHeight;\n }\n if (menuOpts.type === \"dropdown\" && menuOpts.direction === \"left\") {\n x0 = -constants.gapButtonHeader + constants.gapButton - dims.openWidth;\n }\n var posOpts = {\n x: dims.lx + x0 + menuOpts.pad.l,\n y: dims.ly + y0 + menuOpts.pad.t,\n yPad: constants.gapButton,\n xPad: constants.gapButton,\n index: 0\n };\n var scrollBoxPosition = {\n l: posOpts.x + menuOpts.borderwidth,\n t: posOpts.y + menuOpts.borderwidth\n };\n buttons.each(function(buttonOpts, buttonIndex) {\n var button = d3.select(this);\n button.call(drawItem, menuOpts, buttonOpts, gd).call(setItemPosition, menuOpts, posOpts);\n button.on(\"click\", function() {\n if (d3.event.defaultPrevented) return;\n if (buttonOpts.execute) {\n if (buttonOpts.args2 && menuOpts.active === buttonIndex) {\n setActive(gd, menuOpts, buttonOpts, gHeader, gButton, scrollBox, -1);\n Plots.executeAPICommand(gd, buttonOpts.method, buttonOpts.args2);\n } else {\n setActive(gd, menuOpts, buttonOpts, gHeader, gButton, scrollBox, buttonIndex);\n Plots.executeAPICommand(gd, buttonOpts.method, buttonOpts.args);\n }\n }\n gd.emit(\"plotly_buttonclicked\", { menu: menuOpts, button: buttonOpts, active: menuOpts.active });\n });\n button.on(\"mouseover\", function() {\n button.call(styleOnMouseOver);\n });\n button.on(\"mouseout\", function() {\n button.call(styleOnMouseOut, menuOpts);\n buttons.call(styleButtons, menuOpts);\n });\n });\n buttons.call(styleButtons, menuOpts);\n if (isVertical) {\n scrollBoxPosition.w = Math.max(dims.openWidth, dims.headerWidth);\n scrollBoxPosition.h = posOpts.y - scrollBoxPosition.t;\n } else {\n scrollBoxPosition.w = posOpts.x - scrollBoxPosition.l;\n scrollBoxPosition.h = Math.max(dims.openHeight, dims.headerHeight);\n }\n scrollBoxPosition.direction = menuOpts.direction;\n if (scrollBox) {\n if (buttons.size()) {\n drawScrollBox(gd, gHeader, gButton, scrollBox, menuOpts, scrollBoxPosition);\n } else {\n hideScrollBox(scrollBox);\n }\n }\n }\n function drawScrollBox(gd, gHeader, gButton, scrollBox, menuOpts, position) {\n var direction = menuOpts.direction;\n var isVertical = direction === \"up\" || direction === \"down\";\n var dims = menuOpts._dims;\n var active = menuOpts.active;\n var translateX, translateY;\n var i;\n if (isVertical) {\n translateY = 0;\n for (i = 0; i < active; i++) {\n translateY += dims.heights[i] + constants.gapButton;\n }\n } else {\n translateX = 0;\n for (i = 0; i < active; i++) {\n translateX += dims.widths[i] + constants.gapButton;\n }\n }\n scrollBox.enable(position, translateX, translateY);\n if (scrollBox.hbar) {\n scrollBox.hbar.attr(\"opacity\", \"0\").transition().attr(\"opacity\", \"1\");\n }\n if (scrollBox.vbar) {\n scrollBox.vbar.attr(\"opacity\", \"0\").transition().attr(\"opacity\", \"1\");\n }\n }\n function hideScrollBox(scrollBox) {\n var hasHBar = !!scrollBox.hbar;\n var hasVBar = !!scrollBox.vbar;\n if (hasHBar) {\n scrollBox.hbar.transition().attr(\"opacity\", \"0\").each(\"end\", function() {\n hasHBar = false;\n if (!hasVBar) scrollBox.disable();\n });\n }\n if (hasVBar) {\n scrollBox.vbar.transition().attr(\"opacity\", \"0\").each(\"end\", function() {\n hasVBar = false;\n if (!hasHBar) scrollBox.disable();\n });\n }\n }\n function drawItem(item, menuOpts, itemOpts, gd) {\n item.call(drawItemRect, menuOpts).call(drawItemText, menuOpts, itemOpts, gd);\n }\n function drawItemRect(item, menuOpts) {\n var rect = Lib.ensureSingle(item, \"rect\", constants.itemRectClassName, function(s) {\n s.attr({\n rx: constants.rx,\n ry: constants.ry,\n \"shape-rendering\": \"crispEdges\"\n });\n });\n rect.call(Color.stroke, menuOpts.bordercolor).call(Color.fill, menuOpts.bgcolor).style(\"stroke-width\", menuOpts.borderwidth + \"px\");\n }\n function drawItemText(item, menuOpts, itemOpts, gd) {\n var text = Lib.ensureSingle(item, \"text\", constants.itemTextClassName, function(s) {\n s.attr({\n \"text-anchor\": \"start\",\n \"data-notex\": 1\n });\n });\n var tx = itemOpts.label;\n var _meta = gd._fullLayout._meta;\n if (_meta) tx = Lib.templateString(tx, _meta);\n text.call(Drawing.font, menuOpts.font).text(tx).call(svgTextUtils.convertToTspans, gd);\n }\n function styleButtons(buttons, menuOpts) {\n var active = menuOpts.active;\n buttons.each(function(buttonOpts, i) {\n var button = d3.select(this);\n if (i === active && menuOpts.showactive) {\n button.select(\"rect.\" + constants.itemRectClassName).call(Color.fill, constants.activeColor);\n }\n });\n }\n function styleOnMouseOver(item) {\n item.select(\"rect.\" + constants.itemRectClassName).call(Color.fill, constants.hoverColor);\n }\n function styleOnMouseOut(item, menuOpts) {\n item.select(\"rect.\" + constants.itemRectClassName).call(Color.fill, menuOpts.bgcolor);\n }\n function findDimensions(gd, menuOpts) {\n var dims = menuOpts._dims = {\n width1: 0,\n height1: 0,\n heights: [],\n widths: [],\n totalWidth: 0,\n totalHeight: 0,\n openWidth: 0,\n openHeight: 0,\n lx: 0,\n ly: 0\n };\n var fakeButtons = Drawing.tester.selectAll(\"g.\" + constants.dropdownButtonClassName).data(Lib.filterVisible(menuOpts.buttons));\n fakeButtons.enter().append(\"g\").classed(constants.dropdownButtonClassName, true);\n var isVertical = [\"up\", \"down\"].indexOf(menuOpts.direction) !== -1;\n fakeButtons.each(function(buttonOpts, i) {\n var button = d3.select(this);\n button.call(drawItem, menuOpts, buttonOpts, gd);\n var text = button.select(\".\" + constants.itemTextClassName);\n var tWidth = text.node() && Drawing.bBox(text.node()).width;\n var wEff = Math.max(tWidth + constants.textPadX, constants.minWidth);\n var tHeight = menuOpts.font.size * LINE_SPACING;\n var tLines = svgTextUtils.lineCount(text);\n var hEff = Math.max(tHeight * tLines, constants.minHeight) + constants.textOffsetY;\n hEff = Math.ceil(hEff);\n wEff = Math.ceil(wEff);\n dims.widths[i] = wEff;\n dims.heights[i] = hEff;\n dims.height1 = Math.max(dims.height1, hEff);\n dims.width1 = Math.max(dims.width1, wEff);\n if (isVertical) {\n dims.totalWidth = Math.max(dims.totalWidth, wEff);\n dims.openWidth = dims.totalWidth;\n dims.totalHeight += hEff + constants.gapButton;\n dims.openHeight += hEff + constants.gapButton;\n } else {\n dims.totalWidth += wEff + constants.gapButton;\n dims.openWidth += wEff + constants.gapButton;\n dims.totalHeight = Math.max(dims.totalHeight, hEff);\n dims.openHeight = dims.totalHeight;\n }\n });\n if (isVertical) {\n dims.totalHeight -= constants.gapButton;\n } else {\n dims.totalWidth -= constants.gapButton;\n }\n dims.headerWidth = dims.width1 + constants.arrowPadX;\n dims.headerHeight = dims.height1;\n if (menuOpts.type === \"dropdown\") {\n if (isVertical) {\n dims.width1 += constants.arrowPadX;\n dims.totalHeight = dims.height1;\n } else {\n dims.totalWidth = dims.width1;\n }\n dims.totalWidth += constants.arrowPadX;\n }\n fakeButtons.remove();\n var paddedWidth = dims.totalWidth + menuOpts.pad.l + menuOpts.pad.r;\n var paddedHeight = dims.totalHeight + menuOpts.pad.t + menuOpts.pad.b;\n var graphSize = gd._fullLayout._size;\n dims.lx = graphSize.l + graphSize.w * menuOpts.x;\n dims.ly = graphSize.t + graphSize.h * (1 - menuOpts.y);\n var xanchor = \"left\";\n if (Lib.isRightAnchor(menuOpts)) {\n dims.lx -= paddedWidth;\n xanchor = \"right\";\n }\n if (Lib.isCenterAnchor(menuOpts)) {\n dims.lx -= paddedWidth / 2;\n xanchor = \"center\";\n }\n var yanchor = \"top\";\n if (Lib.isBottomAnchor(menuOpts)) {\n dims.ly -= paddedHeight;\n yanchor = \"bottom\";\n }\n if (Lib.isMiddleAnchor(menuOpts)) {\n dims.ly -= paddedHeight / 2;\n yanchor = \"middle\";\n }\n dims.totalWidth = Math.ceil(dims.totalWidth);\n dims.totalHeight = Math.ceil(dims.totalHeight);\n dims.lx = Math.round(dims.lx);\n dims.ly = Math.round(dims.ly);\n Plots.autoMargin(gd, autoMarginId(menuOpts), {\n x: menuOpts.x,\n y: menuOpts.y,\n l: paddedWidth * ({ right: 1, center: 0.5 }[xanchor] || 0),\n r: paddedWidth * ({ left: 1, center: 0.5 }[xanchor] || 0),\n b: paddedHeight * ({ top: 1, middle: 0.5 }[yanchor] || 0),\n t: paddedHeight * ({ bottom: 1, middle: 0.5 }[yanchor] || 0)\n });\n }\n function autoMarginId(menuOpts) {\n return constants.autoMarginIdRoot + menuOpts._index;\n }\n function setItemPosition(item, menuOpts, posOpts, overrideOpts) {\n overrideOpts = overrideOpts || {};\n var rect = item.select(\".\" + constants.itemRectClassName);\n var text = item.select(\".\" + constants.itemTextClassName);\n var borderWidth = menuOpts.borderwidth;\n var index = posOpts.index;\n var dims = menuOpts._dims;\n Drawing.setTranslate(item, borderWidth + posOpts.x, borderWidth + posOpts.y);\n var isVertical = [\"up\", \"down\"].indexOf(menuOpts.direction) !== -1;\n var finalHeight = overrideOpts.height || (isVertical ? dims.heights[index] : dims.height1);\n rect.attr({\n x: 0,\n y: 0,\n width: overrideOpts.width || (isVertical ? dims.width1 : dims.widths[index]),\n height: finalHeight\n });\n var tHeight = menuOpts.font.size * LINE_SPACING;\n var tLines = svgTextUtils.lineCount(text);\n var spanOffset = (tLines - 1) * tHeight / 2;\n svgTextUtils.positionText(\n text,\n constants.textOffsetX,\n finalHeight / 2 - spanOffset + constants.textOffsetY\n );\n if (isVertical) {\n posOpts.y += dims.heights[index] + posOpts.yPad;\n } else {\n posOpts.x += dims.widths[index] + posOpts.xPad;\n }\n posOpts.index++;\n }\n function removeAllButtons(gButton, newMenuIndexAttr) {\n gButton.attr(constants.menuIndexAttrName, newMenuIndexAttr || \"-1\").selectAll(\"g.\" + constants.dropdownButtonClassName).remove();\n }\n }\n });\n\n // src/components/updatemenus/index.js\n var require_updatemenus = __commonJS({\n \"src/components/updatemenus/index.js\"(exports, module) {\n \"use strict\";\n var constants = require_constants9();\n module.exports = {\n moduleType: \"component\",\n name: constants.name,\n layoutAttributes: require_attributes18(),\n supplyLayoutDefaults: require_defaults14(),\n draw: require_draw7()\n };\n }\n });\n\n // src/components/sliders/constants.js\n var require_constants10 = __commonJS({\n \"src/components/sliders/constants.js\"(exports, module) {\n \"use strict\";\n module.exports = {\n // layout attribute name\n name: \"sliders\",\n // class names\n containerClassName: \"slider-container\",\n groupClassName: \"slider-group\",\n inputAreaClass: \"slider-input-area\",\n railRectClass: \"slider-rail-rect\",\n railTouchRectClass: \"slider-rail-touch-rect\",\n gripRectClass: \"slider-grip-rect\",\n tickRectClass: \"slider-tick-rect\",\n inputProxyClass: \"slider-input-proxy\",\n labelsClass: \"slider-labels\",\n labelGroupClass: \"slider-label-group\",\n labelClass: \"slider-label\",\n currentValueClass: \"slider-current-value\",\n railHeight: 5,\n // DOM attribute name in button group keeping track\n // of active update menu\n menuIndexAttrName: \"slider-active-index\",\n // id root pass to Plots.autoMargin\n autoMarginIdRoot: \"slider-\",\n // min item width / height\n minWidth: 30,\n minHeight: 30,\n // padding around item text\n textPadX: 40,\n // arrow offset off right edge\n arrowOffsetX: 4,\n railRadius: 2,\n railWidth: 5,\n railBorder: 4,\n railBorderWidth: 1,\n railBorderColor: \"#bec8d9\",\n railBgColor: \"#f8fafc\",\n // The distance of the rail from the edge of the touchable area\n // Slightly less than the step inset because of the curved edges\n // of the rail\n railInset: 8,\n // The distance from the extremal tick marks to the edge of the\n // touchable area. This is basically the same as the grip radius,\n // but for other styles it wouldn't really need to be.\n stepInset: 10,\n gripRadius: 10,\n gripWidth: 20,\n gripHeight: 20,\n gripBorder: 20,\n gripBorderWidth: 1,\n gripBorderColor: \"#bec8d9\",\n gripBgColor: \"#f6f8fa\",\n gripBgActiveColor: \"#dbdde0\",\n labelPadding: 8,\n labelOffset: 0,\n tickWidth: 1,\n tickColor: \"#333\",\n tickOffset: 25,\n tickLength: 7,\n minorTickOffset: 25,\n minorTickColor: \"#333\",\n minorTickLength: 4,\n // Extra space below the current value label:\n currentValuePadding: 8,\n currentValueInset: 0\n };\n }\n });\n\n // src/components/sliders/attributes.js\n var require_attributes19 = __commonJS({\n \"src/components/sliders/attributes.js\"(exports, module) {\n \"use strict\";\n var fontAttrs = require_font_attributes();\n var padAttrs = require_pad_attributes();\n var extendDeepAll = require_extend().extendDeepAll;\n var overrideAll = require_edit_types().overrideAll;\n var animationAttrs = require_animation_attributes();\n var templatedArray = require_plot_template().templatedArray;\n var constants = require_constants10();\n var stepsAttrs = templatedArray(\"step\", {\n visible: {\n valType: \"boolean\",\n dflt: true\n },\n method: {\n valType: \"enumerated\",\n values: [\"restyle\", \"relayout\", \"animate\", \"update\", \"skip\"],\n dflt: \"restyle\"\n },\n args: {\n valType: \"info_array\",\n freeLength: true,\n items: [\n { valType: \"any\" },\n { valType: \"any\" },\n { valType: \"any\" }\n ]\n },\n label: {\n valType: \"string\"\n },\n value: {\n valType: \"string\"\n },\n execute: {\n valType: \"boolean\",\n dflt: true\n }\n });\n module.exports = overrideAll(templatedArray(\"slider\", {\n visible: {\n valType: \"boolean\",\n dflt: true\n },\n active: {\n valType: \"number\",\n min: 0,\n dflt: 0\n },\n steps: stepsAttrs,\n lenmode: {\n valType: \"enumerated\",\n values: [\"fraction\", \"pixels\"],\n dflt: \"fraction\"\n },\n len: {\n valType: \"number\",\n min: 0,\n dflt: 1\n },\n x: {\n valType: \"number\",\n min: -2,\n max: 3,\n dflt: 0\n },\n pad: extendDeepAll(padAttrs({ editType: \"arraydraw\" }), {}, { t: { dflt: 20 } }),\n xanchor: {\n valType: \"enumerated\",\n values: [\"auto\", \"left\", \"center\", \"right\"],\n dflt: \"left\"\n },\n y: {\n valType: \"number\",\n min: -2,\n max: 3,\n dflt: 0\n },\n yanchor: {\n valType: \"enumerated\",\n values: [\"auto\", \"top\", \"middle\", \"bottom\"],\n dflt: \"top\"\n },\n transition: {\n duration: {\n valType: \"number\",\n min: 0,\n dflt: 150\n },\n easing: {\n valType: \"enumerated\",\n values: animationAttrs.transition.easing.values,\n dflt: \"cubic-in-out\"\n }\n },\n currentvalue: {\n visible: {\n valType: \"boolean\",\n dflt: true\n },\n xanchor: {\n valType: \"enumerated\",\n values: [\"left\", \"center\", \"right\"],\n dflt: \"left\"\n },\n offset: {\n valType: \"number\",\n dflt: 10\n },\n prefix: {\n valType: \"string\"\n },\n suffix: {\n valType: \"string\"\n },\n font: fontAttrs({})\n },\n font: fontAttrs({}),\n activebgcolor: {\n valType: \"color\",\n dflt: constants.gripBgActiveColor\n },\n bgcolor: {\n valType: \"color\",\n dflt: constants.railBgColor\n },\n bordercolor: {\n valType: \"color\",\n dflt: constants.railBorderColor\n },\n borderwidth: {\n valType: \"number\",\n min: 0,\n dflt: constants.railBorderWidth\n },\n ticklen: {\n valType: \"number\",\n min: 0,\n dflt: constants.tickLength\n },\n tickcolor: {\n valType: \"color\",\n dflt: constants.tickColor\n },\n tickwidth: {\n valType: \"number\",\n min: 0,\n dflt: 1\n },\n minorticklen: {\n valType: \"number\",\n min: 0,\n dflt: constants.minorTickLength\n }\n }), \"arraydraw\", \"from-root\");\n }\n });\n\n // src/components/sliders/defaults.js\n var require_defaults15 = __commonJS({\n \"src/components/sliders/defaults.js\"(exports, module) {\n \"use strict\";\n var Lib = require_lib();\n var handleArrayContainerDefaults = require_array_container_defaults();\n var attributes = require_attributes19();\n var constants = require_constants10();\n var name = constants.name;\n var stepAttrs = attributes.steps;\n module.exports = function slidersDefaults(layoutIn, layoutOut) {\n handleArrayContainerDefaults(layoutIn, layoutOut, {\n name,\n handleItemDefaults: sliderDefaults\n });\n };\n function sliderDefaults(sliderIn, sliderOut, layoutOut) {\n function coerce(attr, dflt) {\n return Lib.coerce(sliderIn, sliderOut, attributes, attr, dflt);\n }\n var steps = handleArrayContainerDefaults(sliderIn, sliderOut, {\n name: \"steps\",\n handleItemDefaults: stepDefaults\n });\n var stepCount = 0;\n for (var i = 0; i < steps.length; i++) {\n if (steps[i].visible) stepCount++;\n }\n var visible;\n if (stepCount < 2) visible = sliderOut.visible = false;\n else visible = coerce(\"visible\");\n if (!visible) return;\n sliderOut._stepCount = stepCount;\n var visSteps = sliderOut._visibleSteps = Lib.filterVisible(steps);\n var active = coerce(\"active\");\n if (!(steps[active] || {}).visible) sliderOut.active = visSteps[0]._index;\n coerce(\"x\");\n coerce(\"y\");\n Lib.noneOrAll(sliderIn, sliderOut, [\"x\", \"y\"]);\n coerce(\"xanchor\");\n coerce(\"yanchor\");\n coerce(\"len\");\n coerce(\"lenmode\");\n coerce(\"pad.t\");\n coerce(\"pad.r\");\n coerce(\"pad.b\");\n coerce(\"pad.l\");\n Lib.coerceFont(coerce, \"font\", layoutOut.font);\n var currentValueIsVisible = coerce(\"currentvalue.visible\");\n if (currentValueIsVisible) {\n coerce(\"currentvalue.xanchor\");\n coerce(\"currentvalue.prefix\");\n coerce(\"currentvalue.suffix\");\n coerce(\"currentvalue.offset\");\n Lib.coerceFont(coerce, \"currentvalue.font\", sliderOut.font);\n }\n coerce(\"transition.duration\");\n coerce(\"transition.easing\");\n coerce(\"bgcolor\");\n coerce(\"activebgcolor\");\n coerce(\"bordercolor\");\n coerce(\"borderwidth\");\n coerce(\"ticklen\");\n coerce(\"tickwidth\");\n coerce(\"tickcolor\");\n coerce(\"minorticklen\");\n }\n function stepDefaults(valueIn, valueOut) {\n function coerce(attr, dflt) {\n return Lib.coerce(valueIn, valueOut, stepAttrs, attr, dflt);\n }\n var visible;\n if (valueIn.method !== \"skip\" && !Array.isArray(valueIn.args)) {\n visible = valueOut.visible = false;\n } else visible = coerce(\"visible\");\n if (visible) {\n coerce(\"method\");\n coerce(\"args\");\n var label = coerce(\"label\", \"step-\" + valueOut._index);\n coerce(\"value\", label);\n coerce(\"execute\");\n }\n }\n }\n });\n\n // src/components/sliders/draw.js\n var require_draw8 = __commonJS({\n \"src/components/sliders/draw.js\"(exports, module) {\n \"use strict\";\n var d3 = require_d3();\n var Plots = require_plots();\n var Color = require_color();\n var Drawing = require_drawing();\n var Lib = require_lib();\n var strTranslate = Lib.strTranslate;\n var svgTextUtils = require_svg_text_utils();\n var arrayEditor = require_plot_template().arrayEditor;\n var constants = require_constants10();\n var alignmentConstants = require_alignment();\n var LINE_SPACING = alignmentConstants.LINE_SPACING;\n var FROM_TL = alignmentConstants.FROM_TL;\n var FROM_BR = alignmentConstants.FROM_BR;\n module.exports = function draw(gd) {\n var staticPlot = gd._context.staticPlot;\n var fullLayout = gd._fullLayout;\n var sliderData = makeSliderData(fullLayout, gd);\n var sliders = fullLayout._infolayer.selectAll(\"g.\" + constants.containerClassName).data(sliderData.length > 0 ? [0] : []);\n sliders.enter().append(\"g\").classed(constants.containerClassName, true).style(\"cursor\", staticPlot ? null : \"ew-resize\");\n function clearSlider(sliderOpts2) {\n if (sliderOpts2._commandObserver) {\n sliderOpts2._commandObserver.remove();\n delete sliderOpts2._commandObserver;\n }\n Plots.autoMargin(gd, autoMarginId(sliderOpts2));\n }\n sliders.exit().each(function() {\n d3.select(this).selectAll(\"g.\" + constants.groupClassName).each(clearSlider);\n }).remove();\n if (sliderData.length === 0) return;\n var sliderGroups = sliders.selectAll(\"g.\" + constants.groupClassName).data(sliderData, keyFunction);\n sliderGroups.enter().append(\"g\").classed(constants.groupClassName, true);\n sliderGroups.exit().each(clearSlider).remove();\n for (var i = 0; i < sliderData.length; i++) {\n var sliderOpts = sliderData[i];\n findDimensions(gd, sliderOpts);\n }\n sliderGroups.each(function(sliderOpts2) {\n var gSlider = d3.select(this);\n computeLabelSteps(sliderOpts2);\n Plots.manageCommandObserver(gd, sliderOpts2, sliderOpts2._visibleSteps, function(data) {\n var opts = gSlider.data()[0];\n if (opts.active === data.index) return;\n if (opts._dragging) return;\n setActive(gd, gSlider, opts, data.index, false, true);\n });\n drawSlider(gd, d3.select(this), sliderOpts2);\n });\n };\n function autoMarginId(sliderOpts) {\n return constants.autoMarginIdRoot + sliderOpts._index;\n }\n function makeSliderData(fullLayout, gd) {\n var contOpts = fullLayout[constants.name];\n var sliderData = [];\n for (var i = 0; i < contOpts.length; i++) {\n var item = contOpts[i];\n if (!item.visible) continue;\n item._gd = gd;\n sliderData.push(item);\n }\n return sliderData;\n }\n function keyFunction(opts) {\n return opts._index;\n }\n function findDimensions(gd, sliderOpts) {\n var sliderLabels = Drawing.tester.selectAll(\"g.\" + constants.labelGroupClass).data(sliderOpts._visibleSteps);\n sliderLabels.enter().append(\"g\").classed(constants.labelGroupClass, true);\n var maxLabelWidth = 0;\n var labelHeight = 0;\n sliderLabels.each(function(stepOpts) {\n var labelGroup = d3.select(this);\n var text = drawLabel(labelGroup, { step: stepOpts }, sliderOpts);\n var textNode = text.node();\n if (textNode) {\n var bBox = Drawing.bBox(textNode);\n labelHeight = Math.max(labelHeight, bBox.height);\n maxLabelWidth = Math.max(maxLabelWidth, bBox.width);\n }\n });\n sliderLabels.remove();\n var dims = sliderOpts._dims = {};\n dims.inputAreaWidth = Math.max(\n constants.railWidth,\n constants.gripHeight\n );\n var graphSize = gd._fullLayout._size;\n dims.lx = graphSize.l + graphSize.w * sliderOpts.x;\n dims.ly = graphSize.t + graphSize.h * (1 - sliderOpts.y);\n if (sliderOpts.lenmode === \"fraction\") {\n dims.outerLength = Math.round(graphSize.w * sliderOpts.len);\n } else {\n dims.outerLength = sliderOpts.len;\n }\n dims.inputAreaStart = 0;\n dims.inputAreaLength = Math.round(dims.outerLength - sliderOpts.pad.l - sliderOpts.pad.r);\n var textableInputLength = dims.inputAreaLength - 2 * constants.stepInset;\n var availableSpacePerLabel = textableInputLength / (sliderOpts._stepCount - 1);\n var computedSpacePerLabel = maxLabelWidth + constants.labelPadding;\n dims.labelStride = Math.max(1, Math.ceil(computedSpacePerLabel / availableSpacePerLabel));\n dims.labelHeight = labelHeight;\n dims.currentValueMaxWidth = 0;\n dims.currentValueHeight = 0;\n dims.currentValueTotalHeight = 0;\n dims.currentValueMaxLines = 1;\n if (sliderOpts.currentvalue.visible) {\n var dummyGroup = Drawing.tester.append(\"g\");\n sliderLabels.each(function(stepOpts) {\n var curValPrefix = drawCurrentValue(dummyGroup, sliderOpts, stepOpts.label);\n var curValSize = curValPrefix.node() && Drawing.bBox(curValPrefix.node()) || { width: 0, height: 0 };\n var lines = svgTextUtils.lineCount(curValPrefix);\n dims.currentValueMaxWidth = Math.max(dims.currentValueMaxWidth, Math.ceil(curValSize.width));\n dims.currentValueHeight = Math.max(dims.currentValueHeight, Math.ceil(curValSize.height));\n dims.currentValueMaxLines = Math.max(dims.currentValueMaxLines, lines);\n });\n dims.currentValueTotalHeight = dims.currentValueHeight + sliderOpts.currentvalue.offset;\n dummyGroup.remove();\n }\n dims.height = dims.currentValueTotalHeight + constants.tickOffset + sliderOpts.ticklen + constants.labelOffset + dims.labelHeight + sliderOpts.pad.t + sliderOpts.pad.b;\n var xanchor = \"left\";\n if (Lib.isRightAnchor(sliderOpts)) {\n dims.lx -= dims.outerLength;\n xanchor = \"right\";\n }\n if (Lib.isCenterAnchor(sliderOpts)) {\n dims.lx -= dims.outerLength / 2;\n xanchor = \"center\";\n }\n var yanchor = \"top\";\n if (Lib.isBottomAnchor(sliderOpts)) {\n dims.ly -= dims.height;\n yanchor = \"bottom\";\n }\n if (Lib.isMiddleAnchor(sliderOpts)) {\n dims.ly -= dims.height / 2;\n yanchor = \"middle\";\n }\n dims.outerLength = Math.ceil(dims.outerLength);\n dims.height = Math.ceil(dims.height);\n dims.lx = Math.round(dims.lx);\n dims.ly = Math.round(dims.ly);\n var marginOpts = {\n y: sliderOpts.y,\n b: dims.height * FROM_BR[yanchor],\n t: dims.height * FROM_TL[yanchor]\n };\n if (sliderOpts.lenmode === \"fraction\") {\n marginOpts.l = 0;\n marginOpts.xl = sliderOpts.x - sliderOpts.len * FROM_TL[xanchor];\n marginOpts.r = 0;\n marginOpts.xr = sliderOpts.x + sliderOpts.len * FROM_BR[xanchor];\n } else {\n marginOpts.x = sliderOpts.x;\n marginOpts.l = dims.outerLength * FROM_TL[xanchor];\n marginOpts.r = dims.outerLength * FROM_BR[xanchor];\n }\n Plots.autoMargin(gd, autoMarginId(sliderOpts), marginOpts);\n }\n function drawSlider(gd, sliderGroup, sliderOpts) {\n if (!(sliderOpts.steps[sliderOpts.active] || {}).visible) {\n sliderOpts.active = sliderOpts._visibleSteps[0]._index;\n }\n sliderGroup.call(drawCurrentValue, sliderOpts).call(drawRail, sliderOpts).call(drawLabelGroup, sliderOpts).call(drawTicks, sliderOpts).call(drawTouchRect, gd, sliderOpts).call(drawGrip, gd, sliderOpts);\n var dims = sliderOpts._dims;\n Drawing.setTranslate(sliderGroup, dims.lx + sliderOpts.pad.l, dims.ly + sliderOpts.pad.t);\n sliderGroup.call(setGripPosition, sliderOpts, false);\n sliderGroup.call(drawCurrentValue, sliderOpts);\n }\n function drawCurrentValue(sliderGroup, sliderOpts, valueOverride) {\n if (!sliderOpts.currentvalue.visible) return;\n var dims = sliderOpts._dims;\n var x0, textAnchor;\n switch (sliderOpts.currentvalue.xanchor) {\n case \"right\":\n x0 = dims.inputAreaLength - constants.currentValueInset - dims.currentValueMaxWidth;\n textAnchor = \"left\";\n break;\n case \"center\":\n x0 = dims.inputAreaLength * 0.5;\n textAnchor = \"middle\";\n break;\n default:\n x0 = constants.currentValueInset;\n textAnchor = \"left\";\n }\n var text = Lib.ensureSingle(sliderGroup, \"text\", constants.labelClass, function(s) {\n s.attr({\n \"text-anchor\": textAnchor,\n \"data-notex\": 1\n });\n });\n var str = sliderOpts.currentvalue.prefix ? sliderOpts.currentvalue.prefix : \"\";\n if (typeof valueOverride === \"string\") {\n str += valueOverride;\n } else {\n var curVal = sliderOpts.steps[sliderOpts.active].label;\n var _meta = sliderOpts._gd._fullLayout._meta;\n if (_meta) curVal = Lib.templateString(curVal, _meta);\n str += curVal;\n }\n if (sliderOpts.currentvalue.suffix) {\n str += sliderOpts.currentvalue.suffix;\n }\n text.call(Drawing.font, sliderOpts.currentvalue.font).text(str).call(svgTextUtils.convertToTspans, sliderOpts._gd);\n var lines = svgTextUtils.lineCount(text);\n var y0 = (dims.currentValueMaxLines + 1 - lines) * sliderOpts.currentvalue.font.size * LINE_SPACING;\n svgTextUtils.positionText(text, x0, y0);\n return text;\n }\n function drawGrip(sliderGroup, gd, sliderOpts) {\n var grip = Lib.ensureSingle(sliderGroup, \"rect\", constants.gripRectClass, function(s) {\n s.call(attachGripEvents, gd, sliderGroup, sliderOpts).style(\"pointer-events\", \"all\");\n });\n grip.attr({\n width: constants.gripWidth,\n height: constants.gripHeight,\n rx: constants.gripRadius,\n ry: constants.gripRadius\n }).call(Color.stroke, sliderOpts.bordercolor).call(Color.fill, sliderOpts.bgcolor).style(\"stroke-width\", sliderOpts.borderwidth + \"px\");\n }\n function drawLabel(item, data, sliderOpts) {\n var text = Lib.ensureSingle(item, \"text\", constants.labelClass, function(s) {\n s.attr({\n \"text-anchor\": \"middle\",\n \"data-notex\": 1\n });\n });\n var tx = data.step.label;\n var _meta = sliderOpts._gd._fullLayout._meta;\n if (_meta) tx = Lib.templateString(tx, _meta);\n text.call(Drawing.font, sliderOpts.font).text(tx).call(svgTextUtils.convertToTspans, sliderOpts._gd);\n return text;\n }\n function drawLabelGroup(sliderGroup, sliderOpts) {\n var labels = Lib.ensureSingle(sliderGroup, \"g\", constants.labelsClass);\n var dims = sliderOpts._dims;\n var labelItems = labels.selectAll(\"g.\" + constants.labelGroupClass).data(dims.labelSteps);\n labelItems.enter().append(\"g\").classed(constants.labelGroupClass, true);\n labelItems.exit().remove();\n labelItems.each(function(d) {\n var item = d3.select(this);\n item.call(drawLabel, d, sliderOpts);\n Drawing.setTranslate(\n item,\n normalizedValueToPosition(sliderOpts, d.fraction),\n constants.tickOffset + sliderOpts.ticklen + // position is the baseline of the top line of text only, even\n // if the label spans multiple lines\n sliderOpts.font.size * LINE_SPACING + constants.labelOffset + dims.currentValueTotalHeight\n );\n });\n }\n function handleInput(gd, sliderGroup, sliderOpts, normalizedPosition, doTransition) {\n var quantizedPosition = Math.round(normalizedPosition * (sliderOpts._stepCount - 1));\n var quantizedIndex = sliderOpts._visibleSteps[quantizedPosition]._index;\n if (quantizedIndex !== sliderOpts.active) {\n setActive(gd, sliderGroup, sliderOpts, quantizedIndex, true, doTransition);\n }\n }\n function setActive(gd, sliderGroup, sliderOpts, index, doCallback, doTransition) {\n var previousActive = sliderOpts.active;\n sliderOpts.active = index;\n arrayEditor(gd.layout, constants.name, sliderOpts).applyUpdate(\"active\", index);\n var step = sliderOpts.steps[sliderOpts.active];\n sliderGroup.call(setGripPosition, sliderOpts, doTransition);\n sliderGroup.call(drawCurrentValue, sliderOpts);\n gd.emit(\"plotly_sliderchange\", {\n slider: sliderOpts,\n step: sliderOpts.steps[sliderOpts.active],\n interaction: doCallback,\n previousActive\n });\n if (step && step.method && doCallback) {\n if (sliderGroup._nextMethod) {\n sliderGroup._nextMethod.step = step;\n sliderGroup._nextMethod.doCallback = doCallback;\n sliderGroup._nextMethod.doTransition = doTransition;\n } else {\n sliderGroup._nextMethod = { step, doCallback, doTransition };\n sliderGroup._nextMethodRaf = window.requestAnimationFrame(function() {\n var _step = sliderGroup._nextMethod.step;\n if (!_step.method) return;\n if (_step.execute) {\n Plots.executeAPICommand(gd, _step.method, _step.args);\n }\n sliderGroup._nextMethod = null;\n sliderGroup._nextMethodRaf = null;\n });\n }\n }\n }\n function attachGripEvents(item, gd, sliderGroup) {\n if (gd._context.staticPlot) return;\n var node = sliderGroup.node();\n var $gd = d3.select(gd);\n function getSliderOpts() {\n return sliderGroup.data()[0];\n }\n function mouseDownHandler() {\n var sliderOpts = getSliderOpts();\n gd.emit(\"plotly_sliderstart\", { slider: sliderOpts });\n var grip = sliderGroup.select(\".\" + constants.gripRectClass);\n d3.event.stopPropagation();\n d3.event.preventDefault();\n grip.call(Color.fill, sliderOpts.activebgcolor);\n var normalizedPosition = positionToNormalizedValue(sliderOpts, d3.mouse(node)[0]);\n handleInput(gd, sliderGroup, sliderOpts, normalizedPosition, true);\n sliderOpts._dragging = true;\n function mouseMoveHandler() {\n var sliderOpts2 = getSliderOpts();\n var normalizedPosition2 = positionToNormalizedValue(sliderOpts2, d3.mouse(node)[0]);\n handleInput(gd, sliderGroup, sliderOpts2, normalizedPosition2, false);\n }\n $gd.on(\"mousemove\", mouseMoveHandler);\n $gd.on(\"touchmove\", mouseMoveHandler);\n function mouseUpHandler() {\n var sliderOpts2 = getSliderOpts();\n sliderOpts2._dragging = false;\n grip.call(Color.fill, sliderOpts2.bgcolor);\n $gd.on(\"mouseup\", null);\n $gd.on(\"mousemove\", null);\n $gd.on(\"touchend\", null);\n $gd.on(\"touchmove\", null);\n gd.emit(\"plotly_sliderend\", {\n slider: sliderOpts2,\n step: sliderOpts2.steps[sliderOpts2.active]\n });\n }\n $gd.on(\"mouseup\", mouseUpHandler);\n $gd.on(\"touchend\", mouseUpHandler);\n }\n item.on(\"mousedown\", mouseDownHandler);\n item.on(\"touchstart\", mouseDownHandler);\n }\n function drawTicks(sliderGroup, sliderOpts) {\n var tick = sliderGroup.selectAll(\"rect.\" + constants.tickRectClass).data(sliderOpts._visibleSteps);\n var dims = sliderOpts._dims;\n tick.enter().append(\"rect\").classed(constants.tickRectClass, true);\n tick.exit().remove();\n tick.attr({\n width: sliderOpts.tickwidth + \"px\",\n \"shape-rendering\": \"crispEdges\"\n });\n tick.each(function(d, i) {\n var isMajor = i % dims.labelStride === 0;\n var item = d3.select(this);\n item.attr({ height: isMajor ? sliderOpts.ticklen : sliderOpts.minorticklen }).call(Color.fill, isMajor ? sliderOpts.tickcolor : sliderOpts.tickcolor);\n Drawing.setTranslate(\n item,\n normalizedValueToPosition(sliderOpts, i / (sliderOpts._stepCount - 1)) - 0.5 * sliderOpts.tickwidth,\n (isMajor ? constants.tickOffset : constants.minorTickOffset) + dims.currentValueTotalHeight\n );\n });\n }\n function computeLabelSteps(sliderOpts) {\n var dims = sliderOpts._dims;\n dims.labelSteps = [];\n var nsteps = sliderOpts._stepCount;\n for (var i = 0; i < nsteps; i += dims.labelStride) {\n dims.labelSteps.push({\n fraction: i / (nsteps - 1),\n step: sliderOpts._visibleSteps[i]\n });\n }\n }\n function setGripPosition(sliderGroup, sliderOpts, doTransition) {\n var grip = sliderGroup.select(\"rect.\" + constants.gripRectClass);\n var quantizedIndex = 0;\n for (var i = 0; i < sliderOpts._stepCount; i++) {\n if (sliderOpts._visibleSteps[i]._index === sliderOpts.active) {\n quantizedIndex = i;\n break;\n }\n }\n var x = normalizedValueToPosition(sliderOpts, quantizedIndex / (sliderOpts._stepCount - 1));\n if (sliderOpts._invokingCommand) return;\n var el = grip;\n if (doTransition && sliderOpts.transition.duration > 0) {\n el = el.transition().duration(sliderOpts.transition.duration).ease(sliderOpts.transition.easing);\n }\n el.attr(\"transform\", strTranslate(x - constants.gripWidth * 0.5, sliderOpts._dims.currentValueTotalHeight));\n }\n function normalizedValueToPosition(sliderOpts, normalizedPosition) {\n var dims = sliderOpts._dims;\n return dims.inputAreaStart + constants.stepInset + (dims.inputAreaLength - 2 * constants.stepInset) * Math.min(1, Math.max(0, normalizedPosition));\n }\n function positionToNormalizedValue(sliderOpts, position) {\n var dims = sliderOpts._dims;\n return Math.min(1, Math.max(0, (position - constants.stepInset - dims.inputAreaStart) / (dims.inputAreaLength - 2 * constants.stepInset - 2 * dims.inputAreaStart)));\n }\n function drawTouchRect(sliderGroup, gd, sliderOpts) {\n var dims = sliderOpts._dims;\n var rect = Lib.ensureSingle(sliderGroup, \"rect\", constants.railTouchRectClass, function(s) {\n s.call(attachGripEvents, gd, sliderGroup, sliderOpts).style(\"pointer-events\", \"all\");\n });\n rect.attr({\n width: dims.inputAreaLength,\n height: Math.max(dims.inputAreaWidth, constants.tickOffset + sliderOpts.ticklen + dims.labelHeight)\n }).call(Color.fill, sliderOpts.bgcolor).attr(\"opacity\", 0);\n Drawing.setTranslate(rect, 0, dims.currentValueTotalHeight);\n }\n function drawRail(sliderGroup, sliderOpts) {\n var dims = sliderOpts._dims;\n var computedLength = dims.inputAreaLength - constants.railInset * 2;\n var rect = Lib.ensureSingle(sliderGroup, \"rect\", constants.railRectClass);\n rect.attr({\n width: computedLength,\n height: constants.railWidth,\n rx: constants.railRadius,\n ry: constants.railRadius,\n \"shape-rendering\": \"crispEdges\"\n }).call(Color.stroke, sliderOpts.bordercolor).call(Color.fill, sliderOpts.bgcolor).style(\"stroke-width\", sliderOpts.borderwidth + \"px\");\n Drawing.setTranslate(\n rect,\n constants.railInset,\n (dims.inputAreaWidth - constants.railWidth) * 0.5 + dims.currentValueTotalHeight\n );\n }\n }\n });\n\n // src/components/sliders/index.js\n var require_sliders = __commonJS({\n \"src/components/sliders/index.js\"(exports, module) {\n \"use strict\";\n var constants = require_constants10();\n module.exports = {\n moduleType: \"component\",\n name: constants.name,\n layoutAttributes: require_attributes19(),\n supplyLayoutDefaults: require_defaults15(),\n draw: require_draw8()\n };\n }\n });\n\n // src/components/rangeslider/attributes.js\n var require_attributes20 = __commonJS({\n \"src/components/rangeslider/attributes.js\"(exports, module) {\n \"use strict\";\n var colorAttributes = require_attributes3();\n module.exports = {\n bgcolor: {\n valType: \"color\",\n dflt: colorAttributes.background,\n editType: \"plot\"\n },\n bordercolor: {\n valType: \"color\",\n dflt: colorAttributes.defaultLine,\n editType: \"plot\"\n },\n borderwidth: {\n valType: \"integer\",\n dflt: 0,\n min: 0,\n editType: \"plot\"\n },\n autorange: {\n valType: \"boolean\",\n dflt: true,\n editType: \"calc\",\n impliedEdits: { \"range[0]\": void 0, \"range[1]\": void 0 }\n },\n range: {\n valType: \"info_array\",\n items: [\n { valType: \"any\", editType: \"calc\", impliedEdits: { \"^autorange\": false } },\n { valType: \"any\", editType: \"calc\", impliedEdits: { \"^autorange\": false } }\n ],\n editType: \"calc\",\n impliedEdits: { autorange: false }\n },\n thickness: {\n valType: \"number\",\n dflt: 0.15,\n min: 0,\n max: 1,\n editType: \"plot\"\n },\n visible: {\n valType: \"boolean\",\n dflt: true,\n editType: \"calc\"\n },\n editType: \"calc\"\n };\n }\n });\n\n // src/components/rangeslider/oppaxis_attributes.js\n var require_oppaxis_attributes = __commonJS({\n \"src/components/rangeslider/oppaxis_attributes.js\"(exports, module) {\n \"use strict\";\n module.exports = {\n // not really a 'subplot' attribute container,\n // but this is the flag we use to denote attributes that\n // support yaxis, yaxis2, yaxis3, ... counters\n _isSubplotObj: true,\n rangemode: {\n valType: \"enumerated\",\n values: [\"auto\", \"fixed\", \"match\"],\n dflt: \"match\",\n editType: \"calc\"\n },\n range: {\n valType: \"info_array\",\n items: [\n { valType: \"any\", editType: \"plot\" },\n { valType: \"any\", editType: \"plot\" }\n ],\n editType: \"plot\"\n },\n editType: \"calc\"\n };\n }\n });\n\n // src/components/rangeslider/constants.js\n var require_constants11 = __commonJS({\n \"src/components/rangeslider/constants.js\"(exports, module) {\n \"use strict\";\n module.exports = {\n // attribute container name\n name: \"rangeslider\",\n // class names\n containerClassName: \"rangeslider-container\",\n bgClassName: \"rangeslider-bg\",\n rangePlotClassName: \"rangeslider-rangeplot\",\n maskMinClassName: \"rangeslider-mask-min\",\n maskMaxClassName: \"rangeslider-mask-max\",\n slideBoxClassName: \"rangeslider-slidebox\",\n grabberMinClassName: \"rangeslider-grabber-min\",\n grabAreaMinClassName: \"rangeslider-grabarea-min\",\n handleMinClassName: \"rangeslider-handle-min\",\n grabberMaxClassName: \"rangeslider-grabber-max\",\n grabAreaMaxClassName: \"rangeslider-grabarea-max\",\n handleMaxClassName: \"rangeslider-handle-max\",\n maskMinOppAxisClassName: \"rangeslider-mask-min-opp-axis\",\n maskMaxOppAxisClassName: \"rangeslider-mask-max-opp-axis\",\n // style constants\n maskColor: \"rgba(0,0,0,0.4)\",\n maskOppAxisColor: \"rgba(0,0,0,0.2)\",\n slideBoxFill: \"transparent\",\n slideBoxCursor: \"ew-resize\",\n grabAreaFill: \"transparent\",\n grabAreaCursor: \"col-resize\",\n grabAreaWidth: 10,\n handleWidth: 4,\n handleRadius: 1,\n handleStrokeWidth: 1,\n extraPad: 15\n };\n }\n });\n\n // src/components/rangeslider/helpers.js\n var require_helpers11 = __commonJS({\n \"src/components/rangeslider/helpers.js\"(exports) {\n \"use strict\";\n var axisIDs = require_axis_ids();\n var svgTextUtils = require_svg_text_utils();\n var constants = require_constants11();\n var LINE_SPACING = require_alignment().LINE_SPACING;\n var name = constants.name;\n function isVisible(ax) {\n var rangeSlider = ax && ax[name];\n return rangeSlider && rangeSlider.visible;\n }\n exports.isVisible = isVisible;\n exports.makeData = function(fullLayout) {\n var axes = axisIDs.list({ _fullLayout: fullLayout }, \"x\", true);\n var margin = fullLayout.margin;\n var rangeSliderData = [];\n for (var i = 0; i < axes.length; i++) {\n var ax = axes[i];\n if (isVisible(ax)) {\n rangeSliderData.push(ax);\n var opts = ax[name];\n opts._id = name + ax._id;\n opts._height = (fullLayout.height - margin.b - margin.t) * opts.thickness;\n opts._offsetShift = Math.floor(opts.borderwidth / 2);\n }\n }\n fullLayout._rangeSliderData = rangeSliderData;\n };\n exports.autoMarginOpts = function(gd, ax) {\n var fullLayout = gd._fullLayout;\n var opts = ax[name];\n var axLetter = ax._id.charAt(0);\n var bottomDepth = 0;\n var titleHeight = 0;\n if (ax.side === \"bottom\") {\n bottomDepth = ax._depth;\n if (ax.title.text !== fullLayout._dfltTitle[axLetter]) {\n titleHeight = 1.5 * ax.title.font.size + 10 + opts._offsetShift;\n var extraLines = (ax.title.text.match(svgTextUtils.BR_TAG_ALL) || []).length;\n titleHeight += extraLines * ax.title.font.size * LINE_SPACING;\n }\n }\n return {\n x: 0,\n y: ax._counterDomainMin,\n l: 0,\n r: 0,\n t: 0,\n b: opts._height + bottomDepth + Math.max(fullLayout.margin.b, titleHeight),\n pad: constants.extraPad + opts._offsetShift * 2\n };\n };\n }\n });\n\n // src/components/rangeslider/defaults.js\n var require_defaults16 = __commonJS({\n \"src/components/rangeslider/defaults.js\"(exports, module) {\n \"use strict\";\n var Lib = require_lib();\n var Template = require_plot_template();\n var axisIds = require_axis_ids();\n var attributes = require_attributes20();\n var oppAxisAttrs = require_oppaxis_attributes();\n module.exports = function handleDefaults(layoutIn, layoutOut, axName) {\n var axIn = layoutIn[axName];\n var axOut = layoutOut[axName];\n if (!(axIn.rangeslider || layoutOut._requestRangeslider[axOut._id])) return;\n if (!Lib.isPlainObject(axIn.rangeslider)) {\n axIn.rangeslider = {};\n }\n var containerIn = axIn.rangeslider;\n var containerOut = Template.newContainer(axOut, \"rangeslider\");\n function coerce(attr, dflt) {\n return Lib.coerce(containerIn, containerOut, attributes, attr, dflt);\n }\n var rangeContainerIn, rangeContainerOut;\n function coerceRange(attr, dflt) {\n return Lib.coerce(rangeContainerIn, rangeContainerOut, oppAxisAttrs, attr, dflt);\n }\n var visible = coerce(\"visible\");\n if (!visible) return;\n coerce(\"bgcolor\", layoutOut.plot_bgcolor);\n coerce(\"bordercolor\");\n coerce(\"borderwidth\");\n coerce(\"thickness\");\n coerce(\"autorange\", !axOut.isValidRange(containerIn.range));\n coerce(\"range\");\n var subplots = layoutOut._subplots;\n if (subplots) {\n var yIds = subplots.cartesian.filter(function(subplotId) {\n return subplotId.substr(0, subplotId.indexOf(\"y\")) === axisIds.name2id(axName);\n }).map(function(subplotId) {\n return subplotId.substr(subplotId.indexOf(\"y\"), subplotId.length);\n });\n var yNames = Lib.simpleMap(yIds, axisIds.id2name);\n for (var i = 0; i < yNames.length; i++) {\n var yName = yNames[i];\n rangeContainerIn = containerIn[yName] || {};\n rangeContainerOut = Template.newContainer(containerOut, yName, \"yaxis\");\n var yAxOut = layoutOut[yName];\n var rangemodeDflt;\n if (rangeContainerIn.range && yAxOut.isValidRange(rangeContainerIn.range)) {\n rangemodeDflt = \"fixed\";\n }\n var rangeMode = coerceRange(\"rangemode\", rangemodeDflt);\n if (rangeMode !== \"match\") {\n coerceRange(\"range\", yAxOut.range.slice());\n }\n }\n }\n containerOut._input = containerIn;\n };\n }\n });\n\n // src/components/rangeslider/calc_autorange.js\n var require_calc_autorange3 = __commonJS({\n \"src/components/rangeslider/calc_autorange.js\"(exports, module) {\n \"use strict\";\n var listAxes = require_axis_ids().list;\n var getAutoRange = require_autorange().getAutoRange;\n var constants = require_constants11();\n module.exports = function calcAutorange(gd) {\n var axes = listAxes(gd, \"x\", true);\n for (var i = 0; i < axes.length; i++) {\n var ax = axes[i];\n var opts = ax[constants.name];\n if (opts && opts.visible && opts.autorange) {\n opts._input.autorange = true;\n opts._input.range = opts.range = getAutoRange(gd, ax);\n }\n }\n };\n }\n });\n\n // src/components/rangeslider/draw.js\n var require_draw9 = __commonJS({\n \"src/components/rangeslider/draw.js\"(exports, module) {\n \"use strict\";\n var d3 = require_d3();\n var Registry = require_registry();\n var Plots = require_plots();\n var Lib = require_lib();\n var strTranslate = Lib.strTranslate;\n var Drawing = require_drawing();\n var Color = require_color();\n var Titles = require_titles();\n var Cartesian = require_cartesian();\n var axisIDs = require_axis_ids();\n var dragElement = require_dragelement();\n var setCursor = require_setcursor();\n var constants = require_constants11();\n module.exports = function(gd) {\n var fullLayout = gd._fullLayout;\n var rangeSliderData = fullLayout._rangeSliderData;\n for (var i = 0; i < rangeSliderData.length; i++) {\n var opts = rangeSliderData[i][constants.name];\n opts._clipId = opts._id + \"-\" + fullLayout._uid;\n }\n function keyFunction(axisOpts) {\n return axisOpts._name;\n }\n var rangeSliders = fullLayout._infolayer.selectAll(\"g.\" + constants.containerClassName).data(rangeSliderData, keyFunction);\n rangeSliders.exit().each(function(axisOpts) {\n var opts2 = axisOpts[constants.name];\n fullLayout._topdefs.select(\"#\" + opts2._clipId).remove();\n }).remove();\n if (rangeSliderData.length === 0) return;\n rangeSliders.enter().append(\"g\").classed(constants.containerClassName, true).attr(\"pointer-events\", \"all\");\n rangeSliders.each(function(axisOpts) {\n var rangeSlider = d3.select(this);\n var opts2 = axisOpts[constants.name];\n var oppAxisOpts = fullLayout[axisIDs.id2name(axisOpts.anchor)];\n var oppAxisRangeOpts = opts2[axisIDs.id2name(axisOpts.anchor)];\n if (opts2.range) {\n var rng = Lib.simpleMap(opts2.range, axisOpts.r2l);\n var axRng = Lib.simpleMap(axisOpts.range, axisOpts.r2l);\n var newRng;\n if (axRng[0] < axRng[1]) {\n newRng = [\n Math.min(rng[0], axRng[0]),\n Math.max(rng[1], axRng[1])\n ];\n } else {\n newRng = [\n Math.max(rng[0], axRng[0]),\n Math.min(rng[1], axRng[1])\n ];\n }\n opts2.range = opts2._input.range = Lib.simpleMap(newRng, axisOpts.l2r);\n }\n axisOpts.cleanRange(\"rangeslider.range\");\n var gs = fullLayout._size;\n var domain = axisOpts.domain;\n opts2._width = gs.w * (domain[1] - domain[0]);\n var x = Math.round(gs.l + gs.w * domain[0]);\n var y = Math.round(\n gs.t + gs.h * (1 - axisOpts._counterDomainMin) + (axisOpts.side === \"bottom\" ? axisOpts._depth : 0) + opts2._offsetShift + constants.extraPad\n );\n rangeSlider.attr(\"transform\", strTranslate(x, y));\n opts2._rl = Lib.simpleMap(opts2.range, axisOpts.r2l);\n var rl0 = opts2._rl[0];\n var rl1 = opts2._rl[1];\n var drl = rl1 - rl0;\n opts2.p2d = function(v) {\n return v / opts2._width * drl + rl0;\n };\n opts2.d2p = function(v) {\n return (v - rl0) / drl * opts2._width;\n };\n if (axisOpts.rangebreaks) {\n var rsBreaks = axisOpts.locateBreaks(rl0, rl1);\n if (rsBreaks.length) {\n var j, brk;\n var lBreaks = 0;\n for (j = 0; j < rsBreaks.length; j++) {\n brk = rsBreaks[j];\n lBreaks += brk.max - brk.min;\n }\n var m2 = opts2._width / (rl1 - rl0 - lBreaks);\n var _B = [-m2 * rl0];\n for (j = 0; j < rsBreaks.length; j++) {\n brk = rsBreaks[j];\n _B.push(_B[_B.length - 1] - m2 * (brk.max - brk.min));\n }\n opts2.d2p = function(v) {\n var b = _B[0];\n for (var j2 = 0; j2 < rsBreaks.length; j2++) {\n var brk2 = rsBreaks[j2];\n if (v >= brk2.max) b = _B[j2 + 1];\n else if (v < brk2.min) break;\n }\n return b + m2 * v;\n };\n for (j = 0; j < rsBreaks.length; j++) {\n brk = rsBreaks[j];\n brk.pmin = opts2.d2p(brk.min);\n brk.pmax = opts2.d2p(brk.max);\n }\n opts2.p2d = function(v) {\n var b = _B[0];\n for (var j2 = 0; j2 < rsBreaks.length; j2++) {\n var brk2 = rsBreaks[j2];\n if (v >= brk2.pmax) b = _B[j2 + 1];\n else if (v < brk2.pmin) break;\n }\n return (v - b) / m2;\n };\n }\n }\n if (oppAxisRangeOpts.rangemode !== \"match\") {\n var range0OppAxis = oppAxisOpts.r2l(oppAxisRangeOpts.range[0]);\n var range1OppAxis = oppAxisOpts.r2l(oppAxisRangeOpts.range[1]);\n var distOppAxis = range1OppAxis - range0OppAxis;\n opts2.d2pOppAxis = function(v) {\n return (v - range0OppAxis) / distOppAxis * opts2._height;\n };\n }\n rangeSlider.call(drawBg, gd, axisOpts, opts2).call(addClipPath, gd, axisOpts, opts2).call(drawRangePlot, gd, axisOpts, opts2).call(drawMasks, gd, axisOpts, opts2, oppAxisRangeOpts).call(drawSlideBox, gd, axisOpts, opts2).call(drawGrabbers, gd, axisOpts, opts2);\n setupDragElement(rangeSlider, gd, axisOpts, opts2);\n setPixelRange(rangeSlider, gd, axisOpts, opts2, oppAxisOpts, oppAxisRangeOpts);\n if (axisOpts.side === \"bottom\") {\n Titles.draw(gd, axisOpts._id + \"title\", {\n propContainer: axisOpts,\n propName: axisOpts._name + \".title\",\n placeholder: fullLayout._dfltTitle.x,\n attributes: {\n x: axisOpts._offset + axisOpts._length / 2,\n y: y + opts2._height + opts2._offsetShift + 10 + 1.5 * axisOpts.title.font.size,\n \"text-anchor\": \"middle\"\n }\n });\n }\n });\n };\n function eventX(event) {\n if (typeof event.clientX === \"number\") {\n return event.clientX;\n }\n if (event.touches && event.touches.length > 0) {\n return event.touches[0].clientX;\n }\n return 0;\n }\n function setupDragElement(rangeSlider, gd, axisOpts, opts) {\n if (gd._context.staticPlot) return;\n var slideBox = rangeSlider.select(\"rect.\" + constants.slideBoxClassName).node();\n var grabAreaMin = rangeSlider.select(\"rect.\" + constants.grabAreaMinClassName).node();\n var grabAreaMax = rangeSlider.select(\"rect.\" + constants.grabAreaMaxClassName).node();\n function mouseDownHandler() {\n var event = d3.event;\n var target = event.target;\n var startX = eventX(event);\n var offsetX = startX - rangeSlider.node().getBoundingClientRect().left;\n var minVal = opts.d2p(axisOpts._rl[0]);\n var maxVal = opts.d2p(axisOpts._rl[1]);\n var dragCover = dragElement.coverSlip();\n this.addEventListener(\"touchmove\", mouseMove);\n this.addEventListener(\"touchend\", mouseUp);\n dragCover.addEventListener(\"mousemove\", mouseMove);\n dragCover.addEventListener(\"mouseup\", mouseUp);\n function mouseMove(e) {\n var clientX = eventX(e);\n var delta = +clientX - startX;\n var pixelMin, pixelMax, cursor;\n switch (target) {\n case slideBox:\n cursor = \"ew-resize\";\n if (minVal + delta > axisOpts._length || maxVal + delta < 0) {\n return;\n }\n pixelMin = minVal + delta;\n pixelMax = maxVal + delta;\n break;\n case grabAreaMin:\n cursor = \"col-resize\";\n if (minVal + delta > axisOpts._length) {\n return;\n }\n pixelMin = minVal + delta;\n pixelMax = maxVal;\n break;\n case grabAreaMax:\n cursor = \"col-resize\";\n if (maxVal + delta < 0) {\n return;\n }\n pixelMin = minVal;\n pixelMax = maxVal + delta;\n break;\n default:\n cursor = \"ew-resize\";\n pixelMin = offsetX;\n pixelMax = offsetX + delta;\n break;\n }\n if (pixelMax < pixelMin) {\n var tmp = pixelMax;\n pixelMax = pixelMin;\n pixelMin = tmp;\n }\n opts._pixelMin = pixelMin;\n opts._pixelMax = pixelMax;\n setCursor(d3.select(dragCover), cursor);\n setDataRange(rangeSlider, gd, axisOpts, opts);\n }\n function mouseUp() {\n dragCover.removeEventListener(\"mousemove\", mouseMove);\n dragCover.removeEventListener(\"mouseup\", mouseUp);\n this.removeEventListener(\"touchmove\", mouseMove);\n this.removeEventListener(\"touchend\", mouseUp);\n Lib.removeElement(dragCover);\n }\n }\n rangeSlider.on(\"mousedown\", mouseDownHandler);\n rangeSlider.on(\"touchstart\", mouseDownHandler);\n }\n function setDataRange(rangeSlider, gd, axisOpts, opts) {\n function clamp(v) {\n return axisOpts.l2r(Lib.constrain(v, opts._rl[0], opts._rl[1]));\n }\n var dataMin = clamp(opts.p2d(opts._pixelMin));\n var dataMax = clamp(opts.p2d(opts._pixelMax));\n window.requestAnimationFrame(function() {\n Registry.call(\"_guiRelayout\", gd, axisOpts._name + \".range\", [dataMin, dataMax]);\n });\n }\n function setPixelRange(rangeSlider, gd, axisOpts, opts, oppAxisOpts, oppAxisRangeOpts) {\n var hw2 = constants.handleWidth / 2;\n function clamp(v) {\n return Lib.constrain(v, 0, opts._width);\n }\n function clampOppAxis(v) {\n return Lib.constrain(v, 0, opts._height);\n }\n function clampHandle(v) {\n return Lib.constrain(v, -hw2, opts._width + hw2);\n }\n var pixelMin = clamp(opts.d2p(axisOpts._rl[0]));\n var pixelMax = clamp(opts.d2p(axisOpts._rl[1]));\n rangeSlider.select(\"rect.\" + constants.slideBoxClassName).attr(\"x\", pixelMin).attr(\"width\", pixelMax - pixelMin);\n rangeSlider.select(\"rect.\" + constants.maskMinClassName).attr(\"width\", pixelMin);\n rangeSlider.select(\"rect.\" + constants.maskMaxClassName).attr(\"x\", pixelMax).attr(\"width\", opts._width - pixelMax);\n if (oppAxisRangeOpts.rangemode !== \"match\") {\n var pixelMinOppAxis = opts._height - clampOppAxis(opts.d2pOppAxis(oppAxisOpts._rl[1]));\n var pixelMaxOppAxis = opts._height - clampOppAxis(opts.d2pOppAxis(oppAxisOpts._rl[0]));\n rangeSlider.select(\"rect.\" + constants.maskMinOppAxisClassName).attr(\"x\", pixelMin).attr(\"height\", pixelMinOppAxis).attr(\"width\", pixelMax - pixelMin);\n rangeSlider.select(\"rect.\" + constants.maskMaxOppAxisClassName).attr(\"x\", pixelMin).attr(\"y\", pixelMaxOppAxis).attr(\"height\", opts._height - pixelMaxOppAxis).attr(\"width\", pixelMax - pixelMin);\n rangeSlider.select(\"rect.\" + constants.slideBoxClassName).attr(\"y\", pixelMinOppAxis).attr(\"height\", pixelMaxOppAxis - pixelMinOppAxis);\n }\n var offset = 0.5;\n var xMin = Math.round(clampHandle(pixelMin - hw2)) - offset;\n var xMax = Math.round(clampHandle(pixelMax - hw2)) + offset;\n rangeSlider.select(\"g.\" + constants.grabberMinClassName).attr(\"transform\", strTranslate(xMin, offset));\n rangeSlider.select(\"g.\" + constants.grabberMaxClassName).attr(\"transform\", strTranslate(xMax, offset));\n }\n function drawBg(rangeSlider, gd, axisOpts, opts) {\n var bg = Lib.ensureSingle(rangeSlider, \"rect\", constants.bgClassName, function(s) {\n s.attr({\n x: 0,\n y: 0,\n \"shape-rendering\": \"crispEdges\"\n });\n });\n var borderCorrect = opts.borderwidth % 2 === 0 ? opts.borderwidth : opts.borderwidth - 1;\n var offsetShift = -opts._offsetShift;\n var lw = Drawing.crispRound(gd, opts.borderwidth);\n bg.attr({\n width: opts._width + borderCorrect,\n height: opts._height + borderCorrect,\n transform: strTranslate(offsetShift, offsetShift),\n \"stroke-width\": lw\n }).call(Color.stroke, opts.bordercolor).call(Color.fill, opts.bgcolor);\n }\n function addClipPath(rangeSlider, gd, axisOpts, opts) {\n var fullLayout = gd._fullLayout;\n var clipPath = Lib.ensureSingleById(fullLayout._topdefs, \"clipPath\", opts._clipId, function(s) {\n s.append(\"rect\").attr({ x: 0, y: 0 });\n });\n clipPath.select(\"rect\").attr({\n width: opts._width,\n height: opts._height\n });\n }\n function drawRangePlot(rangeSlider, gd, axisOpts, opts) {\n var calcData = gd.calcdata;\n var rangePlots = rangeSlider.selectAll(\"g.\" + constants.rangePlotClassName).data(axisOpts._subplotsWith, Lib.identity);\n rangePlots.enter().append(\"g\").attr(\"class\", function(id) {\n return constants.rangePlotClassName + \" \" + id;\n }).call(Drawing.setClipUrl, opts._clipId, gd);\n rangePlots.order();\n rangePlots.exit().remove();\n var mainplotinfo;\n rangePlots.each(function(id, i) {\n var plotgroup = d3.select(this);\n var isMainPlot = i === 0;\n var oppAxisOpts = axisIDs.getFromId(gd, id, \"y\");\n var oppAxisName = oppAxisOpts._name;\n var oppAxisRangeOpts = opts[oppAxisName];\n var mockFigure = {\n data: [],\n layout: {\n xaxis: {\n type: axisOpts.type,\n domain: [0, 1],\n range: opts.range.slice(),\n calendar: axisOpts.calendar\n },\n width: opts._width,\n height: opts._height,\n margin: { t: 0, b: 0, l: 0, r: 0 }\n },\n _context: gd._context\n };\n if (axisOpts.rangebreaks) {\n mockFigure.layout.xaxis.rangebreaks = axisOpts.rangebreaks;\n }\n mockFigure.layout[oppAxisName] = {\n type: oppAxisOpts.type,\n domain: [0, 1],\n range: oppAxisRangeOpts.rangemode !== \"match\" ? oppAxisRangeOpts.range.slice() : oppAxisOpts.range.slice(),\n calendar: oppAxisOpts.calendar\n };\n if (oppAxisOpts.rangebreaks) {\n mockFigure.layout[oppAxisName].rangebreaks = oppAxisOpts.rangebreaks;\n }\n Plots.supplyDefaults(mockFigure);\n var xa = mockFigure._fullLayout.xaxis;\n var ya = mockFigure._fullLayout[oppAxisName];\n xa.clearCalc();\n xa.setScale();\n ya.clearCalc();\n ya.setScale();\n var plotinfo = {\n id,\n plotgroup,\n xaxis: xa,\n yaxis: ya,\n isRangePlot: true\n };\n if (isMainPlot) mainplotinfo = plotinfo;\n else {\n plotinfo.mainplot = \"xy\";\n plotinfo.mainplotinfo = mainplotinfo;\n }\n Cartesian.rangePlot(gd, plotinfo, filterRangePlotCalcData(calcData, id));\n });\n }\n function filterRangePlotCalcData(calcData, subplotId) {\n var out = [];\n for (var i = 0; i < calcData.length; i++) {\n var calcTrace = calcData[i];\n var trace = calcTrace[0].trace;\n if (trace.xaxis + trace.yaxis === subplotId) {\n out.push(calcTrace);\n }\n }\n return out;\n }\n function drawMasks(rangeSlider, gd, axisOpts, opts, oppAxisRangeOpts) {\n var maskMin = Lib.ensureSingle(rangeSlider, \"rect\", constants.maskMinClassName, function(s) {\n s.attr({\n x: 0,\n y: 0,\n \"shape-rendering\": \"crispEdges\"\n });\n });\n maskMin.attr(\"height\", opts._height).call(Color.fill, constants.maskColor);\n var maskMax = Lib.ensureSingle(rangeSlider, \"rect\", constants.maskMaxClassName, function(s) {\n s.attr({\n y: 0,\n \"shape-rendering\": \"crispEdges\"\n });\n });\n maskMax.attr(\"height\", opts._height).call(Color.fill, constants.maskColor);\n if (oppAxisRangeOpts.rangemode !== \"match\") {\n var maskMinOppAxis = Lib.ensureSingle(rangeSlider, \"rect\", constants.maskMinOppAxisClassName, function(s) {\n s.attr({\n y: 0,\n \"shape-rendering\": \"crispEdges\"\n });\n });\n maskMinOppAxis.attr(\"width\", opts._width).call(Color.fill, constants.maskOppAxisColor);\n var maskMaxOppAxis = Lib.ensureSingle(rangeSlider, \"rect\", constants.maskMaxOppAxisClassName, function(s) {\n s.attr({\n y: 0,\n \"shape-rendering\": \"crispEdges\"\n });\n });\n maskMaxOppAxis.attr(\"width\", opts._width).style(\"border-top\", constants.maskOppBorder).call(Color.fill, constants.maskOppAxisColor);\n }\n }\n function drawSlideBox(rangeSlider, gd, axisOpts, opts) {\n if (gd._context.staticPlot) return;\n var slideBox = Lib.ensureSingle(rangeSlider, \"rect\", constants.slideBoxClassName, function(s) {\n s.attr({\n y: 0,\n cursor: constants.slideBoxCursor,\n \"shape-rendering\": \"crispEdges\"\n });\n });\n slideBox.attr({\n height: opts._height,\n fill: constants.slideBoxFill\n });\n }\n function drawGrabbers(rangeSlider, gd, axisOpts, opts) {\n var grabberMin = Lib.ensureSingle(rangeSlider, \"g\", constants.grabberMinClassName);\n var grabberMax = Lib.ensureSingle(rangeSlider, \"g\", constants.grabberMaxClassName);\n var handleFixAttrs = {\n x: 0,\n width: constants.handleWidth,\n rx: constants.handleRadius,\n fill: Color.background,\n stroke: Color.defaultLine,\n \"stroke-width\": constants.handleStrokeWidth,\n \"shape-rendering\": \"crispEdges\"\n };\n var handleDynamicAttrs = {\n y: Math.round(opts._height / 4),\n height: Math.round(opts._height / 2)\n };\n var handleMin = Lib.ensureSingle(grabberMin, \"rect\", constants.handleMinClassName, function(s) {\n s.attr(handleFixAttrs);\n });\n handleMin.attr(handleDynamicAttrs);\n var handleMax = Lib.ensureSingle(grabberMax, \"rect\", constants.handleMaxClassName, function(s) {\n s.attr(handleFixAttrs);\n });\n handleMax.attr(handleDynamicAttrs);\n var grabAreaFixAttrs = {\n width: constants.grabAreaWidth,\n x: 0,\n y: 0,\n fill: constants.grabAreaFill,\n cursor: !gd._context.staticPlot ? constants.grabAreaCursor : void 0\n };\n var grabAreaMin = Lib.ensureSingle(grabberMin, \"rect\", constants.grabAreaMinClassName, function(s) {\n s.attr(grabAreaFixAttrs);\n });\n grabAreaMin.attr(\"height\", opts._height);\n var grabAreaMax = Lib.ensureSingle(grabberMax, \"rect\", constants.grabAreaMaxClassName, function(s) {\n s.attr(grabAreaFixAttrs);\n });\n grabAreaMax.attr(\"height\", opts._height);\n }\n }\n });\n\n // src/components/rangeslider/index.js\n var require_rangeslider = __commonJS({\n \"src/components/rangeslider/index.js\"(exports, module) {\n \"use strict\";\n var Lib = require_lib();\n var attrs = require_attributes20();\n var oppAxisAttrs = require_oppaxis_attributes();\n var helpers = require_helpers11();\n module.exports = {\n moduleType: \"component\",\n name: \"rangeslider\",\n schema: {\n subplots: {\n xaxis: {\n rangeslider: Lib.extendFlat({}, attrs, {\n yaxis: oppAxisAttrs\n })\n }\n }\n },\n layoutAttributes: require_attributes20(),\n handleDefaults: require_defaults16(),\n calcAutorange: require_calc_autorange3(),\n draw: require_draw9(),\n isVisible: helpers.isVisible,\n makeData: helpers.makeData,\n autoMarginOpts: helpers.autoMarginOpts\n };\n }\n });\n\n // src/components/rangeselector/attributes.js\n var require_attributes21 = __commonJS({\n \"src/components/rangeselector/attributes.js\"(exports, module) {\n \"use strict\";\n var fontAttrs = require_font_attributes();\n var colorAttrs = require_attributes3();\n var templatedArray = require_plot_template().templatedArray;\n var buttonAttrs = templatedArray(\"button\", {\n visible: {\n valType: \"boolean\",\n dflt: true,\n editType: \"plot\"\n },\n step: {\n valType: \"enumerated\",\n values: [\"month\", \"year\", \"day\", \"hour\", \"minute\", \"second\", \"all\"],\n dflt: \"month\",\n editType: \"plot\"\n },\n stepmode: {\n valType: \"enumerated\",\n values: [\"backward\", \"todate\"],\n dflt: \"backward\",\n editType: \"plot\"\n },\n count: {\n valType: \"number\",\n min: 0,\n dflt: 1,\n editType: \"plot\"\n },\n label: {\n valType: \"string\",\n editType: \"plot\"\n },\n editType: \"plot\"\n });\n module.exports = {\n visible: {\n valType: \"boolean\",\n editType: \"plot\"\n },\n buttons: buttonAttrs,\n x: {\n valType: \"number\",\n min: -2,\n max: 3,\n editType: \"plot\"\n },\n xanchor: {\n valType: \"enumerated\",\n values: [\"auto\", \"left\", \"center\", \"right\"],\n dflt: \"left\",\n editType: \"plot\"\n },\n y: {\n valType: \"number\",\n min: -2,\n max: 3,\n editType: \"plot\"\n },\n yanchor: {\n valType: \"enumerated\",\n values: [\"auto\", \"top\", \"middle\", \"bottom\"],\n dflt: \"bottom\",\n editType: \"plot\"\n },\n font: fontAttrs({\n editType: \"plot\"\n }),\n bgcolor: {\n valType: \"color\",\n dflt: colorAttrs.lightLine,\n editType: \"plot\"\n },\n activecolor: {\n valType: \"color\",\n editType: \"plot\"\n },\n bordercolor: {\n valType: \"color\",\n dflt: colorAttrs.defaultLine,\n editType: \"plot\"\n },\n borderwidth: {\n valType: \"number\",\n min: 0,\n dflt: 0,\n editType: \"plot\"\n },\n editType: \"plot\"\n };\n }\n });\n\n // src/components/rangeselector/constants.js\n var require_constants12 = __commonJS({\n \"src/components/rangeselector/constants.js\"(exports, module) {\n \"use strict\";\n module.exports = {\n // 'y' position pad above counter axis domain\n yPad: 0.02,\n // minimum button width (regardless of text size)\n minButtonWidth: 30,\n // buttons rect radii\n rx: 3,\n ry: 3,\n // light fraction used to compute the 'activecolor' default\n lightAmount: 25,\n darkAmount: 10\n };\n }\n });\n\n // src/components/rangeselector/defaults.js\n var require_defaults17 = __commonJS({\n \"src/components/rangeselector/defaults.js\"(exports, module) {\n \"use strict\";\n var Lib = require_lib();\n var Color = require_color();\n var Template = require_plot_template();\n var handleArrayContainerDefaults = require_array_container_defaults();\n var attributes = require_attributes21();\n var constants = require_constants12();\n module.exports = function handleDefaults(containerIn, containerOut, layout, counterAxes, calendar) {\n var selectorIn = containerIn.rangeselector || {};\n var selectorOut = Template.newContainer(containerOut, \"rangeselector\");\n function coerce(attr, dflt) {\n return Lib.coerce(selectorIn, selectorOut, attributes, attr, dflt);\n }\n var buttons = handleArrayContainerDefaults(selectorIn, selectorOut, {\n name: \"buttons\",\n handleItemDefaults: buttonDefaults,\n calendar\n });\n var visible = coerce(\"visible\", buttons.length > 0);\n if (visible) {\n var posDflt = getPosDflt(containerOut, layout, counterAxes);\n coerce(\"x\", posDflt[0]);\n coerce(\"y\", posDflt[1]);\n Lib.noneOrAll(containerIn, containerOut, [\"x\", \"y\"]);\n coerce(\"xanchor\");\n coerce(\"yanchor\");\n Lib.coerceFont(coerce, \"font\", layout.font);\n var bgColor = coerce(\"bgcolor\");\n coerce(\"activecolor\", Color.contrast(bgColor, constants.lightAmount, constants.darkAmount));\n coerce(\"bordercolor\");\n coerce(\"borderwidth\");\n }\n };\n function buttonDefaults(buttonIn, buttonOut, selectorOut, opts) {\n var calendar = opts.calendar;\n function coerce(attr, dflt) {\n return Lib.coerce(buttonIn, buttonOut, attributes.buttons, attr, dflt);\n }\n var visible = coerce(\"visible\");\n if (visible) {\n var step = coerce(\"step\");\n if (step !== \"all\") {\n if (calendar && calendar !== \"gregorian\" && (step === \"month\" || step === \"year\")) {\n buttonOut.stepmode = \"backward\";\n } else {\n coerce(\"stepmode\");\n }\n coerce(\"count\");\n }\n coerce(\"label\");\n }\n }\n function getPosDflt(containerOut, layout, counterAxes) {\n var anchoredList = counterAxes.filter(function(ax) {\n return layout[ax].anchor === containerOut._id;\n });\n var posY = 0;\n for (var i = 0; i < anchoredList.length; i++) {\n var domain = layout[anchoredList[i]].domain;\n if (domain) posY = Math.max(domain[1], posY);\n }\n return [containerOut.domain[0], posY + constants.yPad];\n }\n }\n });\n\n // src/components/rangeselector/get_update_object.js\n var require_get_update_object = __commonJS({\n \"src/components/rangeselector/get_update_object.js\"(exports, module) {\n \"use strict\";\n var d3Time = require_d3_time();\n var titleCase = require_lib().titleCase;\n module.exports = function getUpdateObject(axisLayout, buttonLayout) {\n var axName = axisLayout._name;\n var update = {};\n if (buttonLayout.step === \"all\") {\n update[axName + \".autorange\"] = true;\n } else {\n var xrange = getXRange(axisLayout, buttonLayout);\n update[axName + \".range[0]\"] = xrange[0];\n update[axName + \".range[1]\"] = xrange[1];\n }\n return update;\n };\n function getXRange(axisLayout, buttonLayout) {\n var currentRange = axisLayout.range;\n var base = new Date(axisLayout.r2l(currentRange[1]));\n var step = buttonLayout.step;\n var utcStep = d3Time[\"utc\" + titleCase(step)];\n var count = buttonLayout.count;\n var range0;\n switch (buttonLayout.stepmode) {\n case \"backward\":\n range0 = axisLayout.l2r(+utcStep.offset(base, -count));\n break;\n case \"todate\":\n var base2 = utcStep.offset(base, -count);\n range0 = axisLayout.l2r(+utcStep.ceil(base2));\n break;\n }\n var range1 = currentRange[1];\n return [range0, range1];\n }\n }\n });\n\n // src/components/rangeselector/draw.js\n var require_draw10 = __commonJS({\n \"src/components/rangeselector/draw.js\"(exports, module) {\n \"use strict\";\n var d3 = require_d3();\n var Registry = require_registry();\n var Plots = require_plots();\n var Color = require_color();\n var Drawing = require_drawing();\n var Lib = require_lib();\n var strTranslate = Lib.strTranslate;\n var svgTextUtils = require_svg_text_utils();\n var axisIds = require_axis_ids();\n var alignmentConstants = require_alignment();\n var LINE_SPACING = alignmentConstants.LINE_SPACING;\n var FROM_TL = alignmentConstants.FROM_TL;\n var FROM_BR = alignmentConstants.FROM_BR;\n var constants = require_constants12();\n var getUpdateObject = require_get_update_object();\n module.exports = function draw(gd) {\n var fullLayout = gd._fullLayout;\n var selectors = fullLayout._infolayer.selectAll(\".rangeselector\").data(makeSelectorData(gd), selectorKeyFunc);\n selectors.enter().append(\"g\").classed(\"rangeselector\", true);\n selectors.exit().remove();\n selectors.style({\n cursor: \"pointer\",\n \"pointer-events\": \"all\"\n });\n selectors.each(function(d) {\n var selector = d3.select(this);\n var axisLayout = d;\n var selectorLayout = axisLayout.rangeselector;\n var buttons = selector.selectAll(\"g.button\").data(Lib.filterVisible(selectorLayout.buttons));\n buttons.enter().append(\"g\").classed(\"button\", true);\n buttons.exit().remove();\n buttons.each(function(d2) {\n var button = d3.select(this);\n var update = getUpdateObject(axisLayout, d2);\n d2._isActive = isActive(axisLayout, d2, update);\n button.call(drawButtonRect, selectorLayout, d2);\n button.call(drawButtonText, selectorLayout, d2, gd);\n button.on(\"click\", function() {\n if (gd._dragged) return;\n Registry.call(\"_guiRelayout\", gd, update);\n });\n button.on(\"mouseover\", function() {\n d2._isHovered = true;\n button.call(drawButtonRect, selectorLayout, d2);\n });\n button.on(\"mouseout\", function() {\n d2._isHovered = false;\n button.call(drawButtonRect, selectorLayout, d2);\n });\n });\n reposition(gd, buttons, selectorLayout, axisLayout._name, selector);\n });\n };\n function makeSelectorData(gd) {\n var axes = axisIds.list(gd, \"x\", true);\n var data = [];\n for (var i = 0; i < axes.length; i++) {\n var axis = axes[i];\n if (axis.rangeselector && axis.rangeselector.visible) {\n data.push(axis);\n }\n }\n return data;\n }\n function selectorKeyFunc(d) {\n return d._id;\n }\n function isActive(axisLayout, opts, update) {\n if (opts.step === \"all\") {\n return axisLayout.autorange === true;\n } else {\n var keys = Object.keys(update);\n return axisLayout.range[0] === update[keys[0]] && axisLayout.range[1] === update[keys[1]];\n }\n }\n function drawButtonRect(button, selectorLayout, d) {\n var rect = Lib.ensureSingle(button, \"rect\", \"selector-rect\", function(s) {\n s.attr(\"shape-rendering\", \"crispEdges\");\n });\n rect.attr({\n rx: constants.rx,\n ry: constants.ry\n });\n rect.call(Color.stroke, selectorLayout.bordercolor).call(Color.fill, getFillColor(selectorLayout, d)).style(\"stroke-width\", selectorLayout.borderwidth + \"px\");\n }\n function getFillColor(selectorLayout, d) {\n return d._isActive || d._isHovered ? selectorLayout.activecolor : selectorLayout.bgcolor;\n }\n function drawButtonText(button, selectorLayout, d, gd) {\n function textLayout(s) {\n svgTextUtils.convertToTspans(s, gd);\n }\n var text = Lib.ensureSingle(button, \"text\", \"selector-text\", function(s) {\n s.attr(\"text-anchor\", \"middle\");\n });\n text.call(Drawing.font, selectorLayout.font).text(getLabel(d, gd._fullLayout._meta)).call(textLayout);\n }\n function getLabel(opts, _meta) {\n if (opts.label) {\n return _meta ? Lib.templateString(opts.label, _meta) : opts.label;\n }\n if (opts.step === \"all\") return \"all\";\n return opts.count + opts.step.charAt(0);\n }\n function reposition(gd, buttons, opts, axName, selector) {\n var width = 0;\n var height = 0;\n var borderWidth = opts.borderwidth;\n buttons.each(function() {\n var button = d3.select(this);\n var text = button.select(\".selector-text\");\n var tHeight = opts.font.size * LINE_SPACING;\n var hEff = Math.max(tHeight * svgTextUtils.lineCount(text), 16) + 3;\n height = Math.max(height, hEff);\n });\n buttons.each(function() {\n var button = d3.select(this);\n var rect = button.select(\".selector-rect\");\n var text = button.select(\".selector-text\");\n var tWidth = text.node() && Drawing.bBox(text.node()).width;\n var tHeight = opts.font.size * LINE_SPACING;\n var tLines = svgTextUtils.lineCount(text);\n var wEff = Math.max(tWidth + 10, constants.minButtonWidth);\n button.attr(\"transform\", strTranslate(borderWidth + width, borderWidth));\n rect.attr({\n x: 0,\n y: 0,\n width: wEff,\n height\n });\n svgTextUtils.positionText(\n text,\n wEff / 2,\n height / 2 - (tLines - 1) * tHeight / 2 + 3\n );\n width += wEff + 5;\n });\n var graphSize = gd._fullLayout._size;\n var lx = graphSize.l + graphSize.w * opts.x;\n var ly = graphSize.t + graphSize.h * (1 - opts.y);\n var xanchor = \"left\";\n if (Lib.isRightAnchor(opts)) {\n lx -= width;\n xanchor = \"right\";\n }\n if (Lib.isCenterAnchor(opts)) {\n lx -= width / 2;\n xanchor = \"center\";\n }\n var yanchor = \"top\";\n if (Lib.isBottomAnchor(opts)) {\n ly -= height;\n yanchor = \"bottom\";\n }\n if (Lib.isMiddleAnchor(opts)) {\n ly -= height / 2;\n yanchor = \"middle\";\n }\n width = Math.ceil(width);\n height = Math.ceil(height);\n lx = Math.round(lx);\n ly = Math.round(ly);\n Plots.autoMargin(gd, axName + \"-range-selector\", {\n x: opts.x,\n y: opts.y,\n l: width * FROM_TL[xanchor],\n r: width * FROM_BR[xanchor],\n b: height * FROM_BR[yanchor],\n t: height * FROM_TL[yanchor]\n });\n selector.attr(\"transform\", strTranslate(lx, ly));\n }\n }\n });\n\n // src/components/rangeselector/index.js\n var require_rangeselector = __commonJS({\n \"src/components/rangeselector/index.js\"(exports, module) {\n \"use strict\";\n module.exports = {\n moduleType: \"component\",\n name: \"rangeselector\",\n schema: {\n subplots: {\n xaxis: { rangeselector: require_attributes21() }\n }\n },\n layoutAttributes: require_attributes21(),\n handleDefaults: require_defaults17(),\n draw: require_draw10()\n };\n }\n });\n\n // src/plots/domain.js\n var require_domain = __commonJS({\n \"src/plots/domain.js\"(exports) {\n \"use strict\";\n var extendFlat = require_extend().extendFlat;\n exports.attributes = function(opts, extra) {\n opts = opts || {};\n extra = extra || {};\n var base = {\n valType: \"info_array\",\n editType: opts.editType,\n items: [\n { valType: \"number\", min: 0, max: 1, editType: opts.editType },\n { valType: \"number\", min: 0, max: 1, editType: opts.editType }\n ],\n dflt: [0, 1]\n };\n var namePart = opts.name ? opts.name + \" \" : \"\";\n var contPart = opts.trace ? \"trace \" : \"subplot \";\n var descPart = extra.description ? \" \" + extra.description : \"\";\n var out = {\n x: extendFlat({}, base, {}),\n y: extendFlat({}, base, {}),\n editType: opts.editType\n };\n if (!opts.noGridCell) {\n out.row = {\n valType: \"integer\",\n min: 0,\n dflt: 0,\n editType: opts.editType\n };\n out.column = {\n valType: \"integer\",\n min: 0,\n dflt: 0,\n editType: opts.editType\n };\n }\n return out;\n };\n exports.defaults = function(containerOut, layout, coerce, dfltDomains) {\n var dfltX = dfltDomains && dfltDomains.x || [0, 1];\n var dfltY = dfltDomains && dfltDomains.y || [0, 1];\n var grid = layout.grid;\n if (grid) {\n var column = coerce(\"domain.column\");\n if (column !== void 0) {\n if (column < grid.columns) dfltX = grid._domains.x[column];\n else delete containerOut.domain.column;\n }\n var row = coerce(\"domain.row\");\n if (row !== void 0) {\n if (row < grid.rows) dfltY = grid._domains.y[row];\n else delete containerOut.domain.row;\n }\n }\n var x = coerce(\"domain.x\", dfltX);\n var y = coerce(\"domain.y\", dfltY);\n if (!(x[0] < x[1])) containerOut.domain.x = dfltX.slice();\n if (!(y[0] < y[1])) containerOut.domain.y = dfltY.slice();\n };\n }\n });\n\n // src/components/grid/index.js\n var require_grid = __commonJS({\n \"src/components/grid/index.js\"(exports, module) {\n \"use strict\";\n var Lib = require_lib();\n var counterRegex = require_regex().counter;\n var domainAttrs = require_domain().attributes;\n var cartesianIdRegex = require_constants2().idRegex;\n var Template = require_plot_template();\n var gridAttrs = {\n rows: {\n valType: \"integer\",\n min: 1,\n editType: \"plot\"\n },\n roworder: {\n valType: \"enumerated\",\n values: [\"top to bottom\", \"bottom to top\"],\n dflt: \"top to bottom\",\n editType: \"plot\"\n },\n columns: {\n valType: \"integer\",\n min: 1,\n editType: \"plot\"\n },\n subplots: {\n valType: \"info_array\",\n freeLength: true,\n dimensions: 2,\n items: { valType: \"enumerated\", values: [counterRegex(\"xy\").toString(), \"\"], editType: \"plot\" },\n editType: \"plot\"\n },\n xaxes: {\n valType: \"info_array\",\n freeLength: true,\n items: { valType: \"enumerated\", values: [cartesianIdRegex.x.toString(), \"\"], editType: \"plot\" },\n editType: \"plot\"\n },\n yaxes: {\n valType: \"info_array\",\n freeLength: true,\n items: { valType: \"enumerated\", values: [cartesianIdRegex.y.toString(), \"\"], editType: \"plot\" },\n editType: \"plot\"\n },\n pattern: {\n valType: \"enumerated\",\n values: [\"independent\", \"coupled\"],\n dflt: \"coupled\",\n editType: \"plot\"\n },\n xgap: {\n valType: \"number\",\n min: 0,\n max: 1,\n editType: \"plot\"\n },\n ygap: {\n valType: \"number\",\n min: 0,\n max: 1,\n editType: \"plot\"\n },\n domain: domainAttrs({ name: \"grid\", editType: \"plot\", noGridCell: true }, {}),\n xside: {\n valType: \"enumerated\",\n values: [\"bottom\", \"bottom plot\", \"top plot\", \"top\"],\n dflt: \"bottom plot\",\n editType: \"plot\"\n },\n yside: {\n valType: \"enumerated\",\n values: [\"left\", \"left plot\", \"right plot\", \"right\"],\n dflt: \"left plot\",\n editType: \"plot\"\n },\n editType: \"plot\"\n };\n function getAxes(layout, grid, axLetter) {\n var gridVal = grid[axLetter + \"axes\"];\n var splomVal = Object.keys((layout._splomAxes || {})[axLetter] || {});\n if (Array.isArray(gridVal)) return gridVal;\n if (splomVal.length) return splomVal;\n }\n function sizeDefaults(layoutIn, layoutOut) {\n var gridIn = layoutIn.grid || {};\n var xAxes = getAxes(layoutOut, gridIn, \"x\");\n var yAxes = getAxes(layoutOut, gridIn, \"y\");\n if (!layoutIn.grid && !xAxes && !yAxes) return;\n var hasSubplotGrid = Array.isArray(gridIn.subplots) && Array.isArray(gridIn.subplots[0]);\n var hasXaxes = Array.isArray(xAxes);\n var hasYaxes = Array.isArray(yAxes);\n var isSplomGenerated = hasXaxes && xAxes !== gridIn.xaxes && hasYaxes && yAxes !== gridIn.yaxes;\n var dfltRows, dfltColumns;\n if (hasSubplotGrid) {\n dfltRows = gridIn.subplots.length;\n dfltColumns = gridIn.subplots[0].length;\n } else {\n if (hasYaxes) dfltRows = yAxes.length;\n if (hasXaxes) dfltColumns = xAxes.length;\n }\n var gridOut = Template.newContainer(layoutOut, \"grid\");\n function coerce(attr, dflt) {\n return Lib.coerce(gridIn, gridOut, gridAttrs, attr, dflt);\n }\n var rows = coerce(\"rows\", dfltRows);\n var columns = coerce(\"columns\", dfltColumns);\n if (!(rows * columns > 1)) {\n delete layoutOut.grid;\n return;\n }\n if (!hasSubplotGrid && !hasXaxes && !hasYaxes) {\n var useDefaultSubplots = coerce(\"pattern\") === \"independent\";\n if (useDefaultSubplots) hasSubplotGrid = true;\n }\n gridOut._hasSubplotGrid = hasSubplotGrid;\n var rowOrder = coerce(\"roworder\");\n var reversed = rowOrder === \"top to bottom\";\n var dfltGapX = hasSubplotGrid ? 0.2 : 0.1;\n var dfltGapY = hasSubplotGrid ? 0.3 : 0.1;\n var dfltSideX, dfltSideY;\n if (isSplomGenerated && layoutOut._splomGridDflt) {\n dfltSideX = layoutOut._splomGridDflt.xside;\n dfltSideY = layoutOut._splomGridDflt.yside;\n }\n gridOut._domains = {\n x: fillGridPositions(\"x\", coerce, dfltGapX, dfltSideX, columns),\n y: fillGridPositions(\"y\", coerce, dfltGapY, dfltSideY, rows, reversed)\n };\n }\n function fillGridPositions(axLetter, coerce, dfltGap, dfltSide, len, reversed) {\n var dirGap = coerce(axLetter + \"gap\", dfltGap);\n var domain = coerce(\"domain.\" + axLetter);\n coerce(axLetter + \"side\", dfltSide);\n var out = new Array(len);\n var start = domain[0];\n var step = (domain[1] - start) / (len - dirGap);\n var cellDomain = step * (1 - dirGap);\n for (var i = 0; i < len; i++) {\n var cellStart = start + step * i;\n out[reversed ? len - 1 - i : i] = [cellStart, cellStart + cellDomain];\n }\n return out;\n }\n function contentDefaults(layoutIn, layoutOut) {\n var gridOut = layoutOut.grid;\n if (!gridOut || !gridOut._domains) return;\n var gridIn = layoutIn.grid || {};\n var subplots = layoutOut._subplots;\n var hasSubplotGrid = gridOut._hasSubplotGrid;\n var rows = gridOut.rows;\n var columns = gridOut.columns;\n var useDefaultSubplots = gridOut.pattern === \"independent\";\n var i, j, xId, yId, subplotId, subplotsOut, yPos;\n var axisMap = gridOut._axisMap = {};\n if (hasSubplotGrid) {\n var subplotsIn = gridIn.subplots || [];\n subplotsOut = gridOut.subplots = new Array(rows);\n var index = 1;\n for (i = 0; i < rows; i++) {\n var rowOut = subplotsOut[i] = new Array(columns);\n var rowIn = subplotsIn[i] || [];\n for (j = 0; j < columns; j++) {\n if (useDefaultSubplots) {\n subplotId = index === 1 ? \"xy\" : \"x\" + index + \"y\" + index;\n index++;\n } else subplotId = rowIn[j];\n rowOut[j] = \"\";\n if (subplots.cartesian.indexOf(subplotId) !== -1) {\n yPos = subplotId.indexOf(\"y\");\n xId = subplotId.slice(0, yPos);\n yId = subplotId.slice(yPos);\n if (axisMap[xId] !== void 0 && axisMap[xId] !== j || axisMap[yId] !== void 0 && axisMap[yId] !== i) {\n continue;\n }\n rowOut[j] = subplotId;\n axisMap[xId] = j;\n axisMap[yId] = i;\n }\n }\n }\n } else {\n var xAxes = getAxes(layoutOut, gridIn, \"x\");\n var yAxes = getAxes(layoutOut, gridIn, \"y\");\n gridOut.xaxes = fillGridAxes(xAxes, subplots.xaxis, columns, axisMap, \"x\");\n gridOut.yaxes = fillGridAxes(yAxes, subplots.yaxis, rows, axisMap, \"y\");\n }\n var anchors = gridOut._anchors = {};\n var reversed = gridOut.roworder === \"top to bottom\";\n for (var axisId in axisMap) {\n var axLetter = axisId.charAt(0);\n var side = gridOut[axLetter + \"side\"];\n var i0, inc, iFinal;\n if (side.length < 8) {\n anchors[axisId] = \"free\";\n } else if (axLetter === \"x\") {\n if (side.charAt(0) === \"t\" === reversed) {\n i0 = 0;\n inc = 1;\n iFinal = rows;\n } else {\n i0 = rows - 1;\n inc = -1;\n iFinal = -1;\n }\n if (hasSubplotGrid) {\n var column = axisMap[axisId];\n for (i = i0; i !== iFinal; i += inc) {\n subplotId = subplotsOut[i][column];\n if (!subplotId) continue;\n yPos = subplotId.indexOf(\"y\");\n if (subplotId.slice(0, yPos) === axisId) {\n anchors[axisId] = subplotId.slice(yPos);\n break;\n }\n }\n } else {\n for (i = i0; i !== iFinal; i += inc) {\n yId = gridOut.yaxes[i];\n if (subplots.cartesian.indexOf(axisId + yId) !== -1) {\n anchors[axisId] = yId;\n break;\n }\n }\n }\n } else {\n if (side.charAt(0) === \"l\") {\n i0 = 0;\n inc = 1;\n iFinal = columns;\n } else {\n i0 = columns - 1;\n inc = -1;\n iFinal = -1;\n }\n if (hasSubplotGrid) {\n var row = axisMap[axisId];\n for (i = i0; i !== iFinal; i += inc) {\n subplotId = subplotsOut[row][i];\n if (!subplotId) continue;\n yPos = subplotId.indexOf(\"y\");\n if (subplotId.slice(yPos) === axisId) {\n anchors[axisId] = subplotId.slice(0, yPos);\n break;\n }\n }\n } else {\n for (i = i0; i !== iFinal; i += inc) {\n xId = gridOut.xaxes[i];\n if (subplots.cartesian.indexOf(xId + axisId) !== -1) {\n anchors[axisId] = xId;\n break;\n }\n }\n }\n }\n }\n }\n function fillGridAxes(axesIn, axesAllowed, len, axisMap, axLetter) {\n var out = new Array(len);\n var i;\n function fillOneAxis(i2, axisId) {\n if (axesAllowed.indexOf(axisId) !== -1 && axisMap[axisId] === void 0) {\n out[i2] = axisId;\n axisMap[axisId] = i2;\n } else out[i2] = \"\";\n }\n if (Array.isArray(axesIn)) {\n for (i = 0; i < len; i++) {\n fillOneAxis(i, axesIn[i]);\n }\n } else {\n fillOneAxis(0, axLetter);\n for (i = 1; i < len; i++) {\n fillOneAxis(i, axLetter + (i + 1));\n }\n }\n return out;\n }\n module.exports = {\n moduleType: \"component\",\n name: \"grid\",\n schema: {\n layout: { grid: gridAttrs }\n },\n layoutAttributes: gridAttrs,\n sizeDefaults,\n contentDefaults\n };\n }\n });\n\n // src/components/errorbars/attributes.js\n var require_attributes22 = __commonJS({\n \"src/components/errorbars/attributes.js\"(exports, module) {\n \"use strict\";\n module.exports = {\n visible: {\n valType: \"boolean\",\n editType: \"calc\"\n },\n type: {\n valType: \"enumerated\",\n values: [\"percent\", \"constant\", \"sqrt\", \"data\"],\n editType: \"calc\"\n },\n symmetric: {\n valType: \"boolean\",\n editType: \"calc\"\n },\n array: {\n valType: \"data_array\",\n editType: \"calc\"\n },\n arrayminus: {\n valType: \"data_array\",\n editType: \"calc\"\n },\n value: {\n valType: \"number\",\n min: 0,\n dflt: 10,\n editType: \"calc\"\n },\n valueminus: {\n valType: \"number\",\n min: 0,\n dflt: 10,\n editType: \"calc\"\n },\n traceref: {\n valType: \"integer\",\n min: 0,\n dflt: 0,\n editType: \"style\"\n },\n tracerefminus: {\n valType: \"integer\",\n min: 0,\n dflt: 0,\n editType: \"style\"\n },\n copy_ystyle: {\n valType: \"boolean\",\n editType: \"plot\"\n },\n copy_zstyle: {\n valType: \"boolean\",\n editType: \"style\"\n },\n color: {\n valType: \"color\",\n editType: \"style\"\n },\n thickness: {\n valType: \"number\",\n min: 0,\n dflt: 2,\n editType: \"style\"\n },\n width: {\n valType: \"number\",\n min: 0,\n editType: \"plot\"\n },\n editType: \"calc\"\n };\n }\n });\n\n // src/components/errorbars/defaults.js\n var require_defaults18 = __commonJS({\n \"src/components/errorbars/defaults.js\"(exports, module) {\n \"use strict\";\n var isNumeric = require_fast_isnumeric();\n var Registry = require_registry();\n var Lib = require_lib();\n var Template = require_plot_template();\n var attributes = require_attributes22();\n module.exports = function(traceIn, traceOut, defaultColor, opts) {\n var objName = \"error_\" + opts.axis;\n var containerOut = Template.newContainer(traceOut, objName);\n var containerIn = traceIn[objName] || {};\n function coerce(attr, dflt) {\n return Lib.coerce(containerIn, containerOut, attributes, attr, dflt);\n }\n var hasErrorBars = containerIn.array !== void 0 || containerIn.value !== void 0 || containerIn.type === \"sqrt\";\n var visible = coerce(\"visible\", hasErrorBars);\n if (visible === false) return;\n var type = coerce(\"type\", \"array\" in containerIn ? \"data\" : \"percent\");\n var symmetric = true;\n if (type !== \"sqrt\") {\n symmetric = coerce(\n \"symmetric\",\n !((type === \"data\" ? \"arrayminus\" : \"valueminus\") in containerIn)\n );\n }\n if (type === \"data\") {\n coerce(\"array\");\n coerce(\"traceref\");\n if (!symmetric) {\n coerce(\"arrayminus\");\n coerce(\"tracerefminus\");\n }\n } else if (type === \"percent\" || type === \"constant\") {\n coerce(\"value\");\n if (!symmetric) coerce(\"valueminus\");\n }\n var copyAttr = \"copy_\" + opts.inherit + \"style\";\n if (opts.inherit) {\n var inheritObj = traceOut[\"error_\" + opts.inherit];\n if ((inheritObj || {}).visible) {\n coerce(copyAttr, !(containerIn.color || isNumeric(containerIn.thickness) || isNumeric(containerIn.width)));\n }\n }\n if (!opts.inherit || !containerOut[copyAttr]) {\n coerce(\"color\", defaultColor);\n coerce(\"thickness\");\n coerce(\"width\", Registry.traceIs(traceOut, \"gl3d\") ? 0 : 4);\n }\n };\n }\n });\n\n // src/components/errorbars/compute_error.js\n var require_compute_error = __commonJS({\n \"src/components/errorbars/compute_error.js\"(exports, module) {\n \"use strict\";\n module.exports = function makeComputeError(opts) {\n var type = opts.type;\n var symmetric = opts.symmetric;\n if (type === \"data\") {\n var array = opts.array || [];\n if (symmetric) {\n return function computeError(dataPt, index) {\n var val = +array[index];\n return [val, val];\n };\n } else {\n var arrayminus = opts.arrayminus || [];\n return function computeError(dataPt, index) {\n var val = +array[index];\n var valMinus = +arrayminus[index];\n if (!isNaN(val) || !isNaN(valMinus)) {\n return [valMinus || 0, val || 0];\n }\n return [NaN, NaN];\n };\n }\n } else {\n var computeErrorValue = makeComputeErrorValue(type, opts.value);\n var computeErrorValueMinus = makeComputeErrorValue(type, opts.valueminus);\n if (symmetric || opts.valueminus === void 0) {\n return function computeError(dataPt) {\n var val = computeErrorValue(dataPt);\n return [val, val];\n };\n } else {\n return function computeError(dataPt) {\n return [\n computeErrorValueMinus(dataPt),\n computeErrorValue(dataPt)\n ];\n };\n }\n }\n };\n function makeComputeErrorValue(type, value) {\n if (type === \"percent\") {\n return function(dataPt) {\n return Math.abs(dataPt * value / 100);\n };\n }\n if (type === \"constant\") {\n return function() {\n return Math.abs(value);\n };\n }\n if (type === \"sqrt\") {\n return function(dataPt) {\n return Math.sqrt(Math.abs(dataPt));\n };\n }\n }\n }\n });\n\n // src/components/errorbars/calc.js\n var require_calc4 = __commonJS({\n \"src/components/errorbars/calc.js\"(exports, module) {\n \"use strict\";\n var isNumeric = require_fast_isnumeric();\n var Registry = require_registry();\n var Axes = require_axes();\n var Lib = require_lib();\n var makeComputeError = require_compute_error();\n module.exports = function calc(gd) {\n var calcdata = gd.calcdata;\n for (var i = 0; i < calcdata.length; i++) {\n var calcTrace = calcdata[i];\n var trace = calcTrace[0].trace;\n if (trace.visible === true && Registry.traceIs(trace, \"errorBarsOK\")) {\n var xa = Axes.getFromId(gd, trace.xaxis);\n var ya = Axes.getFromId(gd, trace.yaxis);\n calcOneAxis(calcTrace, trace, xa, \"x\");\n calcOneAxis(calcTrace, trace, ya, \"y\");\n }\n }\n };\n function calcOneAxis(calcTrace, trace, axis, coord) {\n var opts = trace[\"error_\" + coord] || {};\n var isVisible = opts.visible && [\"linear\", \"log\"].indexOf(axis.type) !== -1;\n var vals = [];\n if (!isVisible) return;\n var computeError = makeComputeError(opts);\n for (var i = 0; i < calcTrace.length; i++) {\n var calcPt = calcTrace[i];\n var iIn = calcPt.i;\n if (iIn === void 0) iIn = i;\n else if (iIn === null) continue;\n var calcCoord = calcPt[coord];\n if (!isNumeric(axis.c2l(calcCoord))) continue;\n var errors = computeError(calcCoord, iIn);\n if (isNumeric(errors[0]) && isNumeric(errors[1])) {\n var shoe = calcPt[coord + \"s\"] = calcCoord - errors[0];\n var hat = calcPt[coord + \"h\"] = calcCoord + errors[1];\n vals.push(shoe, hat);\n }\n }\n var axId = axis._id;\n var baseExtremes = trace._extremes[axId];\n var extremes = Axes.findExtremes(\n axis,\n vals,\n Lib.extendFlat({ tozero: baseExtremes.opts.tozero }, { padded: true })\n );\n baseExtremes.min = baseExtremes.min.concat(extremes.min);\n baseExtremes.max = baseExtremes.max.concat(extremes.max);\n }\n }\n });\n\n // src/components/errorbars/plot.js\n var require_plot2 = __commonJS({\n \"src/components/errorbars/plot.js\"(exports, module) {\n \"use strict\";\n var d3 = require_d3();\n var isNumeric = require_fast_isnumeric();\n var Drawing = require_drawing();\n var subTypes = require_subtypes();\n module.exports = function plot(gd, traces, plotinfo, transitionOpts) {\n var isNew;\n var xa = plotinfo.xaxis;\n var ya = plotinfo.yaxis;\n var hasAnimation = transitionOpts && transitionOpts.duration > 0;\n var isStatic = gd._context.staticPlot;\n traces.each(function(d) {\n var trace = d[0].trace;\n var xObj = trace.error_x || {};\n var yObj = trace.error_y || {};\n var keyFunc;\n if (trace.ids) {\n keyFunc = function(d2) {\n return d2.id;\n };\n }\n var sparse = subTypes.hasMarkers(trace) && trace.marker.maxdisplayed > 0;\n if (!yObj.visible && !xObj.visible) d = [];\n var errorbars = d3.select(this).selectAll(\"g.errorbar\").data(d, keyFunc);\n errorbars.exit().remove();\n if (!d.length) return;\n if (!xObj.visible) errorbars.selectAll(\"path.xerror\").remove();\n if (!yObj.visible) errorbars.selectAll(\"path.yerror\").remove();\n errorbars.style(\"opacity\", 1);\n var enter = errorbars.enter().append(\"g\").classed(\"errorbar\", true);\n if (hasAnimation) {\n enter.style(\"opacity\", 0).transition().duration(transitionOpts.duration).style(\"opacity\", 1);\n }\n Drawing.setClipUrl(errorbars, plotinfo.layerClipId, gd);\n errorbars.each(function(d2) {\n var errorbar = d3.select(this);\n var coords = errorCoords(d2, xa, ya);\n if (sparse && !d2.vis) return;\n var path;\n var yerror = errorbar.select(\"path.yerror\");\n if (yObj.visible && isNumeric(coords.x) && isNumeric(coords.yh) && isNumeric(coords.ys)) {\n var yw = yObj.width;\n path = \"M\" + (coords.x - yw) + \",\" + coords.yh + \"h\" + 2 * yw + // hat\n \"m-\" + yw + \",0V\" + coords.ys;\n if (!coords.noYS) path += \"m-\" + yw + \",0h\" + 2 * yw;\n isNew = !yerror.size();\n if (isNew) {\n yerror = errorbar.append(\"path\").style(\"vector-effect\", isStatic ? \"none\" : \"non-scaling-stroke\").classed(\"yerror\", true);\n } else if (hasAnimation) {\n yerror = yerror.transition().duration(transitionOpts.duration).ease(transitionOpts.easing);\n }\n yerror.attr(\"d\", path);\n } else yerror.remove();\n var xerror = errorbar.select(\"path.xerror\");\n if (xObj.visible && isNumeric(coords.y) && isNumeric(coords.xh) && isNumeric(coords.xs)) {\n var xw = (xObj.copy_ystyle ? yObj : xObj).width;\n path = \"M\" + coords.xh + \",\" + (coords.y - xw) + \"v\" + 2 * xw + // hat\n \"m0,-\" + xw + \"H\" + coords.xs;\n if (!coords.noXS) path += \"m0,-\" + xw + \"v\" + 2 * xw;\n isNew = !xerror.size();\n if (isNew) {\n xerror = errorbar.append(\"path\").style(\"vector-effect\", isStatic ? \"none\" : \"non-scaling-stroke\").classed(\"xerror\", true);\n } else if (hasAnimation) {\n xerror = xerror.transition().duration(transitionOpts.duration).ease(transitionOpts.easing);\n }\n xerror.attr(\"d\", path);\n } else xerror.remove();\n });\n });\n };\n function errorCoords(d, xa, ya) {\n var out = {\n x: xa.c2p(d.x),\n y: ya.c2p(d.y)\n };\n if (d.yh !== void 0) {\n out.yh = ya.c2p(d.yh);\n out.ys = ya.c2p(d.ys);\n if (!isNumeric(out.ys)) {\n out.noYS = true;\n out.ys = ya.c2p(d.ys, true);\n }\n }\n if (d.xh !== void 0) {\n out.xh = xa.c2p(d.xh);\n out.xs = xa.c2p(d.xs);\n if (!isNumeric(out.xs)) {\n out.noXS = true;\n out.xs = xa.c2p(d.xs, true);\n }\n }\n return out;\n }\n }\n });\n\n // src/components/errorbars/style.js\n var require_style3 = __commonJS({\n \"src/components/errorbars/style.js\"(exports, module) {\n \"use strict\";\n var d3 = require_d3();\n var Color = require_color();\n module.exports = function style(traces) {\n traces.each(function(d) {\n var trace = d[0].trace;\n var yObj = trace.error_y || {};\n var xObj = trace.error_x || {};\n var s = d3.select(this);\n s.selectAll(\"path.yerror\").style(\"stroke-width\", yObj.thickness + \"px\").call(Color.stroke, yObj.color);\n if (xObj.copy_ystyle) xObj = yObj;\n s.selectAll(\"path.xerror\").style(\"stroke-width\", xObj.thickness + \"px\").call(Color.stroke, xObj.color);\n });\n };\n }\n });\n\n // src/components/errorbars/index.js\n var require_errorbars = __commonJS({\n \"src/components/errorbars/index.js\"(exports, module) {\n \"use strict\";\n var Lib = require_lib();\n var overrideAll = require_edit_types().overrideAll;\n var attributes = require_attributes22();\n var xyAttrs = {\n error_x: Lib.extendFlat({}, attributes),\n error_y: Lib.extendFlat({}, attributes)\n };\n delete xyAttrs.error_x.copy_zstyle;\n delete xyAttrs.error_y.copy_zstyle;\n delete xyAttrs.error_y.copy_ystyle;\n var xyzAttrs = {\n error_x: Lib.extendFlat({}, attributes),\n error_y: Lib.extendFlat({}, attributes),\n error_z: Lib.extendFlat({}, attributes)\n };\n delete xyzAttrs.error_x.copy_ystyle;\n delete xyzAttrs.error_y.copy_ystyle;\n delete xyzAttrs.error_z.copy_ystyle;\n delete xyzAttrs.error_z.copy_zstyle;\n module.exports = {\n moduleType: \"component\",\n name: \"errorbars\",\n schema: {\n traces: {\n scatter: xyAttrs,\n bar: xyAttrs,\n histogram: xyAttrs,\n scatter3d: overrideAll(xyzAttrs, \"calc\", \"nested\"),\n scattergl: overrideAll(xyAttrs, \"calc\", \"nested\")\n }\n },\n supplyDefaults: require_defaults18(),\n calc: require_calc4(),\n makeComputeError: require_compute_error(),\n plot: require_plot2(),\n style: require_style3(),\n hoverInfo\n };\n function hoverInfo(calcPoint, trace, hoverPoint) {\n if ((trace.error_y || {}).visible) {\n hoverPoint.yerr = calcPoint.yh - calcPoint.y;\n if (!trace.error_y.symmetric) hoverPoint.yerrneg = calcPoint.y - calcPoint.ys;\n }\n if ((trace.error_x || {}).visible) {\n hoverPoint.xerr = calcPoint.xh - calcPoint.x;\n if (!trace.error_x.symmetric) hoverPoint.xerrneg = calcPoint.x - calcPoint.xs;\n }\n }\n }\n });\n\n // src/components/colorbar/constants.js\n var require_constants13 = __commonJS({\n \"src/components/colorbar/constants.js\"(exports, module) {\n \"use strict\";\n module.exports = {\n cn: {\n colorbar: \"colorbar\",\n cbbg: \"cbbg\",\n cbfill: \"cbfill\",\n cbfills: \"cbfills\",\n cbline: \"cbline\",\n cblines: \"cblines\",\n cbaxis: \"cbaxis\",\n cbtitleunshift: \"cbtitleunshift\",\n cbtitle: \"cbtitle\",\n cboutline: \"cboutline\",\n crisp: \"crisp\",\n jsPlaceholder: \"js-placeholder\"\n }\n };\n }\n });\n\n // src/components/colorbar/draw.js\n var require_draw11 = __commonJS({\n \"src/components/colorbar/draw.js\"(exports, module) {\n \"use strict\";\n var d3 = require_d3();\n var tinycolor = require_tinycolor();\n var Plots = require_plots();\n var Registry = require_registry();\n var Axes = require_axes();\n var dragElement = require_dragelement();\n var Lib = require_lib();\n var strTranslate = Lib.strTranslate;\n var extendFlat = require_extend().extendFlat;\n var setCursor = require_setcursor();\n var Drawing = require_drawing();\n var Color = require_color();\n var Titles = require_titles();\n var svgTextUtils = require_svg_text_utils();\n var flipScale = require_helpers().flipScale;\n var handleAxisDefaults = require_axis_defaults();\n var handleAxisPositionDefaults = require_position_defaults();\n var axisLayoutAttrs = require_layout_attributes4();\n var alignmentConstants = require_alignment();\n var LINE_SPACING = alignmentConstants.LINE_SPACING;\n var FROM_TL = alignmentConstants.FROM_TL;\n var FROM_BR = alignmentConstants.FROM_BR;\n var cn = require_constants13().cn;\n function draw(gd) {\n var fullLayout = gd._fullLayout;\n var colorBars = fullLayout._infolayer.selectAll(\"g.\" + cn.colorbar).data(makeColorBarData(gd), function(opts) {\n return opts._id;\n });\n colorBars.enter().append(\"g\").attr(\"class\", function(opts) {\n return opts._id;\n }).classed(cn.colorbar, true);\n colorBars.each(function(opts) {\n var g = d3.select(this);\n Lib.ensureSingle(g, \"rect\", cn.cbbg);\n Lib.ensureSingle(g, \"g\", cn.cbfills);\n Lib.ensureSingle(g, \"g\", cn.cblines);\n Lib.ensureSingle(g, \"g\", cn.cbaxis, function(s) {\n s.classed(cn.crisp, true);\n });\n Lib.ensureSingle(g, \"g\", cn.cbtitleunshift, function(s) {\n s.append(\"g\").classed(cn.cbtitle, true);\n });\n Lib.ensureSingle(g, \"rect\", cn.cboutline);\n var done = drawColorBar(g, opts, gd);\n if (done && done.then) (gd._promises || []).push(done);\n if (gd._context.edits.colorbarPosition) {\n makeEditable(g, opts, gd);\n }\n });\n colorBars.exit().each(function(opts) {\n Plots.autoMargin(gd, opts._id);\n }).remove();\n colorBars.order();\n }\n function makeColorBarData(gd) {\n var fullLayout = gd._fullLayout;\n var calcdata = gd.calcdata;\n var out = [];\n var opts;\n var cont;\n var trace;\n var cbOpt;\n function initOpts(opts2) {\n return extendFlat(opts2, {\n // fillcolor can be a d3 scale, domain is z values, range is colors\n // or leave it out for no fill,\n // or set to a string constant for single-color fill\n _fillcolor: null,\n // line.color has the same options as fillcolor\n _line: { color: null, width: null, dash: null },\n // levels of lines to draw.\n // note that this DOES NOT determine the extent of the bar\n // that's given by the domain of fillcolor\n // (or line.color if no fillcolor domain)\n _levels: { start: null, end: null, size: null },\n // separate fill levels (for example, heatmap coloring of a\n // contour map) if this is omitted, fillcolors will be\n // evaluated halfway between levels\n _filllevels: null,\n // for continuous colorscales: fill with a gradient instead of explicit levels\n // value should be the colorscale [[0, c0], [v1, c1], ..., [1, cEnd]]\n _fillgradient: null,\n // when using a gradient, we need the data range specified separately\n _zrange: null\n });\n }\n function calcOpts() {\n if (typeof cbOpt.calc === \"function\") {\n cbOpt.calc(gd, trace, opts);\n } else {\n opts._fillgradient = cont.reversescale ? flipScale(cont.colorscale) : cont.colorscale;\n opts._zrange = [cont[cbOpt.min], cont[cbOpt.max]];\n }\n }\n for (var i = 0; i < calcdata.length; i++) {\n var cd = calcdata[i];\n trace = cd[0].trace;\n if (!trace._module) continue;\n var moduleOpts = trace._module.colorbar;\n if (trace.visible === true && moduleOpts) {\n var allowsMultiplotCbs = Array.isArray(moduleOpts);\n var cbOpts = allowsMultiplotCbs ? moduleOpts : [moduleOpts];\n for (var j = 0; j < cbOpts.length; j++) {\n cbOpt = cbOpts[j];\n var contName = cbOpt.container;\n cont = contName ? trace[contName] : trace;\n if (cont && cont.showscale) {\n opts = initOpts(cont.colorbar);\n opts._id = \"cb\" + trace.uid + (allowsMultiplotCbs && contName ? \"-\" + contName : \"\");\n opts._traceIndex = trace.index;\n opts._propPrefix = (contName ? contName + \".\" : \"\") + \"colorbar.\";\n opts._meta = trace._meta;\n calcOpts();\n out.push(opts);\n }\n }\n }\n }\n for (var k in fullLayout._colorAxes) {\n cont = fullLayout[k];\n if (cont.showscale) {\n var colorAxOpts = fullLayout._colorAxes[k];\n opts = initOpts(cont.colorbar);\n opts._id = \"cb\" + k;\n opts._propPrefix = k + \".colorbar.\";\n opts._meta = fullLayout._meta;\n cbOpt = { min: \"cmin\", max: \"cmax\" };\n if (colorAxOpts[0] !== \"heatmap\") {\n trace = colorAxOpts[1];\n cbOpt.calc = trace._module.colorbar.calc;\n }\n calcOpts();\n out.push(opts);\n }\n }\n return out;\n }\n function drawColorBar(g, opts, gd) {\n var isVertical = opts.orientation === \"v\";\n var len = opts.len;\n var lenmode = opts.lenmode;\n var thickness = opts.thickness;\n var thicknessmode = opts.thicknessmode;\n var outlinewidth = opts.outlinewidth;\n var borderwidth = opts.borderwidth;\n var bgcolor = opts.bgcolor;\n var xanchor = opts.xanchor;\n var yanchor = opts.yanchor;\n var xpad = opts.xpad;\n var ypad = opts.ypad;\n var optsX = opts.x;\n var optsY = isVertical ? opts.y : 1 - opts.y;\n var isPaperY = opts.yref === \"paper\";\n var isPaperX = opts.xref === \"paper\";\n var fullLayout = gd._fullLayout;\n var gs = fullLayout._size;\n var fillColor = opts._fillcolor;\n var line = opts._line;\n var title = opts.title;\n var titleSide = title.side;\n var zrange = opts._zrange || d3.extent((typeof fillColor === \"function\" ? fillColor : line.color).domain());\n var lineColormap = typeof line.color === \"function\" ? line.color : function() {\n return line.color;\n };\n var fillColormap = typeof fillColor === \"function\" ? fillColor : function() {\n return fillColor;\n };\n var levelsIn = opts._levels;\n var levelsOut = calcLevels(gd, opts, zrange);\n var fillLevels = levelsOut.fill;\n var lineLevels = levelsOut.line;\n var thickPx = Math.round(thickness * (thicknessmode === \"fraction\" ? isVertical ? gs.w : gs.h : 1));\n var thickFrac = thickPx / (isVertical ? gs.w : gs.h);\n var lenPx = Math.round(len * (lenmode === \"fraction\" ? isVertical ? gs.h : gs.w : 1));\n var lenFrac = lenPx / (isVertical ? gs.h : gs.w);\n var posW = isPaperX ? gs.w : gd._fullLayout.width;\n var posH = isPaperY ? gs.h : gd._fullLayout.height;\n var uPx = Math.round(\n isVertical ? optsX * posW + xpad : optsY * posH + ypad\n );\n var xRatio = { center: 0.5, right: 1 }[xanchor] || 0;\n var yRatio = { top: 1, middle: 0.5 }[yanchor] || 0;\n var uFrac = isVertical ? optsX - xRatio * thickFrac : optsY - yRatio * thickFrac;\n var vFrac = isVertical ? optsY - yRatio * lenFrac : optsX - xRatio * lenFrac;\n var vPx = Math.round(\n isVertical ? posH * (1 - vFrac) : posW * vFrac\n );\n opts._lenFrac = lenFrac;\n opts._thickFrac = thickFrac;\n opts._uFrac = uFrac;\n opts._vFrac = vFrac;\n var ax = opts._axis = mockColorBarAxis(gd, opts, zrange);\n ax.position = thickFrac + (isVertical ? optsX + xpad / gs.w : optsY + ypad / gs.h);\n var topOrBottom = [\"top\", \"bottom\"].indexOf(titleSide) !== -1;\n if (isVertical && topOrBottom) {\n ax.title.side = titleSide;\n ax.titlex = optsX + xpad / gs.w;\n ax.titley = vFrac + (title.side === \"top\" ? lenFrac - ypad / gs.h : ypad / gs.h);\n }\n if (!isVertical && !topOrBottom) {\n ax.title.side = titleSide;\n ax.titley = optsY + ypad / gs.h;\n ax.titlex = vFrac + xpad / gs.w;\n }\n if (line.color && opts.tickmode === \"auto\") {\n ax.tickmode = \"linear\";\n ax.tick0 = levelsIn.start;\n var dtick = levelsIn.size;\n var autoNtick = Lib.constrain(lenPx / 50, 4, 15) + 1;\n var dtFactor = (zrange[1] - zrange[0]) / ((opts.nticks || autoNtick) * dtick);\n if (dtFactor > 1) {\n var dtexp = Math.pow(10, Math.floor(Math.log(dtFactor) / Math.LN10));\n dtick *= dtexp * Lib.roundUp(dtFactor / dtexp, [2, 5, 10]);\n if ((Math.abs(levelsIn.start) / levelsIn.size + 1e-6) % 1 < 2e-6) {\n ax.tick0 = 0;\n }\n }\n ax.dtick = dtick;\n }\n ax.domain = isVertical ? [\n vFrac + ypad / gs.h,\n vFrac + lenFrac - ypad / gs.h\n ] : [\n vFrac + xpad / gs.w,\n vFrac + lenFrac - xpad / gs.w\n ];\n ax.setScale();\n g.attr(\"transform\", strTranslate(Math.round(gs.l), Math.round(gs.t)));\n var titleCont = g.select(\".\" + cn.cbtitleunshift).attr(\"transform\", strTranslate(-Math.round(gs.l), -Math.round(gs.t)));\n var ticklabelposition = ax.ticklabelposition;\n var titleFontSize = ax.title.font.size;\n var axLayer = g.select(\".\" + cn.cbaxis);\n var titleEl;\n var titleHeight = 0;\n var titleWidth = 0;\n function drawTitle(titleClass, titleOpts) {\n var dfltTitleOpts = {\n propContainer: ax,\n propName: opts._propPrefix + \"title\",\n traceIndex: opts._traceIndex,\n _meta: opts._meta,\n placeholder: fullLayout._dfltTitle.colorbar,\n containerGroup: g.select(\".\" + cn.cbtitle)\n };\n var otherClass = titleClass.charAt(0) === \"h\" ? titleClass.substr(1) : \"h\" + titleClass;\n g.selectAll(\".\" + otherClass + \",.\" + otherClass + \"-math-group\").remove();\n Titles.draw(gd, titleClass, extendFlat(dfltTitleOpts, titleOpts || {}));\n }\n function drawDummyTitle() {\n if (isVertical && topOrBottom || !isVertical && !topOrBottom) {\n var x, y;\n if (titleSide === \"top\") {\n x = xpad + gs.l + posW * optsX;\n y = ypad + gs.t + posH * (1 - vFrac - lenFrac) + 3 + titleFontSize * 0.75;\n }\n if (titleSide === \"bottom\") {\n x = xpad + gs.l + posW * optsX;\n y = ypad + gs.t + posH * (1 - vFrac) - 3 - titleFontSize * 0.25;\n }\n if (titleSide === \"right\") {\n y = ypad + gs.t + posH * optsY + 3 + titleFontSize * 0.75;\n x = xpad + gs.l + posW * vFrac;\n }\n drawTitle(ax._id + \"title\", {\n attributes: { x, y, \"text-anchor\": isVertical ? \"start\" : \"middle\" }\n });\n }\n }\n function drawCbTitle() {\n if (isVertical && !topOrBottom || !isVertical && topOrBottom) {\n var pos = ax.position || 0;\n var mid = ax._offset + ax._length / 2;\n var x, y;\n if (titleSide === \"right\") {\n y = mid;\n x = gs.l + posW * pos + 10 + titleFontSize * (ax.showticklabels ? 1 : 0.5);\n } else {\n x = mid;\n if (titleSide === \"bottom\") {\n y = gs.t + posH * pos + 10 + (ticklabelposition.indexOf(\"inside\") === -1 ? ax.tickfont.size : 0) + (ax.ticks !== \"intside\" ? opts.ticklen || 0 : 0);\n }\n if (titleSide === \"top\") {\n var nlines = title.text.split(\"
\").length;\n y = gs.t + posH * pos + 10 - thickPx - LINE_SPACING * titleFontSize * nlines;\n }\n }\n drawTitle((isVertical ? (\n // the 'h' + is a hack to get around the fact that\n // convertToTspans rotates any 'y...' class by 90 degrees.\n // TODO: find a better way to control this.\n \"h\"\n ) : \"v\") + ax._id + \"title\", {\n avoid: {\n selection: d3.select(gd).selectAll(\"g.\" + ax._id + \"tick\"),\n side: titleSide,\n offsetTop: isVertical ? 0 : gs.t,\n offsetLeft: isVertical ? gs.l : 0,\n maxShift: isVertical ? fullLayout.width : fullLayout.height\n },\n attributes: { x, y, \"text-anchor\": \"middle\" },\n transform: { rotate: isVertical ? -90 : 0, offset: 0 }\n });\n }\n }\n function drawAxis() {\n if (!isVertical && !topOrBottom || isVertical && topOrBottom) {\n var titleGroup = g.select(\".\" + cn.cbtitle);\n var titleText = titleGroup.select(\"text\");\n var titleTrans = [-outlinewidth / 2, outlinewidth / 2];\n var mathJaxNode = titleGroup.select(\".h\" + ax._id + \"title-math-group\").node();\n var lineSize = 15.6;\n if (titleText.node()) {\n lineSize = parseInt(titleText.node().style.fontSize, 10) * LINE_SPACING;\n }\n var bb;\n if (mathJaxNode) {\n bb = Drawing.bBox(mathJaxNode);\n titleWidth = bb.width;\n titleHeight = bb.height;\n if (titleHeight > lineSize) {\n titleTrans[1] -= (titleHeight - lineSize) / 2;\n }\n } else if (titleText.node() && !titleText.classed(cn.jsPlaceholder)) {\n bb = Drawing.bBox(titleText.node());\n titleWidth = bb.width;\n titleHeight = bb.height;\n }\n if (isVertical) {\n if (titleHeight) {\n titleHeight += 5;\n if (titleSide === \"top\") {\n ax.domain[1] -= titleHeight / gs.h;\n titleTrans[1] *= -1;\n } else {\n ax.domain[0] += titleHeight / gs.h;\n var nlines = svgTextUtils.lineCount(titleText);\n titleTrans[1] += (1 - nlines) * lineSize;\n }\n titleGroup.attr(\"transform\", strTranslate(titleTrans[0], titleTrans[1]));\n ax.setScale();\n }\n } else {\n if (titleWidth) {\n if (titleSide === \"right\") {\n ax.domain[0] += (titleWidth + titleFontSize / 2) / gs.w;\n }\n titleGroup.attr(\"transform\", strTranslate(titleTrans[0], titleTrans[1]));\n ax.setScale();\n }\n }\n }\n g.selectAll(\".\" + cn.cbfills + \",.\" + cn.cblines).attr(\n \"transform\",\n isVertical ? strTranslate(0, Math.round(gs.h * (1 - ax.domain[1]))) : strTranslate(Math.round(gs.w * ax.domain[0]), 0)\n );\n axLayer.attr(\n \"transform\",\n isVertical ? strTranslate(0, Math.round(-gs.t)) : strTranslate(Math.round(-gs.l), 0)\n );\n var fills = g.select(\".\" + cn.cbfills).selectAll(\"rect.\" + cn.cbfill).attr(\"style\", \"\").data(fillLevels);\n fills.enter().append(\"rect\").classed(cn.cbfill, true).attr(\"style\", \"\");\n fills.exit().remove();\n var zBounds = zrange.map(ax.c2p).map(Math.round).sort(function(a, b) {\n return a - b;\n });\n fills.each(function(d, i) {\n var z = [\n i === 0 ? zrange[0] : (fillLevels[i] + fillLevels[i - 1]) / 2,\n i === fillLevels.length - 1 ? zrange[1] : (fillLevels[i] + fillLevels[i + 1]) / 2\n ].map(ax.c2p).map(Math.round);\n if (isVertical) {\n z[1] = Lib.constrain(z[1] + (z[1] > z[0]) ? 1 : -1, zBounds[0], zBounds[1]);\n }\n var fillEl = d3.select(this).attr(isVertical ? \"x\" : \"y\", uPx).attr(isVertical ? \"y\" : \"x\", d3.min(z)).attr(isVertical ? \"width\" : \"height\", Math.max(thickPx, 2)).attr(isVertical ? \"height\" : \"width\", Math.max(d3.max(z) - d3.min(z), 2));\n if (opts._fillgradient) {\n Drawing.gradient(fillEl, gd, opts._id, isVertical ? \"vertical\" : \"horizontalreversed\", opts._fillgradient, \"fill\");\n } else {\n var colorString = fillColormap(d).replace(\"e-\", \"\");\n fillEl.attr(\"fill\", tinycolor(colorString).toHexString());\n }\n });\n var lines = g.select(\".\" + cn.cblines).selectAll(\"path.\" + cn.cbline).data(line.color && line.width ? lineLevels : []);\n lines.enter().append(\"path\").classed(cn.cbline, true);\n lines.exit().remove();\n lines.each(function(d) {\n var a = uPx;\n var b = Math.round(ax.c2p(d)) + line.width / 2 % 1;\n d3.select(this).attr(\n \"d\",\n \"M\" + (isVertical ? a + \",\" + b : b + \",\" + a) + (isVertical ? \"h\" : \"v\") + thickPx\n ).call(Drawing.lineGroupStyle, line.width, lineColormap(d), line.dash);\n });\n axLayer.selectAll(\"g.\" + ax._id + \"tick,path\").remove();\n var shift = uPx + thickPx + (outlinewidth || 0) / 2 - (opts.ticks === \"outside\" ? 1 : 0);\n var vals = Axes.calcTicks(ax);\n var tickSign = Axes.getTickSigns(ax)[2];\n Axes.drawTicks(gd, ax, {\n vals: ax.ticks === \"inside\" ? Axes.clipEnds(ax, vals) : vals,\n layer: axLayer,\n path: Axes.makeTickPath(ax, shift, tickSign),\n transFn: Axes.makeTransTickFn(ax)\n });\n return Axes.drawLabels(gd, ax, {\n vals,\n layer: axLayer,\n transFn: Axes.makeTransTickLabelFn(ax),\n labelFns: Axes.makeLabelFns(ax, shift)\n });\n }\n function positionCB() {\n var bb;\n var innerThickness = thickPx + outlinewidth / 2;\n if (ticklabelposition.indexOf(\"inside\") === -1) {\n bb = Drawing.bBox(axLayer.node());\n innerThickness += isVertical ? bb.width : bb.height;\n }\n titleEl = titleCont.select(\"text\");\n var titleWidth2 = 0;\n var topSideVertical = isVertical && titleSide === \"top\";\n var rightSideHorizontal = !isVertical && titleSide === \"right\";\n var moveY = 0;\n if (titleEl.node() && !titleEl.classed(cn.jsPlaceholder)) {\n var _titleHeight;\n var mathJaxNode = titleCont.select(\".h\" + ax._id + \"title-math-group\").node();\n if (mathJaxNode && (isVertical && topOrBottom || !isVertical && !topOrBottom)) {\n bb = Drawing.bBox(mathJaxNode);\n titleWidth2 = bb.width;\n _titleHeight = bb.height;\n } else {\n bb = Drawing.bBox(titleCont.node());\n titleWidth2 = bb.right - gs.l - (isVertical ? uPx : vPx);\n _titleHeight = bb.bottom - gs.t - (isVertical ? vPx : uPx);\n if (!isVertical && titleSide === \"top\") {\n innerThickness += bb.height;\n moveY = bb.height;\n }\n }\n if (rightSideHorizontal) {\n titleEl.attr(\"transform\", strTranslate(titleWidth2 / 2 + titleFontSize / 2, 0));\n titleWidth2 *= 2;\n }\n innerThickness = Math.max(\n innerThickness,\n isVertical ? titleWidth2 : _titleHeight\n );\n }\n var outerThickness = (isVertical ? xpad : ypad) * 2 + innerThickness + borderwidth + outlinewidth / 2;\n var hColorbarMoveTitle = 0;\n if (!isVertical && title.text && yanchor === \"bottom\" && optsY <= 0) {\n hColorbarMoveTitle = outerThickness / 2;\n outerThickness += hColorbarMoveTitle;\n moveY += hColorbarMoveTitle;\n }\n fullLayout._hColorbarMoveTitle = hColorbarMoveTitle;\n fullLayout._hColorbarMoveCBTitle = moveY;\n var extraW = borderwidth + outlinewidth;\n var lx = (isVertical ? uPx : vPx) - extraW / 2 - (isVertical ? xpad : 0);\n var ly = (isVertical ? vPx : uPx) - (isVertical ? lenPx : ypad + moveY - hColorbarMoveTitle);\n g.select(\".\" + cn.cbbg).attr(\"x\", lx).attr(\"y\", ly).attr(isVertical ? \"width\" : \"height\", Math.max(outerThickness - hColorbarMoveTitle, 2)).attr(isVertical ? \"height\" : \"width\", Math.max(lenPx + extraW, 2)).call(Color.fill, bgcolor).call(Color.stroke, opts.bordercolor).style(\"stroke-width\", borderwidth);\n var moveX = rightSideHorizontal ? Math.max(titleWidth2 - 10, 0) : 0;\n g.selectAll(\".\" + cn.cboutline).attr(\"x\", (isVertical ? uPx : vPx + xpad) + moveX).attr(\"y\", (isVertical ? vPx + ypad - lenPx : uPx) + (topSideVertical ? titleHeight : 0)).attr(isVertical ? \"width\" : \"height\", Math.max(thickPx, 2)).attr(isVertical ? \"height\" : \"width\", Math.max(lenPx - (isVertical ? 2 * ypad + titleHeight : 2 * xpad + moveX), 2)).call(Color.stroke, opts.outlinecolor).style({\n fill: \"none\",\n \"stroke-width\": outlinewidth\n });\n var xShift = isVertical ? xRatio * outerThickness : 0;\n var yShift = isVertical ? 0 : (1 - yRatio) * outerThickness - moveY;\n xShift = isPaperX ? gs.l - xShift : -xShift;\n yShift = isPaperY ? gs.t - yShift : -yShift;\n g.attr(\"transform\", strTranslate(\n xShift,\n yShift\n ));\n if (!isVertical && (borderwidth || tinycolor(bgcolor).getAlpha() && !tinycolor.equals(fullLayout.paper_bgcolor, bgcolor))) {\n var tickLabels = axLayer.selectAll(\"text\");\n var numTicks = tickLabels[0].length;\n var border = g.select(\".\" + cn.cbbg).node();\n var oBb = Drawing.bBox(border);\n var oTr = Drawing.getTranslate(g);\n var TEXTPAD = 2;\n tickLabels.each(function(d, i) {\n var first = 0;\n var last = numTicks - 1;\n if (i === first || i === last) {\n var iBb = Drawing.bBox(this);\n var iTr = Drawing.getTranslate(this);\n var deltaX;\n if (i === last) {\n var iRight = iBb.right + iTr.x;\n var oRight = oBb.right + oTr.x + vPx - borderwidth - TEXTPAD + optsX;\n deltaX = oRight - iRight;\n if (deltaX > 0) deltaX = 0;\n } else if (i === first) {\n var iLeft = iBb.left + iTr.x;\n var oLeft = oBb.left + oTr.x + vPx + borderwidth + TEXTPAD;\n deltaX = oLeft - iLeft;\n if (deltaX < 0) deltaX = 0;\n }\n if (deltaX) {\n if (numTicks < 3) {\n this.setAttribute(\n \"transform\",\n \"translate(\" + deltaX + \",0) \" + this.getAttribute(\"transform\")\n );\n } else {\n this.setAttribute(\"visibility\", \"hidden\");\n }\n }\n }\n });\n }\n var marginOpts = {};\n var lFrac = FROM_TL[xanchor];\n var rFrac = FROM_BR[xanchor];\n var tFrac = FROM_TL[yanchor];\n var bFrac = FROM_BR[yanchor];\n var extraThickness = outerThickness - thickPx;\n if (isVertical) {\n if (lenmode === \"pixels\") {\n marginOpts.y = optsY;\n marginOpts.t = lenPx * tFrac;\n marginOpts.b = lenPx * bFrac;\n } else {\n marginOpts.t = marginOpts.b = 0;\n marginOpts.yt = optsY + len * tFrac;\n marginOpts.yb = optsY - len * bFrac;\n }\n if (thicknessmode === \"pixels\") {\n marginOpts.x = optsX;\n marginOpts.l = outerThickness * lFrac;\n marginOpts.r = outerThickness * rFrac;\n } else {\n marginOpts.l = extraThickness * lFrac;\n marginOpts.r = extraThickness * rFrac;\n marginOpts.xl = optsX - thickness * lFrac;\n marginOpts.xr = optsX + thickness * rFrac;\n }\n } else {\n if (lenmode === \"pixels\") {\n marginOpts.x = optsX;\n marginOpts.l = lenPx * lFrac;\n marginOpts.r = lenPx * rFrac;\n } else {\n marginOpts.l = marginOpts.r = 0;\n marginOpts.xl = optsX + len * lFrac;\n marginOpts.xr = optsX - len * rFrac;\n }\n if (thicknessmode === \"pixels\") {\n marginOpts.y = 1 - optsY;\n marginOpts.t = outerThickness * tFrac;\n marginOpts.b = outerThickness * bFrac;\n } else {\n marginOpts.t = extraThickness * tFrac;\n marginOpts.b = extraThickness * bFrac;\n marginOpts.yt = optsY - thickness * tFrac;\n marginOpts.yb = optsY + thickness * bFrac;\n }\n }\n var sideY = opts.y < 0.5 ? \"b\" : \"t\";\n var sideX = opts.x < 0.5 ? \"l\" : \"r\";\n gd._fullLayout._reservedMargin[opts._id] = {};\n var possibleReservedMargins = {\n r: fullLayout.width - lx - xShift,\n l: lx + marginOpts.r,\n b: fullLayout.height - ly - yShift,\n t: ly + marginOpts.b\n };\n if (isPaperX && isPaperY) {\n Plots.autoMargin(gd, opts._id, marginOpts);\n } else if (isPaperX) {\n gd._fullLayout._reservedMargin[opts._id][sideY] = possibleReservedMargins[sideY];\n } else if (isPaperY) {\n gd._fullLayout._reservedMargin[opts._id][sideX] = possibleReservedMargins[sideX];\n } else {\n if (isVertical) {\n gd._fullLayout._reservedMargin[opts._id][sideX] = possibleReservedMargins[sideX];\n } else {\n gd._fullLayout._reservedMargin[opts._id][sideY] = possibleReservedMargins[sideY];\n }\n }\n }\n return Lib.syncOrAsync([\n Plots.previousPromises,\n drawDummyTitle,\n drawAxis,\n drawCbTitle,\n Plots.previousPromises,\n positionCB\n ], gd);\n }\n function makeEditable(g, opts, gd) {\n var isVertical = opts.orientation === \"v\";\n var fullLayout = gd._fullLayout;\n var gs = fullLayout._size;\n var t0, xf, yf;\n dragElement.init({\n element: g.node(),\n gd,\n prepFn: function() {\n t0 = g.attr(\"transform\");\n setCursor(g);\n },\n moveFn: function(dx, dy) {\n g.attr(\"transform\", t0 + strTranslate(dx, dy));\n xf = dragElement.align(\n (isVertical ? opts._uFrac : opts._vFrac) + dx / gs.w,\n isVertical ? opts._thickFrac : opts._lenFrac,\n 0,\n 1,\n opts.xanchor\n );\n yf = dragElement.align(\n (isVertical ? opts._vFrac : 1 - opts._uFrac) - dy / gs.h,\n isVertical ? opts._lenFrac : opts._thickFrac,\n 0,\n 1,\n opts.yanchor\n );\n var csr = dragElement.getCursor(xf, yf, opts.xanchor, opts.yanchor);\n setCursor(g, csr);\n },\n doneFn: function() {\n setCursor(g);\n if (xf !== void 0 && yf !== void 0) {\n var update = {};\n update[opts._propPrefix + \"x\"] = xf;\n update[opts._propPrefix + \"y\"] = yf;\n if (opts._traceIndex !== void 0) {\n Registry.call(\"_guiRestyle\", gd, update, opts._traceIndex);\n } else {\n Registry.call(\"_guiRelayout\", gd, update);\n }\n }\n }\n });\n }\n function calcLevels(gd, opts, zrange) {\n var levelsIn = opts._levels;\n var lineLevels = [];\n var fillLevels = [];\n var l;\n var i;\n var l0 = levelsIn.end + levelsIn.size / 100;\n var ls = levelsIn.size;\n var zr0 = 1.001 * zrange[0] - 1e-3 * zrange[1];\n var zr1 = 1.001 * zrange[1] - 1e-3 * zrange[0];\n for (i = 0; i < 1e5; i++) {\n l = levelsIn.start + i * ls;\n if (ls > 0 ? l >= l0 : l <= l0) break;\n if (l > zr0 && l < zr1) lineLevels.push(l);\n }\n if (opts._fillgradient) {\n fillLevels = [0];\n } else if (typeof opts._fillcolor === \"function\") {\n var fillLevelsIn = opts._filllevels;\n if (fillLevelsIn) {\n l0 = fillLevelsIn.end + fillLevelsIn.size / 100;\n ls = fillLevelsIn.size;\n for (i = 0; i < 1e5; i++) {\n l = fillLevelsIn.start + i * ls;\n if (ls > 0 ? l >= l0 : l <= l0) break;\n if (l > zrange[0] && l < zrange[1]) fillLevels.push(l);\n }\n } else {\n fillLevels = lineLevels.map(function(v) {\n return v - levelsIn.size / 2;\n });\n fillLevels.push(fillLevels[fillLevels.length - 1] + levelsIn.size);\n }\n } else if (opts._fillcolor && typeof opts._fillcolor === \"string\") {\n fillLevels = [0];\n }\n if (levelsIn.size < 0) {\n lineLevels.reverse();\n fillLevels.reverse();\n }\n return { line: lineLevels, fill: fillLevels };\n }\n function mockColorBarAxis(gd, opts, zrange) {\n var fullLayout = gd._fullLayout;\n var isVertical = opts.orientation === \"v\";\n var cbAxisIn = {\n type: \"linear\",\n range: zrange,\n tickmode: opts.tickmode,\n nticks: opts.nticks,\n tick0: opts.tick0,\n dtick: opts.dtick,\n tickvals: opts.tickvals,\n ticktext: opts.ticktext,\n ticks: opts.ticks,\n ticklen: opts.ticklen,\n tickwidth: opts.tickwidth,\n tickcolor: opts.tickcolor,\n showticklabels: opts.showticklabels,\n labelalias: opts.labelalias,\n ticklabelposition: opts.ticklabelposition,\n ticklabeloverflow: opts.ticklabeloverflow,\n ticklabelstep: opts.ticklabelstep,\n tickfont: opts.tickfont,\n tickangle: opts.tickangle,\n tickformat: opts.tickformat,\n exponentformat: opts.exponentformat,\n minexponent: opts.minexponent,\n separatethousands: opts.separatethousands,\n showexponent: opts.showexponent,\n showtickprefix: opts.showtickprefix,\n tickprefix: opts.tickprefix,\n showticksuffix: opts.showticksuffix,\n ticksuffix: opts.ticksuffix,\n title: opts.title,\n showline: true,\n anchor: \"free\",\n side: isVertical ? \"right\" : \"bottom\",\n position: 1\n };\n var letter = isVertical ? \"y\" : \"x\";\n var cbAxisOut = {\n type: \"linear\",\n _id: letter + opts._id\n };\n var axisOptions = {\n letter,\n font: fullLayout.font,\n noAutotickangles: letter === \"y\",\n noHover: true,\n noTickson: true,\n noTicklabelmode: true,\n noInsideRange: true,\n calendar: fullLayout.calendar\n // not really necessary (yet?)\n };\n function coerce(attr, dflt) {\n return Lib.coerce(cbAxisIn, cbAxisOut, axisLayoutAttrs, attr, dflt);\n }\n handleAxisDefaults(cbAxisIn, cbAxisOut, coerce, axisOptions, fullLayout);\n handleAxisPositionDefaults(cbAxisIn, cbAxisOut, coerce, axisOptions);\n return cbAxisOut;\n }\n module.exports = {\n draw\n };\n }\n });\n\n // src/components/colorbar/index.js\n var require_colorbar = __commonJS({\n \"src/components/colorbar/index.js\"(exports, module) {\n \"use strict\";\n module.exports = {\n moduleType: \"component\",\n name: \"colorbar\",\n attributes: require_attributes7(),\n supplyDefaults: require_defaults(),\n draw: require_draw11().draw,\n hasColorbar: require_has_colorbar()\n };\n }\n });\n\n // src/components/legend/index.js\n var require_legend = __commonJS({\n \"src/components/legend/index.js\"(exports, module) {\n \"use strict\";\n module.exports = {\n moduleType: \"component\",\n name: \"legend\",\n layoutAttributes: require_attributes9(),\n supplyLayoutDefaults: require_defaults3(),\n draw: require_draw(),\n style: require_style()\n };\n }\n });\n\n // src/locale-en.js\n var require_locale_en = __commonJS({\n \"src/locale-en.js\"(exports, module) {\n \"use strict\";\n module.exports = {\n moduleType: \"locale\",\n name: \"en\",\n dictionary: {\n \"Click to enter Colorscale title\": \"Click to enter Colourscale title\"\n },\n format: {\n days: [\"Sunday\", \"Monday\", \"Tuesday\", \"Wednesday\", \"Thursday\", \"Friday\", \"Saturday\"],\n shortDays: [\"Sun\", \"Mon\", \"Tue\", \"Wed\", \"Thu\", \"Fri\", \"Sat\"],\n months: [\n \"January\",\n \"February\",\n \"March\",\n \"April\",\n \"May\",\n \"June\",\n \"July\",\n \"August\",\n \"September\",\n \"October\",\n \"November\",\n \"December\"\n ],\n shortMonths: [\n \"Jan\",\n \"Feb\",\n \"Mar\",\n \"Apr\",\n \"May\",\n \"Jun\",\n \"Jul\",\n \"Aug\",\n \"Sep\",\n \"Oct\",\n \"Nov\",\n \"Dec\"\n ],\n periods: [\"AM\", \"PM\"],\n dateTime: \"%a %b %e %X %Y\",\n date: \"%d/%m/%Y\",\n time: \"%H:%M:%S\",\n decimal: \".\",\n thousands: \",\",\n grouping: [3],\n currency: [\"$\", \"\"],\n year: \"%Y\",\n month: \"%b %Y\",\n dayMonth: \"%b %-d\",\n dayMonthYear: \"%b %-d, %Y\"\n }\n };\n }\n });\n\n // src/locale-en-us.js\n var require_locale_en_us = __commonJS({\n \"src/locale-en-us.js\"(exports, module) {\n \"use strict\";\n module.exports = {\n moduleType: \"locale\",\n name: \"en-US\",\n dictionary: {\n \"Click to enter Colorscale title\": \"Click to enter Colorscale title\"\n },\n format: {\n date: \"%m/%d/%Y\"\n }\n };\n }\n });\n\n // src/snapshot/cloneplot.js\n var require_cloneplot = __commonJS({\n \"src/snapshot/cloneplot.js\"(exports, module) {\n \"use strict\";\n var Registry = require_registry();\n var Lib = require_lib();\n var extendFlat = Lib.extendFlat;\n var extendDeep = Lib.extendDeep;\n function cloneLayoutOverride(tileClass) {\n var override;\n switch (tileClass) {\n case \"themes__thumb\":\n override = {\n autosize: true,\n width: 150,\n height: 150,\n title: { text: \"\" },\n showlegend: false,\n margin: { l: 5, r: 5, t: 5, b: 5, pad: 0 },\n annotations: []\n };\n break;\n case \"thumbnail\":\n override = {\n title: { text: \"\" },\n hidesources: true,\n showlegend: false,\n borderwidth: 0,\n bordercolor: \"\",\n margin: { l: 1, r: 1, t: 1, b: 1, pad: 0 },\n annotations: []\n };\n break;\n default:\n override = {};\n }\n return override;\n }\n function keyIsAxis(keyName) {\n var types = [\"xaxis\", \"yaxis\", \"zaxis\"];\n return types.indexOf(keyName.slice(0, 5)) > -1;\n }\n module.exports = function clonePlot(graphObj, options) {\n var i;\n var oldData = graphObj.data;\n var oldLayout = graphObj.layout;\n var newData = extendDeep([], oldData);\n var newLayout = extendDeep({}, oldLayout, cloneLayoutOverride(options.tileClass));\n var context = graphObj._context || {};\n if (options.width) newLayout.width = options.width;\n if (options.height) newLayout.height = options.height;\n if (options.tileClass === \"thumbnail\" || options.tileClass === \"themes__thumb\") {\n newLayout.annotations = [];\n var keys = Object.keys(newLayout);\n for (i = 0; i < keys.length; i++) {\n if (keyIsAxis(keys[i])) {\n newLayout[keys[i]].title = { text: \"\" };\n }\n }\n for (i = 0; i < newData.length; i++) {\n var trace = newData[i];\n trace.showscale = false;\n if (trace.marker) trace.marker.showscale = false;\n if (Registry.traceIs(trace, \"pie-like\")) trace.textposition = \"none\";\n }\n }\n if (Array.isArray(options.annotations)) {\n for (i = 0; i < options.annotations.length; i++) {\n newLayout.annotations.push(options.annotations[i]);\n }\n }\n var sceneIds = Object.keys(newLayout).filter(function(key) {\n return key.match(/^scene\\d*$/);\n });\n if (sceneIds.length) {\n var axesImageOverride = {};\n if (options.tileClass === \"thumbnail\") {\n axesImageOverride = {\n title: { text: \"\" },\n showaxeslabels: false,\n showticklabels: false,\n linetickenable: false\n };\n }\n for (i = 0; i < sceneIds.length; i++) {\n var scene = newLayout[sceneIds[i]];\n if (!scene.xaxis) {\n scene.xaxis = {};\n }\n if (!scene.yaxis) {\n scene.yaxis = {};\n }\n if (!scene.zaxis) {\n scene.zaxis = {};\n }\n extendFlat(scene.xaxis, axesImageOverride);\n extendFlat(scene.yaxis, axesImageOverride);\n extendFlat(scene.zaxis, axesImageOverride);\n scene._scene = null;\n }\n }\n var gd = document.createElement(\"div\");\n if (options.tileClass) gd.className = options.tileClass;\n var plotTile = {\n gd,\n td: gd,\n // for external (image server) compatibility\n layout: newLayout,\n data: newData,\n config: {\n staticPlot: options.staticPlot === void 0 ? true : options.staticPlot,\n plotGlPixelRatio: options.plotGlPixelRatio === void 0 ? 2 : options.plotGlPixelRatio,\n displaylogo: options.displaylogo || false,\n showLink: options.showLink || false,\n showTips: options.showTips || false,\n mapboxAccessToken: context.mapboxAccessToken\n }\n };\n if (options.setBackground !== \"transparent\") {\n plotTile.config.setBackground = options.setBackground || \"opaque\";\n }\n plotTile.gd.defaultLayout = cloneLayoutOverride(options.tileClass);\n return plotTile;\n };\n }\n });\n\n // src/snapshot/toimage.js\n var require_toimage = __commonJS({\n \"src/snapshot/toimage.js\"(exports, module) {\n \"use strict\";\n var EventEmitter = require_events().EventEmitter;\n var Registry = require_registry();\n var Lib = require_lib();\n var helpers = require_helpers10();\n var clonePlot = require_cloneplot();\n var toSVG = require_tosvg();\n var svgToImg = require_svgtoimg();\n function toImage(gd, opts) {\n var ev = new EventEmitter();\n var clone = clonePlot(gd, { format: \"png\" });\n var clonedGd = clone.gd;\n clonedGd.style.position = \"absolute\";\n clonedGd.style.left = \"-5000px\";\n document.body.appendChild(clonedGd);\n function wait() {\n var delay = helpers.getDelay(clonedGd._fullLayout);\n setTimeout(function() {\n var svg = toSVG(clonedGd);\n var canvas = document.createElement(\"canvas\");\n canvas.id = Lib.randstr();\n ev = svgToImg({\n format: opts.format,\n width: clonedGd._fullLayout.width,\n height: clonedGd._fullLayout.height,\n canvas,\n emitter: ev,\n svg\n });\n ev.clean = function() {\n if (clonedGd) document.body.removeChild(clonedGd);\n };\n }, delay);\n }\n var redrawFunc = helpers.getRedrawFunc(clonedGd);\n Registry.call(\"_doPlot\", clonedGd, clone.data, clone.layout, clone.config).then(redrawFunc).then(wait).catch(function(err) {\n ev.emit(\"error\", err);\n });\n return ev;\n }\n module.exports = toImage;\n }\n });\n\n // src/snapshot/index.js\n var require_snapshot = __commonJS({\n \"src/snapshot/index.js\"(exports, module) {\n \"use strict\";\n var helpers = require_helpers10();\n var Snapshot = {\n getDelay: helpers.getDelay,\n getRedrawFunc: helpers.getRedrawFunc,\n clone: require_cloneplot(),\n toSVG: require_tosvg(),\n svgToImg: require_svgtoimg(),\n toImage: require_toimage(),\n downloadImage: require_download()\n };\n module.exports = Snapshot;\n }\n });\n\n // src/core.js\n var require_core = __commonJS({\n \"src/core.js\"(exports) {\n \"use strict\";\n exports.version = require_version().version;\n require_npo_src();\n require_plotcss();\n var Registry = require_registry();\n var register = exports.register = Registry.register;\n var plotApi = require_plot_api2();\n var methodNames = Object.keys(plotApi);\n for (i = 0; i < methodNames.length; i++) {\n name = methodNames[i];\n if (name.charAt(0) !== \"_\") exports[name] = plotApi[name];\n register({\n moduleType: \"apiMethod\",\n name,\n fn: plotApi[name]\n });\n }\n var name;\n var i;\n register(require_scatter());\n register([\n require_annotations(),\n require_annotations3d(),\n require_selections(),\n require_shapes(),\n require_images(),\n require_updatemenus(),\n require_sliders(),\n require_rangeslider(),\n require_rangeselector(),\n require_grid(),\n require_errorbars(),\n require_colorscale(),\n require_colorbar(),\n require_legend(),\n // legend needs to come after shape | legend defaults depends on shapes\n require_fx(),\n // fx needs to come after legend | unified hover defaults depends on legends\n require_modebar2()\n ]);\n register([\n require_locale_en(),\n require_locale_en_us()\n ]);\n if (window.PlotlyLocales && Array.isArray(window.PlotlyLocales)) {\n register(window.PlotlyLocales);\n delete window.PlotlyLocales;\n }\n exports.Icons = require_ploticon();\n var Fx = require_fx();\n var Plots = require_plots();\n exports.Plots = {\n resize: Plots.resize,\n graphJson: Plots.graphJson,\n sendDataToCloud: Plots.sendDataToCloud\n };\n exports.Fx = {\n hover: Fx.hover,\n unhover: Fx.unhover,\n loneHover: Fx.loneHover,\n loneUnhover: Fx.loneUnhover\n };\n exports.Snapshot = require_snapshot();\n exports.PlotSchema = require_plot_schema();\n }\n });\n\n // lib/core.js\n var require_core2 = __commonJS({\n \"lib/core.js\"(exports, module) {\n \"use strict\";\n module.exports = require_core();\n }\n });\n\n // src/traces/scattergl/hover.js\n var require_hover3 = __commonJS({\n \"src/traces/scattergl/hover.js\"(exports, module) {\n \"use strict\";\n var Registry = require_registry();\n var Lib = require_lib();\n var getTraceColor = require_get_trace_color();\n function hoverPoints(pointData, xval, yval, hovermode) {\n var cd = pointData.cd;\n var stash = cd[0].t;\n var trace = cd[0].trace;\n var xa = pointData.xa;\n var ya = pointData.ya;\n var x = stash.x;\n var y = stash.y;\n var xpx = xa.c2p(xval);\n var ypx = ya.c2p(yval);\n var maxDistance = pointData.distance;\n var ids;\n if (stash.tree) {\n var xl = xa.p2c(xpx - maxDistance);\n var xr = xa.p2c(xpx + maxDistance);\n var yl = ya.p2c(ypx - maxDistance);\n var yr = ya.p2c(ypx + maxDistance);\n if (hovermode === \"x\") {\n ids = stash.tree.range(\n Math.min(xl, xr),\n Math.min(ya._rl[0], ya._rl[1]),\n Math.max(xl, xr),\n Math.max(ya._rl[0], ya._rl[1])\n );\n } else {\n ids = stash.tree.range(\n Math.min(xl, xr),\n Math.min(yl, yr),\n Math.max(xl, xr),\n Math.max(yl, yr)\n );\n }\n } else {\n ids = stash.ids;\n }\n var k, closestId, ptx, pty, i, dx, dy, dist, dxy;\n var minDist = maxDistance;\n if (hovermode === \"x\") {\n var xPeriod = !!trace.xperiodalignment;\n var yPeriod = !!trace.yperiodalignment;\n for (i = 0; i < ids.length; i++) {\n k = ids[i];\n ptx = x[k];\n dx = Math.abs(xa.c2p(ptx) - xpx);\n if (xPeriod) {\n var x0 = xa.c2p(trace._xStarts[k]);\n var x1 = xa.c2p(trace._xEnds[k]);\n dx = xpx >= Math.min(x0, x1) && xpx <= Math.max(x0, x1) ? 0 : Infinity;\n }\n if (dx < minDist) {\n minDist = dx;\n pty = y[k];\n dy = ya.c2p(pty) - ypx;\n if (yPeriod) {\n var y0 = ya.c2p(trace._yStarts[k]);\n var y1 = ya.c2p(trace._yEnds[k]);\n dy = ypx >= Math.min(y0, y1) && ypx <= Math.max(y0, y1) ? 0 : Infinity;\n }\n dxy = Math.sqrt(dx * dx + dy * dy);\n closestId = ids[i];\n }\n }\n } else {\n for (i = ids.length - 1; i > -1; i--) {\n k = ids[i];\n ptx = x[k];\n pty = y[k];\n dx = xa.c2p(ptx) - xpx;\n dy = ya.c2p(pty) - ypx;\n dist = Math.sqrt(dx * dx + dy * dy);\n if (dist < minDist) {\n minDist = dxy = dist;\n closestId = k;\n }\n }\n }\n pointData.index = closestId;\n pointData.distance = minDist;\n pointData.dxy = dxy;\n if (closestId === void 0) return [pointData];\n return [calcHover(pointData, x, y, trace)];\n }\n function calcHover(pointData, x, y, trace) {\n var xa = pointData.xa;\n var ya = pointData.ya;\n var minDist = pointData.distance;\n var dxy = pointData.dxy;\n var id = pointData.index;\n var di = {\n pointNumber: id,\n x: x[id],\n y: y[id]\n };\n di.tx = Lib.isArrayOrTypedArray(trace.text) ? trace.text[id] : trace.text;\n di.htx = Array.isArray(trace.hovertext) ? trace.hovertext[id] : trace.hovertext;\n di.data = Array.isArray(trace.customdata) ? trace.customdata[id] : trace.customdata;\n di.tp = Array.isArray(trace.textposition) ? trace.textposition[id] : trace.textposition;\n var font = trace.textfont;\n if (font) {\n di.ts = Lib.isArrayOrTypedArray(font.size) ? font.size[id] : font.size;\n di.tc = Lib.isArrayOrTypedArray(font.color) ? font.color[id] : font.color;\n di.tf = Array.isArray(font.family) ? font.family[id] : font.family;\n di.tw = Array.isArray(font.weight) ? font.weight[id] : font.weight;\n di.ty = Array.isArray(font.style) ? font.style[id] : font.style;\n di.tv = Array.isArray(font.variant) ? font.variant[id] : font.variant;\n }\n var marker = trace.marker;\n if (marker) {\n di.ms = Lib.isArrayOrTypedArray(marker.size) ? marker.size[id] : marker.size;\n di.mo = Lib.isArrayOrTypedArray(marker.opacity) ? marker.opacity[id] : marker.opacity;\n di.mx = Lib.isArrayOrTypedArray(marker.symbol) ? marker.symbol[id] : marker.symbol;\n di.ma = Lib.isArrayOrTypedArray(marker.angle) ? marker.angle[id] : marker.angle;\n di.mc = Lib.isArrayOrTypedArray(marker.color) ? marker.color[id] : marker.color;\n }\n var line = marker && marker.line;\n if (line) {\n di.mlc = Array.isArray(line.color) ? line.color[id] : line.color;\n di.mlw = Lib.isArrayOrTypedArray(line.width) ? line.width[id] : line.width;\n }\n var grad = marker && marker.gradient;\n if (grad && grad.type !== \"none\") {\n di.mgt = Array.isArray(grad.type) ? grad.type[id] : grad.type;\n di.mgc = Array.isArray(grad.color) ? grad.color[id] : grad.color;\n }\n var xp = xa.c2p(di.x, true);\n var yp = ya.c2p(di.y, true);\n var rad = di.mrc || 1;\n var hoverlabel = trace.hoverlabel;\n if (hoverlabel) {\n di.hbg = Array.isArray(hoverlabel.bgcolor) ? hoverlabel.bgcolor[id] : hoverlabel.bgcolor;\n di.hbc = Array.isArray(hoverlabel.bordercolor) ? hoverlabel.bordercolor[id] : hoverlabel.bordercolor;\n di.hts = Lib.isArrayOrTypedArray(hoverlabel.font.size) ? hoverlabel.font.size[id] : hoverlabel.font.size;\n di.htc = Array.isArray(hoverlabel.font.color) ? hoverlabel.font.color[id] : hoverlabel.font.color;\n di.htf = Array.isArray(hoverlabel.font.family) ? hoverlabel.font.family[id] : hoverlabel.font.family;\n di.hnl = Lib.isArrayOrTypedArray(hoverlabel.namelength) ? hoverlabel.namelength[id] : hoverlabel.namelength;\n }\n var hoverinfo = trace.hoverinfo;\n if (hoverinfo) {\n di.hi = Array.isArray(hoverinfo) ? hoverinfo[id] : hoverinfo;\n }\n var hovertemplate = trace.hovertemplate;\n if (hovertemplate) {\n di.ht = Array.isArray(hovertemplate) ? hovertemplate[id] : hovertemplate;\n }\n var fakeCd = {};\n fakeCd[pointData.index] = di;\n var origX = trace._origX;\n var origY = trace._origY;\n var pointData2 = Lib.extendFlat({}, pointData, {\n color: getTraceColor(trace, di),\n x0: xp - rad,\n x1: xp + rad,\n xLabelVal: origX ? origX[id] : di.x,\n y0: yp - rad,\n y1: yp + rad,\n yLabelVal: origY ? origY[id] : di.y,\n cd: fakeCd,\n distance: minDist,\n spikeDistance: dxy,\n hovertemplate: di.ht\n });\n if (di.htx) pointData2.text = di.htx;\n else if (di.tx) pointData2.text = di.tx;\n else if (trace.text) pointData2.text = trace.text;\n Lib.fillText(di, trace, pointData2);\n Registry.getComponentMethod(\"errorbars\", \"hoverInfo\")(di, trace, pointData2);\n return pointData2;\n }\n module.exports = {\n hoverPoints,\n calcHover\n };\n }\n });\n\n // src/traces/scattergl/constants.js\n var require_constants14 = __commonJS({\n \"src/traces/scattergl/constants.js\"(exports, module) {\n \"use strict\";\n var SYMBOL_SIZE = 20;\n module.exports = {\n TOO_MANY_POINTS: 1e5,\n SYMBOL_SDF_SIZE: 200,\n SYMBOL_SIZE,\n SYMBOL_STROKE: SYMBOL_SIZE / 20,\n DOT_RE: /-dot/,\n OPEN_RE: /-open/,\n DASHES: {\n solid: [1],\n dot: [1, 1],\n dash: [4, 1],\n longdash: [8, 1],\n dashdot: [4, 1, 1, 1],\n longdashdot: [8, 1, 1, 1]\n }\n };\n }\n });\n\n // src/traces/scattergl/attributes.js\n var require_attributes23 = __commonJS({\n \"src/traces/scattergl/attributes.js\"(exports, module) {\n \"use strict\";\n var baseAttrs = require_attributes2();\n var fontAttrs = require_font_attributes();\n var makeFillcolorAttr = require_fillcolor_attribute();\n var scatterAttrs = require_attributes12();\n var axisHoverFormat = require_axis_format_attributes().axisHoverFormat;\n var colorScaleAttrs = require_attributes8();\n var sortObjectKeys = require_sort_object_keys();\n var extendFlat = require_extend().extendFlat;\n var overrideAll = require_edit_types().overrideAll;\n var DASHES = require_constants14().DASHES;\n var scatterLineAttrs = scatterAttrs.line;\n var scatterMarkerAttrs = scatterAttrs.marker;\n var scatterMarkerLineAttrs = scatterMarkerAttrs.line;\n var attrs = module.exports = overrideAll({\n x: scatterAttrs.x,\n x0: scatterAttrs.x0,\n dx: scatterAttrs.dx,\n y: scatterAttrs.y,\n y0: scatterAttrs.y0,\n dy: scatterAttrs.dy,\n xperiod: scatterAttrs.xperiod,\n yperiod: scatterAttrs.yperiod,\n xperiod0: scatterAttrs.xperiod0,\n yperiod0: scatterAttrs.yperiod0,\n xperiodalignment: scatterAttrs.xperiodalignment,\n yperiodalignment: scatterAttrs.yperiodalignment,\n xhoverformat: axisHoverFormat(\"x\"),\n yhoverformat: axisHoverFormat(\"y\"),\n text: scatterAttrs.text,\n hovertext: scatterAttrs.hovertext,\n textposition: scatterAttrs.textposition,\n textfont: fontAttrs({\n noFontShadow: true,\n noFontLineposition: true,\n noFontTextcase: true,\n editType: \"calc\",\n colorEditType: \"style\",\n arrayOk: true,\n noNumericWeightValues: true,\n variantValues: [\"normal\", \"small-caps\"]\n }),\n mode: {\n valType: \"flaglist\",\n flags: [\"lines\", \"markers\", \"text\"],\n extras: [\"none\"]\n },\n line: {\n color: scatterLineAttrs.color,\n width: scatterLineAttrs.width,\n shape: {\n valType: \"enumerated\",\n values: [\"linear\", \"hv\", \"vh\", \"hvh\", \"vhv\"],\n dflt: \"linear\",\n editType: \"plot\"\n },\n dash: {\n valType: \"enumerated\",\n values: sortObjectKeys(DASHES),\n dflt: \"solid\"\n }\n },\n marker: extendFlat({}, colorScaleAttrs(\"marker\"), {\n symbol: scatterMarkerAttrs.symbol,\n angle: scatterMarkerAttrs.angle,\n size: scatterMarkerAttrs.size,\n sizeref: scatterMarkerAttrs.sizeref,\n sizemin: scatterMarkerAttrs.sizemin,\n sizemode: scatterMarkerAttrs.sizemode,\n opacity: scatterMarkerAttrs.opacity,\n colorbar: scatterMarkerAttrs.colorbar,\n line: extendFlat({}, colorScaleAttrs(\"marker.line\"), {\n width: scatterMarkerLineAttrs.width\n })\n }),\n connectgaps: scatterAttrs.connectgaps,\n fill: extendFlat({}, scatterAttrs.fill, { dflt: \"none\" }),\n fillcolor: makeFillcolorAttr(),\n // no hoveron\n selected: {\n marker: scatterAttrs.selected.marker,\n textfont: scatterAttrs.selected.textfont\n },\n unselected: {\n marker: scatterAttrs.unselected.marker,\n textfont: scatterAttrs.unselected.textfont\n },\n opacity: baseAttrs.opacity\n }, \"calc\", \"nested\");\n attrs.x.editType = attrs.y.editType = attrs.x0.editType = attrs.y0.editType = \"calc+clearAxisTypes\";\n attrs.hovertemplate = scatterAttrs.hovertemplate;\n attrs.texttemplate = scatterAttrs.texttemplate;\n }\n });\n\n // src/traces/scattergl/helpers.js\n var require_helpers12 = __commonJS({\n \"src/traces/scattergl/helpers.js\"(exports) {\n \"use strict\";\n var constants = require_constants14();\n exports.isOpenSymbol = function(symbol) {\n return typeof symbol === \"string\" ? constants.OPEN_RE.test(symbol) : symbol % 200 > 100;\n };\n exports.isDotSymbol = function(symbol) {\n return typeof symbol === \"string\" ? constants.DOT_RE.test(symbol) : symbol > 200;\n };\n }\n });\n\n // src/traces/scattergl/defaults.js\n var require_defaults19 = __commonJS({\n \"src/traces/scattergl/defaults.js\"(exports, module) {\n \"use strict\";\n var Lib = require_lib();\n var Registry = require_registry();\n var helpers = require_helpers12();\n var attributes = require_attributes23();\n var constants = require_constants8();\n var subTypes = require_subtypes();\n var handleXYDefaults = require_xy_defaults();\n var handlePeriodDefaults = require_period_defaults();\n var handleMarkerDefaults = require_marker_defaults();\n var handleLineDefaults = require_line_defaults();\n var handleFillColorDefaults = require_fillcolor_defaults();\n var handleTextDefaults = require_text_defaults();\n module.exports = function supplyDefaults(traceIn, traceOut, defaultColor, layout) {\n function coerce(attr, dflt) {\n return Lib.coerce(traceIn, traceOut, attributes, attr, dflt);\n }\n var isOpen = traceIn.marker ? helpers.isOpenSymbol(traceIn.marker.symbol) : false;\n var isBubble = subTypes.isBubble(traceIn);\n var len = handleXYDefaults(traceIn, traceOut, layout, coerce);\n if (!len) {\n traceOut.visible = false;\n return;\n }\n handlePeriodDefaults(traceIn, traceOut, layout, coerce);\n coerce(\"xhoverformat\");\n coerce(\"yhoverformat\");\n var defaultMode = len < constants.PTS_LINESONLY ? \"lines+markers\" : \"lines\";\n coerce(\"text\");\n coerce(\"hovertext\");\n coerce(\"hovertemplate\");\n coerce(\"mode\", defaultMode);\n if (subTypes.hasMarkers(traceOut)) {\n handleMarkerDefaults(traceIn, traceOut, defaultColor, layout, coerce, { noAngleRef: true, noStandOff: true });\n coerce(\"marker.line.width\", isOpen || isBubble ? 1 : 0);\n }\n if (subTypes.hasLines(traceOut)) {\n coerce(\"connectgaps\");\n handleLineDefaults(traceIn, traceOut, defaultColor, layout, coerce);\n coerce(\"line.shape\");\n }\n if (subTypes.hasText(traceOut)) {\n coerce(\"texttemplate\");\n handleTextDefaults(traceIn, traceOut, layout, coerce, {\n noFontShadow: true,\n noFontLineposition: true,\n noFontTextcase: true\n });\n }\n var lineColor = (traceOut.line || {}).color;\n var markerColor = (traceOut.marker || {}).color;\n coerce(\"fill\");\n if (traceOut.fill !== \"none\") {\n handleFillColorDefaults(traceIn, traceOut, defaultColor, coerce);\n }\n var errorBarsSupplyDefaults = Registry.getComponentMethod(\"errorbars\", \"supplyDefaults\");\n errorBarsSupplyDefaults(traceIn, traceOut, lineColor || markerColor || defaultColor, { axis: \"y\" });\n errorBarsSupplyDefaults(traceIn, traceOut, lineColor || markerColor || defaultColor, { axis: \"x\", inherit: \"y\" });\n Lib.coerceSelectionMarkerOpacity(traceOut, coerce);\n };\n }\n });\n\n // src/traces/scattergl/format_labels.js\n var require_format_labels2 = __commonJS({\n \"src/traces/scattergl/format_labels.js\"(exports, module) {\n \"use strict\";\n var scatterFormatLabels = require_format_labels();\n module.exports = function formatLabels(cdi, trace, fullLayout) {\n var i = cdi.i;\n if (!(\"x\" in cdi)) cdi.x = trace._x[i];\n if (!(\"y\" in cdi)) cdi.y = trace._y[i];\n return scatterFormatLabels(cdi, trace, fullLayout);\n };\n }\n });\n\n // node_modules/binary-search-bounds/search-bounds.js\n var require_search_bounds = __commonJS({\n \"node_modules/binary-search-bounds/search-bounds.js\"(exports, module) {\n \"use strict\";\n function ge(a, y, c, l, h) {\n var i = h + 1;\n while (l <= h) {\n var m = l + h >>> 1, x = a[m];\n var p = c !== void 0 ? c(x, y) : x - y;\n if (p >= 0) {\n i = m;\n h = m - 1;\n } else {\n l = m + 1;\n }\n }\n return i;\n }\n function gt(a, y, c, l, h) {\n var i = h + 1;\n while (l <= h) {\n var m = l + h >>> 1, x = a[m];\n var p = c !== void 0 ? c(x, y) : x - y;\n if (p > 0) {\n i = m;\n h = m - 1;\n } else {\n l = m + 1;\n }\n }\n return i;\n }\n function lt(a, y, c, l, h) {\n var i = l - 1;\n while (l <= h) {\n var m = l + h >>> 1, x = a[m];\n var p = c !== void 0 ? c(x, y) : x - y;\n if (p < 0) {\n i = m;\n l = m + 1;\n } else {\n h = m - 1;\n }\n }\n return i;\n }\n function le(a, y, c, l, h) {\n var i = l - 1;\n while (l <= h) {\n var m = l + h >>> 1, x = a[m];\n var p = c !== void 0 ? c(x, y) : x - y;\n if (p <= 0) {\n i = m;\n l = m + 1;\n } else {\n h = m - 1;\n }\n }\n return i;\n }\n function eq(a, y, c, l, h) {\n while (l <= h) {\n var m = l + h >>> 1, x = a[m];\n var p = c !== void 0 ? c(x, y) : x - y;\n if (p === 0) {\n return m;\n }\n if (p <= 0) {\n l = m + 1;\n } else {\n h = m - 1;\n }\n }\n return -1;\n }\n function norm(a, y, c, l, h, f) {\n if (typeof c === \"function\") {\n return f(a, y, c, l === void 0 ? 0 : l | 0, h === void 0 ? a.length - 1 : h | 0);\n }\n return f(a, y, void 0, c === void 0 ? 0 : c | 0, l === void 0 ? a.length - 1 : l | 0);\n }\n module.exports = {\n ge: function(a, y, c, l, h) {\n return norm(a, y, c, l, h, ge);\n },\n gt: function(a, y, c, l, h) {\n return norm(a, y, c, l, h, gt);\n },\n lt: function(a, y, c, l, h) {\n return norm(a, y, c, l, h, lt);\n },\n le: function(a, y, c, l, h) {\n return norm(a, y, c, l, h, le);\n },\n eq: function(a, y, c, l, h) {\n return norm(a, y, c, l, h, eq);\n }\n };\n }\n });\n\n // node_modules/clamp/index.js\n var require_clamp = __commonJS({\n \"node_modules/clamp/index.js\"(exports, module) {\n module.exports = clamp;\n function clamp(value, min, max) {\n return min < max ? value < min ? min : value > max ? max : value : value < max ? max : value > min ? min : value;\n }\n }\n });\n\n // node_modules/pick-by-alias/index.js\n var require_pick_by_alias = __commonJS({\n \"node_modules/pick-by-alias/index.js\"(exports, module) {\n \"use strict\";\n module.exports = function pick(src, props, keepRest) {\n var result = {}, prop, i;\n if (typeof props === \"string\") props = toList(props);\n if (Array.isArray(props)) {\n var res = {};\n for (i = 0; i < props.length; i++) {\n res[props[i]] = true;\n }\n props = res;\n }\n for (prop in props) {\n props[prop] = toList(props[prop]);\n }\n var occupied = {};\n for (prop in props) {\n var aliases = props[prop];\n if (Array.isArray(aliases)) {\n for (i = 0; i < aliases.length; i++) {\n var alias = aliases[i];\n if (keepRest) {\n occupied[alias] = true;\n }\n if (alias in src) {\n result[prop] = src[alias];\n if (keepRest) {\n for (var j = i; j < aliases.length; j++) {\n occupied[aliases[j]] = true;\n }\n }\n break;\n }\n }\n } else if (prop in src) {\n if (props[prop]) {\n result[prop] = src[prop];\n }\n if (keepRest) {\n occupied[prop] = true;\n }\n }\n }\n if (keepRest) {\n for (prop in src) {\n if (occupied[prop]) continue;\n result[prop] = src[prop];\n }\n }\n return result;\n };\n var CACHE = {};\n function toList(arg) {\n if (CACHE[arg]) return CACHE[arg];\n if (typeof arg === \"string\") {\n arg = CACHE[arg] = arg.split(/\\s*,\\s*|\\s+/);\n }\n return arg;\n }\n }\n });\n\n // node_modules/parse-rect/index.js\n var require_parse_rect = __commonJS({\n \"node_modules/parse-rect/index.js\"(exports, module) {\n \"use strict\";\n var pick = require_pick_by_alias();\n module.exports = parseRect;\n function parseRect(arg) {\n var rect;\n if (arguments.length > 1) {\n arg = arguments;\n }\n if (typeof arg === \"string\") {\n arg = arg.split(/\\s/).map(parseFloat);\n } else if (typeof arg === \"number\") {\n arg = [arg];\n }\n if (arg.length && typeof arg[0] === \"number\") {\n if (arg.length === 1) {\n rect = {\n width: arg[0],\n height: arg[0],\n x: 0,\n y: 0\n };\n } else if (arg.length === 2) {\n rect = {\n width: arg[0],\n height: arg[1],\n x: 0,\n y: 0\n };\n } else {\n rect = {\n x: arg[0],\n y: arg[1],\n width: arg[2] - arg[0] || 0,\n height: arg[3] - arg[1] || 0\n };\n }\n } else if (arg) {\n arg = pick(arg, {\n left: \"x l left Left\",\n top: \"y t top Top\",\n width: \"w width W Width\",\n height: \"h height W Width\",\n bottom: \"b bottom Bottom\",\n right: \"r right Right\"\n });\n rect = {\n x: arg.left || 0,\n y: arg.top || 0\n };\n if (arg.width == null) {\n if (arg.right) rect.width = arg.right - rect.x;\n else rect.width = 0;\n } else {\n rect.width = arg.width;\n }\n if (arg.height == null) {\n if (arg.bottom) rect.height = arg.bottom - rect.y;\n else rect.height = 0;\n } else {\n rect.height = arg.height;\n }\n }\n return rect;\n }\n }\n });\n\n // node_modules/array-bounds/index.js\n var require_array_bounds = __commonJS({\n \"node_modules/array-bounds/index.js\"(exports, module) {\n \"use strict\";\n module.exports = normalize;\n function normalize(arr, dim) {\n if (!arr || arr.length == null) throw Error(\"Argument should be an array\");\n if (dim == null) dim = 1;\n else dim = Math.floor(dim);\n var bounds = Array(dim * 2);\n for (var offset = 0; offset < dim; offset++) {\n var max = -Infinity, min = Infinity, i = offset, l = arr.length;\n for (; i < l; i += dim) {\n if (arr[i] > max) max = arr[i];\n if (arr[i] < min) min = arr[i];\n }\n bounds[offset] = min;\n bounds[dim + offset] = max;\n }\n return bounds;\n }\n }\n });\n\n // node_modules/defined/index.js\n var require_defined = __commonJS({\n \"node_modules/defined/index.js\"(exports, module) {\n module.exports = function() {\n for (var i = 0; i < arguments.length; i++) {\n if (arguments[i] !== void 0) return arguments[i];\n }\n };\n }\n });\n\n // node_modules/dtype/index.js\n var require_dtype = __commonJS({\n \"node_modules/dtype/index.js\"(exports, module) {\n module.exports = function(dtype) {\n switch (dtype) {\n case \"int8\":\n return Int8Array;\n case \"int16\":\n return Int16Array;\n case \"int32\":\n return Int32Array;\n case \"uint8\":\n return Uint8Array;\n case \"uint16\":\n return Uint16Array;\n case \"uint32\":\n return Uint32Array;\n case \"float32\":\n return Float32Array;\n case \"float64\":\n return Float64Array;\n case \"array\":\n return Array;\n case \"uint8_clamped\":\n return Uint8ClampedArray;\n }\n };\n }\n });\n\n // node_modules/flatten-vertex-data/index.js\n var require_flatten_vertex_data = __commonJS({\n \"node_modules/flatten-vertex-data/index.js\"(exports, module) {\n var dtype = require_dtype();\n module.exports = flattenVertexData;\n function flattenVertexData(data, output, offset) {\n if (!data) throw new TypeError(\"must specify data as first parameter\");\n offset = +(offset || 0) | 0;\n if (Array.isArray(data) && (data[0] && typeof data[0][0] === \"number\")) {\n var dim = data[0].length;\n var length = data.length * dim;\n var i, j, k, l;\n if (!output || typeof output === \"string\") {\n output = new (dtype(output || \"float32\"))(length + offset);\n }\n var dstLength = output.length - offset;\n if (length !== dstLength) {\n throw new Error(\"source length \" + length + \" (\" + dim + \"x\" + data.length + \") does not match destination length \" + dstLength);\n }\n for (i = 0, k = offset; i < data.length; i++) {\n for (j = 0; j < dim; j++) {\n output[k++] = data[i][j] === null ? NaN : data[i][j];\n }\n }\n } else {\n if (!output || typeof output === \"string\") {\n var Ctor = dtype(output || \"float32\");\n if (Array.isArray(data) || output === \"array\") {\n output = new Ctor(data.length + offset);\n for (i = 0, k = offset, l = output.length; k < l; k++, i++) {\n output[k] = data[i] === null ? NaN : data[i];\n }\n } else {\n if (offset === 0) {\n output = new Ctor(data);\n } else {\n output = new Ctor(data.length + offset);\n output.set(data, offset);\n }\n }\n } else {\n output.set(data, offset);\n }\n }\n return output;\n }\n }\n });\n\n // node_modules/is-obj/index.js\n var require_is_obj = __commonJS({\n \"node_modules/is-obj/index.js\"(exports, module) {\n \"use strict\";\n module.exports = function(x) {\n var type = typeof x;\n return x !== null && (type === \"object\" || type === \"function\");\n };\n }\n });\n\n // node_modules/math-log2/index.js\n var require_math_log2 = __commonJS({\n \"node_modules/math-log2/index.js\"(exports, module) {\n \"use strict\";\n module.exports = Math.log2 || function(x) {\n return Math.log(x) * Math.LOG2E;\n };\n }\n });\n\n // node_modules/@plotly/point-cluster/quad.js\n var require_quad = __commonJS({\n \"node_modules/@plotly/point-cluster/quad.js\"(exports, module) {\n \"use strict\";\n var search = require_search_bounds();\n var clamp = require_clamp();\n var rect = require_parse_rect();\n var getBounds = require_array_bounds();\n var pick = require_pick_by_alias();\n var defined = require_defined();\n var flatten = require_flatten_vertex_data();\n var isObj = require_is_obj();\n var dtype = require_dtype();\n var log2 = require_math_log2();\n var MAX_GROUP_ID = 1073741824;\n module.exports = function cluster(srcPoints, options) {\n if (!options) options = {};\n srcPoints = flatten(srcPoints, \"float64\");\n options = pick(options, {\n bounds: \"range bounds dataBox databox\",\n maxDepth: \"depth maxDepth maxdepth level maxLevel maxlevel levels\",\n dtype: \"type dtype format out dst output destination\"\n // sort: 'sortBy sortby sort',\n // pick: 'pick levelPoint',\n // nodeSize: 'node nodeSize minNodeSize minSize size'\n });\n let maxDepth = defined(options.maxDepth, 255);\n let bounds = defined(options.bounds, getBounds(srcPoints, 2));\n if (bounds[0] === bounds[2]) bounds[2]++;\n if (bounds[1] === bounds[3]) bounds[3]++;\n let points = normalize(srcPoints, bounds);\n let n = srcPoints.length >>> 1;\n let ids;\n if (!options.dtype) options.dtype = \"array\";\n if (typeof options.dtype === \"string\") {\n ids = new (dtype(options.dtype))(n);\n } else if (options.dtype) {\n ids = options.dtype;\n if (Array.isArray(ids)) ids.length = n;\n }\n for (let i = 0; i < n; ++i) {\n ids[i] = i;\n }\n let levels = [];\n let sublevels = [];\n let groups = [];\n let offsets = [];\n sort(0, 0, 1, ids, 0, 1);\n let offset = 0;\n for (let level = 0; level < levels.length; level++) {\n let levelItems = levels[level];\n if (ids.set) ids.set(levelItems, offset);\n else {\n for (let i = 0, l = levelItems.length; i < l; i++) {\n ids[i + offset] = levelItems[i];\n }\n }\n let nextOffset = offset + levels[level].length;\n offsets[level] = [offset, nextOffset];\n offset = nextOffset;\n }\n ids.range = range;\n return ids;\n function sort(x, y, diam, ids2, level, group2) {\n if (!ids2.length) return null;\n let levelItems = levels[level] || (levels[level] = []);\n let levelGroups = groups[level] || (groups[level] = []);\n let sublevel = sublevels[level] || (sublevels[level] = []);\n let offset2 = levelItems.length;\n level++;\n if (level > maxDepth || group2 > MAX_GROUP_ID) {\n for (let i = 0; i < ids2.length; i++) {\n levelItems.push(ids2[i]);\n levelGroups.push(group2);\n sublevel.push(null, null, null, null);\n }\n return offset2;\n }\n levelItems.push(ids2[0]);\n levelGroups.push(group2);\n if (ids2.length <= 1) {\n sublevel.push(null, null, null, null);\n return offset2;\n }\n let d2 = diam * 0.5;\n let cx = x + d2, cy = y + d2;\n let lolo = [], lohi = [], hilo = [], hihi = [];\n for (let i = 1, l = ids2.length; i < l; i++) {\n let idx = ids2[i], x2 = points[idx * 2], y2 = points[idx * 2 + 1];\n x2 < cx ? y2 < cy ? lolo.push(idx) : lohi.push(idx) : y2 < cy ? hilo.push(idx) : hihi.push(idx);\n }\n group2 <<= 2;\n sublevel.push(\n sort(x, y, d2, lolo, level, group2),\n sort(x, cy, d2, lohi, level, group2 + 1),\n sort(cx, y, d2, hilo, level, group2 + 2),\n sort(cx, cy, d2, hihi, level, group2 + 3)\n );\n return offset2;\n }\n function range(...args) {\n let options2;\n if (isObj(args[args.length - 1])) {\n let arg = args.pop();\n if (!args.length && (arg.x != null || arg.l != null || arg.left != null)) {\n args = [arg];\n options2 = {};\n }\n options2 = pick(arg, {\n level: \"level maxLevel\",\n d: \"d diam diameter r radius px pxSize pixel pixelSize maxD size minSize\",\n lod: \"lod details ranges offsets\"\n });\n } else {\n options2 = {};\n }\n if (!args.length) args = bounds;\n let box = rect(...args);\n let [minX, minY, maxX, maxY] = [\n Math.min(box.x, box.x + box.width),\n Math.min(box.y, box.y + box.height),\n Math.max(box.x, box.x + box.width),\n Math.max(box.y, box.y + box.height)\n ];\n let [nminX, nminY, nmaxX, nmaxY] = normalize([minX, minY, maxX, maxY], bounds);\n let maxLevel = defined(options2.level, levels.length);\n if (options2.d != null) {\n let d;\n if (typeof options2.d === \"number\") d = [options2.d, options2.d];\n else if (options2.d.length) d = options2.d;\n maxLevel = Math.min(\n Math.max(\n Math.ceil(-log2(Math.abs(d[0]) / (bounds[2] - bounds[0]))),\n Math.ceil(-log2(Math.abs(d[1]) / (bounds[3] - bounds[1])))\n ),\n maxLevel\n );\n }\n maxLevel = Math.min(maxLevel, levels.length);\n if (options2.lod) {\n return lod(nminX, nminY, nmaxX, nmaxY, maxLevel);\n }\n let selection = [];\n select(0, 0, 1, 0, 0, 1);\n function select(lox, loy, d, level, from, to) {\n if (from === null || to === null) return;\n let hix = lox + d;\n let hiy = loy + d;\n if (nminX > hix || nminY > hiy || nmaxX < lox || nmaxY < loy) return;\n if (level >= maxLevel) return;\n if (from === to) return;\n let levelItems = levels[level];\n if (to === void 0) to = levelItems.length;\n for (let i = from; i < to; i++) {\n let id = levelItems[i];\n let px = srcPoints[id * 2];\n let py = srcPoints[id * 2 + 1];\n if (px >= minX && px <= maxX && py >= minY && py <= maxY) {\n selection.push(id);\n }\n }\n let offsets2 = sublevels[level];\n let off0 = offsets2[from * 4 + 0];\n let off1 = offsets2[from * 4 + 1];\n let off2 = offsets2[from * 4 + 2];\n let off3 = offsets2[from * 4 + 3];\n let end = nextOffset(offsets2, from + 1);\n let d2 = d * 0.5;\n let nextLevel = level + 1;\n select(lox, loy, d2, nextLevel, off0, off1 || off2 || off3 || end);\n select(lox, loy + d2, d2, nextLevel, off1, off2 || off3 || end);\n select(lox + d2, loy, d2, nextLevel, off2, off3 || end);\n select(lox + d2, loy + d2, d2, nextLevel, off3, end);\n }\n function nextOffset(offsets2, from) {\n let offset2 = null, i = 0;\n while (offset2 === null) {\n offset2 = offsets2[from * 4 + i];\n i++;\n if (i > offsets2.length) return null;\n }\n return offset2;\n }\n return selection;\n }\n function lod(lox, loy, hix, hiy, maxLevel) {\n let ranges = [];\n for (let level = 0; level < maxLevel; level++) {\n let levelGroups = groups[level];\n let from = offsets[level][0];\n let levelGroupStart = group(lox, loy, level);\n let levelGroupEnd = group(hix, hiy, level);\n let startOffset = search.ge(levelGroups, levelGroupStart);\n let endOffset = search.gt(levelGroups, levelGroupEnd, startOffset, levelGroups.length - 1);\n ranges[level] = [startOffset + from, endOffset + from];\n }\n return ranges;\n }\n function group(x, y, level) {\n let group2 = 1;\n let cx = 0.5, cy = 0.5;\n let diam = 0.5;\n for (let i = 0; i < level; i++) {\n group2 <<= 2;\n group2 += x < cx ? y < cy ? 0 : 1 : y < cy ? 2 : 3;\n diam *= 0.5;\n cx += x < cx ? -diam : diam;\n cy += y < cy ? -diam : diam;\n }\n return group2;\n }\n };\n function normalize(pts, bounds) {\n let [lox, loy, hix, hiy] = bounds;\n let scaleX = 1 / (hix - lox);\n let scaleY = 1 / (hiy - loy);\n let result = new Array(pts.length);\n for (let i = 0, n = pts.length / 2; i < n; i++) {\n result[2 * i] = clamp((pts[2 * i] - lox) * scaleX, 0, 1);\n result[2 * i + 1] = clamp((pts[2 * i + 1] - loy) * scaleY, 0, 1);\n }\n return result;\n }\n }\n });\n\n // node_modules/@plotly/point-cluster/index.js\n var require_point_cluster = __commonJS({\n \"node_modules/@plotly/point-cluster/index.js\"(exports, module) {\n \"use strict\";\n module.exports = require_quad();\n }\n });\n\n // node_modules/abs-svg-path/index.js\n var require_abs_svg_path = __commonJS({\n \"node_modules/abs-svg-path/index.js\"(exports, module) {\n module.exports = absolutize;\n function absolutize(path) {\n var startX = 0;\n var startY = 0;\n var x = 0;\n var y = 0;\n return path.map(function(seg) {\n seg = seg.slice();\n var type = seg[0];\n var command = type.toUpperCase();\n if (type != command) {\n seg[0] = command;\n switch (type) {\n case \"a\":\n seg[6] += x;\n seg[7] += y;\n break;\n case \"v\":\n seg[1] += y;\n break;\n case \"h\":\n seg[1] += x;\n break;\n default:\n for (var i = 1; i < seg.length; ) {\n seg[i++] += x;\n seg[i++] += y;\n }\n }\n }\n switch (command) {\n case \"Z\":\n x = startX;\n y = startY;\n break;\n case \"H\":\n x = seg[1];\n break;\n case \"V\":\n y = seg[1];\n break;\n case \"M\":\n x = startX = seg[1];\n y = startY = seg[2];\n break;\n default:\n x = seg[seg.length - 2];\n y = seg[seg.length - 1];\n }\n return seg;\n });\n }\n }\n });\n\n // node_modules/svg-arc-to-cubic-bezier/cjs/index.js\n var require_cjs = __commonJS({\n \"node_modules/svg-arc-to-cubic-bezier/cjs/index.js\"(exports, module) {\n \"use strict\";\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n var _slicedToArray = /* @__PURE__ */ function() {\n function sliceIterator(arr, i) {\n var _arr = [];\n var _n = true;\n var _d = false;\n var _e = void 0;\n try {\n for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) {\n _arr.push(_s.value);\n if (i && _arr.length === i) break;\n }\n } catch (err) {\n _d = true;\n _e = err;\n } finally {\n try {\n if (!_n && _i[\"return\"]) _i[\"return\"]();\n } finally {\n if (_d) throw _e;\n }\n }\n return _arr;\n }\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 var TAU = Math.PI * 2;\n var mapToEllipse = function mapToEllipse2(_ref, rx, ry, cosphi, sinphi, centerx, centery) {\n var x = _ref.x, y = _ref.y;\n x *= rx;\n y *= ry;\n var xp = cosphi * x - sinphi * y;\n var yp = sinphi * x + cosphi * y;\n return {\n x: xp + centerx,\n y: yp + centery\n };\n };\n var approxUnitArc = function approxUnitArc2(ang1, ang2) {\n var a = ang2 === 1.5707963267948966 ? 0.551915024494 : ang2 === -1.5707963267948966 ? -0.551915024494 : 4 / 3 * Math.tan(ang2 / 4);\n var x1 = Math.cos(ang1);\n var y1 = Math.sin(ang1);\n var x2 = Math.cos(ang1 + ang2);\n var y2 = Math.sin(ang1 + ang2);\n return [{\n x: x1 - y1 * a,\n y: y1 + x1 * a\n }, {\n x: x2 + y2 * a,\n y: y2 - x2 * a\n }, {\n x: x2,\n y: y2\n }];\n };\n var vectorAngle = function vectorAngle2(ux, uy, vx, vy) {\n var sign = ux * vy - uy * vx < 0 ? -1 : 1;\n var dot = ux * vx + uy * vy;\n if (dot > 1) {\n dot = 1;\n }\n if (dot < -1) {\n dot = -1;\n }\n return sign * Math.acos(dot);\n };\n var getArcCenter = function getArcCenter2(px, py, cx, cy, rx, ry, largeArcFlag, sweepFlag, sinphi, cosphi, pxp, pyp) {\n var rxsq = Math.pow(rx, 2);\n var rysq = Math.pow(ry, 2);\n var pxpsq = Math.pow(pxp, 2);\n var pypsq = Math.pow(pyp, 2);\n var radicant = rxsq * rysq - rxsq * pypsq - rysq * pxpsq;\n if (radicant < 0) {\n radicant = 0;\n }\n radicant /= rxsq * pypsq + rysq * pxpsq;\n radicant = Math.sqrt(radicant) * (largeArcFlag === sweepFlag ? -1 : 1);\n var centerxp = radicant * rx / ry * pyp;\n var centeryp = radicant * -ry / rx * pxp;\n var centerx = cosphi * centerxp - sinphi * centeryp + (px + cx) / 2;\n var centery = sinphi * centerxp + cosphi * centeryp + (py + cy) / 2;\n var vx1 = (pxp - centerxp) / rx;\n var vy1 = (pyp - centeryp) / ry;\n var vx2 = (-pxp - centerxp) / rx;\n var vy2 = (-pyp - centeryp) / ry;\n var ang1 = vectorAngle(1, 0, vx1, vy1);\n var ang2 = vectorAngle(vx1, vy1, vx2, vy2);\n if (sweepFlag === 0 && ang2 > 0) {\n ang2 -= TAU;\n }\n if (sweepFlag === 1 && ang2 < 0) {\n ang2 += TAU;\n }\n return [centerx, centery, ang1, ang2];\n };\n var arcToBezier = function arcToBezier2(_ref2) {\n var px = _ref2.px, py = _ref2.py, cx = _ref2.cx, cy = _ref2.cy, rx = _ref2.rx, ry = _ref2.ry, _ref2$xAxisRotation = _ref2.xAxisRotation, xAxisRotation = _ref2$xAxisRotation === void 0 ? 0 : _ref2$xAxisRotation, _ref2$largeArcFlag = _ref2.largeArcFlag, largeArcFlag = _ref2$largeArcFlag === void 0 ? 0 : _ref2$largeArcFlag, _ref2$sweepFlag = _ref2.sweepFlag, sweepFlag = _ref2$sweepFlag === void 0 ? 0 : _ref2$sweepFlag;\n var curves = [];\n if (rx === 0 || ry === 0) {\n return [];\n }\n var sinphi = Math.sin(xAxisRotation * TAU / 360);\n var cosphi = Math.cos(xAxisRotation * TAU / 360);\n var pxp = cosphi * (px - cx) / 2 + sinphi * (py - cy) / 2;\n var pyp = -sinphi * (px - cx) / 2 + cosphi * (py - cy) / 2;\n if (pxp === 0 && pyp === 0) {\n return [];\n }\n rx = Math.abs(rx);\n ry = Math.abs(ry);\n var lambda = Math.pow(pxp, 2) / Math.pow(rx, 2) + Math.pow(pyp, 2) / Math.pow(ry, 2);\n if (lambda > 1) {\n rx *= Math.sqrt(lambda);\n ry *= Math.sqrt(lambda);\n }\n var _getArcCenter = getArcCenter(px, py, cx, cy, rx, ry, largeArcFlag, sweepFlag, sinphi, cosphi, pxp, pyp), _getArcCenter2 = _slicedToArray(_getArcCenter, 4), centerx = _getArcCenter2[0], centery = _getArcCenter2[1], ang1 = _getArcCenter2[2], ang2 = _getArcCenter2[3];\n var ratio = Math.abs(ang2) / (TAU / 4);\n if (Math.abs(1 - ratio) < 1e-7) {\n ratio = 1;\n }\n var segments = Math.max(Math.ceil(ratio), 1);\n ang2 /= segments;\n for (var i = 0; i < segments; i++) {\n curves.push(approxUnitArc(ang1, ang2));\n ang1 += ang2;\n }\n return curves.map(function(curve) {\n var _mapToEllipse = mapToEllipse(curve[0], rx, ry, cosphi, sinphi, centerx, centery), x1 = _mapToEllipse.x, y1 = _mapToEllipse.y;\n var _mapToEllipse2 = mapToEllipse(curve[1], rx, ry, cosphi, sinphi, centerx, centery), x2 = _mapToEllipse2.x, y2 = _mapToEllipse2.y;\n var _mapToEllipse3 = mapToEllipse(curve[2], rx, ry, cosphi, sinphi, centerx, centery), x = _mapToEllipse3.x, y = _mapToEllipse3.y;\n return { x1, y1, x2, y2, x, y };\n });\n };\n exports.default = arcToBezier;\n module.exports = exports.default;\n }\n });\n\n // node_modules/svg-path-bounds/node_modules/normalize-svg-path/index.js\n var require_normalize_svg_path = __commonJS({\n \"node_modules/svg-path-bounds/node_modules/normalize-svg-path/index.js\"(exports, module) {\n \"use strict\";\n module.exports = normalize;\n var arcToCurve = require_cjs();\n function normalize(path) {\n var prev;\n var result = [];\n var bezierX = 0;\n var bezierY = 0;\n var startX = 0;\n var startY = 0;\n var quadX = null;\n var quadY = null;\n var x = 0;\n var y = 0;\n for (var i = 0, len = path.length; i < len; i++) {\n var seg = path[i];\n var command = seg[0];\n switch (command) {\n case \"M\":\n startX = seg[1];\n startY = seg[2];\n break;\n case \"A\":\n var curves = arcToCurve({\n px: x,\n py: y,\n cx: seg[6],\n cy: seg[7],\n rx: seg[1],\n ry: seg[2],\n xAxisRotation: seg[3],\n largeArcFlag: seg[4],\n sweepFlag: seg[5]\n });\n if (!curves.length) continue;\n for (var j = 0, c; j < curves.length; j++) {\n c = curves[j];\n seg = [\"C\", c.x1, c.y1, c.x2, c.y2, c.x, c.y];\n if (j < curves.length - 1) result.push(seg);\n }\n break;\n case \"S\":\n var cx = x;\n var cy = y;\n if (prev == \"C\" || prev == \"S\") {\n cx += cx - bezierX;\n cy += cy - bezierY;\n }\n seg = [\"C\", cx, cy, seg[1], seg[2], seg[3], seg[4]];\n break;\n case \"T\":\n if (prev == \"Q\" || prev == \"T\") {\n quadX = x * 2 - quadX;\n quadY = y * 2 - quadY;\n } else {\n quadX = x;\n quadY = y;\n }\n seg = quadratic(x, y, quadX, quadY, seg[1], seg[2]);\n break;\n case \"Q\":\n quadX = seg[1];\n quadY = seg[2];\n seg = quadratic(x, y, seg[1], seg[2], seg[3], seg[4]);\n break;\n case \"L\":\n seg = line(x, y, seg[1], seg[2]);\n break;\n case \"H\":\n seg = line(x, y, seg[1], y);\n break;\n case \"V\":\n seg = line(x, y, x, seg[1]);\n break;\n case \"Z\":\n seg = line(x, y, startX, startY);\n break;\n }\n prev = command;\n x = seg[seg.length - 2];\n y = seg[seg.length - 1];\n if (seg.length > 4) {\n bezierX = seg[seg.length - 4];\n bezierY = seg[seg.length - 3];\n } else {\n bezierX = x;\n bezierY = y;\n }\n result.push(seg);\n }\n return result;\n }\n function line(x1, y1, x2, y2) {\n return [\"C\", x1, y1, x2, y2, x2, y2];\n }\n function quadratic(x1, y1, cx, cy, x2, y2) {\n return [\n \"C\",\n x1 / 3 + 2 / 3 * cx,\n y1 / 3 + 2 / 3 * cy,\n x2 / 3 + 2 / 3 * cx,\n y2 / 3 + 2 / 3 * cy,\n x2,\n y2\n ];\n }\n }\n });\n\n // node_modules/is-svg-path/index.js\n var require_is_svg_path = __commonJS({\n \"node_modules/is-svg-path/index.js\"(exports, module) {\n \"use strict\";\n module.exports = function isPath(str) {\n if (typeof str !== \"string\") return false;\n str = str.trim();\n if (/^[mzlhvcsqta]\\s*[-+.0-9][^mlhvzcsqta]+/i.test(str) && /[\\dz]$/i.test(str) && str.length > 4) return true;\n return false;\n };\n }\n });\n\n // node_modules/has-symbols/shams.js\n var require_shams = __commonJS({\n \"node_modules/has-symbols/shams.js\"(exports, module) {\n \"use strict\";\n module.exports = function hasSymbols() {\n if (typeof Symbol !== \"function\" || typeof Object.getOwnPropertySymbols !== \"function\") {\n return false;\n }\n if (typeof Symbol.iterator === \"symbol\") {\n return true;\n }\n var obj = {};\n var sym = Symbol(\"test\");\n var symObj = Object(sym);\n if (typeof sym === \"string\") {\n return false;\n }\n if (Object.prototype.toString.call(sym) !== \"[object Symbol]\") {\n return false;\n }\n if (Object.prototype.toString.call(symObj) !== \"[object Symbol]\") {\n return false;\n }\n var symVal = 42;\n obj[sym] = symVal;\n for (sym in obj) {\n return false;\n }\n if (typeof Object.keys === \"function\" && Object.keys(obj).length !== 0) {\n return false;\n }\n if (typeof Object.getOwnPropertyNames === \"function\" && Object.getOwnPropertyNames(obj).length !== 0) {\n return false;\n }\n var syms = Object.getOwnPropertySymbols(obj);\n if (syms.length !== 1 || syms[0] !== sym) {\n return false;\n }\n if (!Object.prototype.propertyIsEnumerable.call(obj, sym)) {\n return false;\n }\n if (typeof Object.getOwnPropertyDescriptor === \"function\") {\n var descriptor = Object.getOwnPropertyDescriptor(obj, sym);\n if (descriptor.value !== symVal || descriptor.enumerable !== true) {\n return false;\n }\n }\n return true;\n };\n }\n });\n\n // node_modules/has-tostringtag/shams.js\n var require_shams2 = __commonJS({\n \"node_modules/has-tostringtag/shams.js\"(exports, module) {\n \"use strict\";\n var hasSymbols = require_shams();\n module.exports = function hasToStringTagShams() {\n return hasSymbols() && !!Symbol.toStringTag;\n };\n }\n });\n\n // node_modules/es-errors/index.js\n var require_es_errors = __commonJS({\n \"node_modules/es-errors/index.js\"(exports, module) {\n \"use strict\";\n module.exports = Error;\n }\n });\n\n // node_modules/es-errors/eval.js\n var require_eval = __commonJS({\n \"node_modules/es-errors/eval.js\"(exports, module) {\n \"use strict\";\n module.exports = EvalError;\n }\n });\n\n // node_modules/es-errors/range.js\n var require_range = __commonJS({\n \"node_modules/es-errors/range.js\"(exports, module) {\n \"use strict\";\n module.exports = RangeError;\n }\n });\n\n // node_modules/es-errors/ref.js\n var require_ref = __commonJS({\n \"node_modules/es-errors/ref.js\"(exports, module) {\n \"use strict\";\n module.exports = ReferenceError;\n }\n });\n\n // node_modules/es-errors/syntax.js\n var require_syntax = __commonJS({\n \"node_modules/es-errors/syntax.js\"(exports, module) {\n \"use strict\";\n module.exports = SyntaxError;\n }\n });\n\n // node_modules/es-errors/type.js\n var require_type = __commonJS({\n \"node_modules/es-errors/type.js\"(exports, module) {\n \"use strict\";\n module.exports = TypeError;\n }\n });\n\n // node_modules/es-errors/uri.js\n var require_uri = __commonJS({\n \"node_modules/es-errors/uri.js\"(exports, module) {\n \"use strict\";\n module.exports = URIError;\n }\n });\n\n // node_modules/has-symbols/index.js\n var require_has_symbols = __commonJS({\n \"node_modules/has-symbols/index.js\"(exports, module) {\n \"use strict\";\n var origSymbol = typeof Symbol !== \"undefined\" && Symbol;\n var hasSymbolSham = require_shams();\n module.exports = function hasNativeSymbols() {\n if (typeof origSymbol !== \"function\") {\n return false;\n }\n if (typeof Symbol !== \"function\") {\n return false;\n }\n if (typeof origSymbol(\"foo\") !== \"symbol\") {\n return false;\n }\n if (typeof Symbol(\"bar\") !== \"symbol\") {\n return false;\n }\n return hasSymbolSham();\n };\n }\n });\n\n // node_modules/has-proto/index.js\n var require_has_proto = __commonJS({\n \"node_modules/has-proto/index.js\"(exports, module) {\n \"use strict\";\n var test = {\n foo: {}\n };\n var $Object = Object;\n module.exports = function hasProto() {\n return { __proto__: test }.foo === test.foo && !({ __proto__: null } instanceof $Object);\n };\n }\n });\n\n // node_modules/function-bind/implementation.js\n var require_implementation = __commonJS({\n \"node_modules/function-bind/implementation.js\"(exports, module) {\n \"use strict\";\n var ERROR_MESSAGE = \"Function.prototype.bind called on incompatible \";\n var toStr = Object.prototype.toString;\n var max = Math.max;\n var funcType = \"[object Function]\";\n var concatty = function concatty2(a, b) {\n var arr = [];\n for (var i = 0; i < a.length; i += 1) {\n arr[i] = a[i];\n }\n for (var j = 0; j < b.length; j += 1) {\n arr[j + a.length] = b[j];\n }\n return arr;\n };\n var slicy = function slicy2(arrLike, offset) {\n var arr = [];\n for (var i = offset || 0, j = 0; i < arrLike.length; i += 1, j += 1) {\n arr[j] = arrLike[i];\n }\n return arr;\n };\n var joiny = function(arr, joiner) {\n var str = \"\";\n for (var i = 0; i < arr.length; i += 1) {\n str += arr[i];\n if (i + 1 < arr.length) {\n str += joiner;\n }\n }\n return str;\n };\n module.exports = function bind(that) {\n var target = this;\n if (typeof target !== \"function\" || toStr.apply(target) !== funcType) {\n throw new TypeError(ERROR_MESSAGE + target);\n }\n var args = slicy(arguments, 1);\n var bound;\n var binder = function() {\n if (this instanceof bound) {\n var result = target.apply(\n this,\n concatty(args, arguments)\n );\n if (Object(result) === result) {\n return result;\n }\n return this;\n }\n return target.apply(\n that,\n concatty(args, arguments)\n );\n };\n var boundLength = max(0, target.length - args.length);\n var boundArgs = [];\n for (var i = 0; i < boundLength; i++) {\n boundArgs[i] = \"$\" + i;\n }\n bound = Function(\"binder\", \"return function (\" + joiny(boundArgs, \",\") + \"){ return binder.apply(this,arguments); }\")(binder);\n if (target.prototype) {\n var Empty = function Empty2() {\n };\n Empty.prototype = target.prototype;\n bound.prototype = new Empty();\n Empty.prototype = null;\n }\n return bound;\n };\n }\n });\n\n // node_modules/function-bind/index.js\n var require_function_bind = __commonJS({\n \"node_modules/function-bind/index.js\"(exports, module) {\n \"use strict\";\n var implementation = require_implementation();\n module.exports = Function.prototype.bind || implementation;\n }\n });\n\n // node_modules/hasown/index.js\n var require_hasown = __commonJS({\n \"node_modules/hasown/index.js\"(exports, module) {\n \"use strict\";\n var call = Function.prototype.call;\n var $hasOwn = Object.prototype.hasOwnProperty;\n var bind = require_function_bind();\n module.exports = bind.call(call, $hasOwn);\n }\n });\n\n // node_modules/get-intrinsic/index.js\n var require_get_intrinsic = __commonJS({\n \"node_modules/get-intrinsic/index.js\"(exports, module) {\n \"use strict\";\n var undefined2;\n var $Error = require_es_errors();\n var $EvalError = require_eval();\n var $RangeError = require_range();\n var $ReferenceError = require_ref();\n var $SyntaxError = require_syntax();\n var $TypeError = require_type();\n var $URIError = require_uri();\n var $Function = Function;\n var getEvalledConstructor = function(expressionSyntax) {\n try {\n return $Function('\"use strict\"; return (' + expressionSyntax + \").constructor;\")();\n } catch (e) {\n }\n };\n var $gOPD = Object.getOwnPropertyDescriptor;\n if ($gOPD) {\n try {\n $gOPD({}, \"\");\n } catch (e) {\n $gOPD = null;\n }\n }\n var throwTypeError = function() {\n throw new $TypeError();\n };\n var ThrowTypeError = $gOPD ? function() {\n try {\n arguments.callee;\n return throwTypeError;\n } catch (calleeThrows) {\n try {\n return $gOPD(arguments, \"callee\").get;\n } catch (gOPDthrows) {\n return throwTypeError;\n }\n }\n }() : throwTypeError;\n var hasSymbols = require_has_symbols()();\n var hasProto = require_has_proto()();\n var getProto = Object.getPrototypeOf || (hasProto ? function(x) {\n return x.__proto__;\n } : null);\n var needsEval = {};\n var TypedArray = typeof Uint8Array === \"undefined\" || !getProto ? undefined2 : getProto(Uint8Array);\n var INTRINSICS = {\n __proto__: null,\n \"%AggregateError%\": typeof AggregateError === \"undefined\" ? undefined2 : AggregateError,\n \"%Array%\": Array,\n \"%ArrayBuffer%\": typeof ArrayBuffer === \"undefined\" ? undefined2 : ArrayBuffer,\n \"%ArrayIteratorPrototype%\": hasSymbols && getProto ? getProto([][Symbol.iterator]()) : undefined2,\n \"%AsyncFromSyncIteratorPrototype%\": undefined2,\n \"%AsyncFunction%\": needsEval,\n \"%AsyncGenerator%\": needsEval,\n \"%AsyncGeneratorFunction%\": needsEval,\n \"%AsyncIteratorPrototype%\": needsEval,\n \"%Atomics%\": typeof Atomics === \"undefined\" ? undefined2 : Atomics,\n \"%BigInt%\": typeof BigInt === \"undefined\" ? undefined2 : BigInt,\n \"%BigInt64Array%\": typeof BigInt64Array === \"undefined\" ? undefined2 : BigInt64Array,\n \"%BigUint64Array%\": typeof BigUint64Array === \"undefined\" ? undefined2 : BigUint64Array,\n \"%Boolean%\": Boolean,\n \"%DataView%\": typeof DataView === \"undefined\" ? undefined2 : DataView,\n \"%Date%\": Date,\n \"%decodeURI%\": decodeURI,\n \"%decodeURIComponent%\": decodeURIComponent,\n \"%encodeURI%\": encodeURI,\n \"%encodeURIComponent%\": encodeURIComponent,\n \"%Error%\": $Error,\n \"%eval%\": eval,\n // eslint-disable-line no-eval\n \"%EvalError%\": $EvalError,\n \"%Float32Array%\": typeof Float32Array === \"undefined\" ? undefined2 : Float32Array,\n \"%Float64Array%\": typeof Float64Array === \"undefined\" ? undefined2 : Float64Array,\n \"%FinalizationRegistry%\": typeof FinalizationRegistry === \"undefined\" ? undefined2 : FinalizationRegistry,\n \"%Function%\": $Function,\n \"%GeneratorFunction%\": needsEval,\n \"%Int8Array%\": typeof Int8Array === \"undefined\" ? undefined2 : Int8Array,\n \"%Int16Array%\": typeof Int16Array === \"undefined\" ? undefined2 : Int16Array,\n \"%Int32Array%\": typeof Int32Array === \"undefined\" ? undefined2 : Int32Array,\n \"%isFinite%\": isFinite,\n \"%isNaN%\": isNaN,\n \"%IteratorPrototype%\": hasSymbols && getProto ? getProto(getProto([][Symbol.iterator]())) : undefined2,\n \"%JSON%\": typeof JSON === \"object\" ? JSON : undefined2,\n \"%Map%\": typeof Map === \"undefined\" ? undefined2 : Map,\n \"%MapIteratorPrototype%\": typeof Map === \"undefined\" || !hasSymbols || !getProto ? undefined2 : getProto((/* @__PURE__ */ new Map())[Symbol.iterator]()),\n \"%Math%\": Math,\n \"%Number%\": Number,\n \"%Object%\": Object,\n \"%parseFloat%\": parseFloat,\n \"%parseInt%\": parseInt,\n \"%Promise%\": typeof Promise === \"undefined\" ? undefined2 : Promise,\n \"%Proxy%\": typeof Proxy === \"undefined\" ? undefined2 : Proxy,\n \"%RangeError%\": $RangeError,\n \"%ReferenceError%\": $ReferenceError,\n \"%Reflect%\": typeof Reflect === \"undefined\" ? undefined2 : Reflect,\n \"%RegExp%\": RegExp,\n \"%Set%\": typeof Set === \"undefined\" ? undefined2 : Set,\n \"%SetIteratorPrototype%\": typeof Set === \"undefined\" || !hasSymbols || !getProto ? undefined2 : getProto((/* @__PURE__ */ new Set())[Symbol.iterator]()),\n \"%SharedArrayBuffer%\": typeof SharedArrayBuffer === \"undefined\" ? undefined2 : SharedArrayBuffer,\n \"%String%\": String,\n \"%StringIteratorPrototype%\": hasSymbols && getProto ? getProto(\"\"[Symbol.iterator]()) : undefined2,\n \"%Symbol%\": hasSymbols ? Symbol : undefined2,\n \"%SyntaxError%\": $SyntaxError,\n \"%ThrowTypeError%\": ThrowTypeError,\n \"%TypedArray%\": TypedArray,\n \"%TypeError%\": $TypeError,\n \"%Uint8Array%\": typeof Uint8Array === \"undefined\" ? undefined2 : Uint8Array,\n \"%Uint8ClampedArray%\": typeof Uint8ClampedArray === \"undefined\" ? undefined2 : Uint8ClampedArray,\n \"%Uint16Array%\": typeof Uint16Array === \"undefined\" ? undefined2 : Uint16Array,\n \"%Uint32Array%\": typeof Uint32Array === \"undefined\" ? undefined2 : Uint32Array,\n \"%URIError%\": $URIError,\n \"%WeakMap%\": typeof WeakMap === \"undefined\" ? undefined2 : WeakMap,\n \"%WeakRef%\": typeof WeakRef === \"undefined\" ? undefined2 : WeakRef,\n \"%WeakSet%\": typeof WeakSet === \"undefined\" ? undefined2 : WeakSet\n };\n if (getProto) {\n try {\n null.error;\n } catch (e) {\n errorProto = getProto(getProto(e));\n INTRINSICS[\"%Error.prototype%\"] = errorProto;\n }\n }\n var errorProto;\n var doEval = function doEval2(name) {\n var value;\n if (name === \"%AsyncFunction%\") {\n value = getEvalledConstructor(\"async function () {}\");\n } else if (name === \"%GeneratorFunction%\") {\n value = getEvalledConstructor(\"function* () {}\");\n } else if (name === \"%AsyncGeneratorFunction%\") {\n value = getEvalledConstructor(\"async function* () {}\");\n } else if (name === \"%AsyncGenerator%\") {\n var fn = doEval2(\"%AsyncGeneratorFunction%\");\n if (fn) {\n value = fn.prototype;\n }\n } else if (name === \"%AsyncIteratorPrototype%\") {\n var gen = doEval2(\"%AsyncGenerator%\");\n if (gen && getProto) {\n value = getProto(gen.prototype);\n }\n }\n INTRINSICS[name] = value;\n return value;\n };\n var LEGACY_ALIASES = {\n __proto__: null,\n \"%ArrayBufferPrototype%\": [\"ArrayBuffer\", \"prototype\"],\n \"%ArrayPrototype%\": [\"Array\", \"prototype\"],\n \"%ArrayProto_entries%\": [\"Array\", \"prototype\", \"entries\"],\n \"%ArrayProto_forEach%\": [\"Array\", \"prototype\", \"forEach\"],\n \"%ArrayProto_keys%\": [\"Array\", \"prototype\", \"keys\"],\n \"%ArrayProto_values%\": [\"Array\", \"prototype\", \"values\"],\n \"%AsyncFunctionPrototype%\": [\"AsyncFunction\", \"prototype\"],\n \"%AsyncGenerator%\": [\"AsyncGeneratorFunction\", \"prototype\"],\n \"%AsyncGeneratorPrototype%\": [\"AsyncGeneratorFunction\", \"prototype\", \"prototype\"],\n \"%BooleanPrototype%\": [\"Boolean\", \"prototype\"],\n \"%DataViewPrototype%\": [\"DataView\", \"prototype\"],\n \"%DatePrototype%\": [\"Date\", \"prototype\"],\n \"%ErrorPrototype%\": [\"Error\", \"prototype\"],\n \"%EvalErrorPrototype%\": [\"EvalError\", \"prototype\"],\n \"%Float32ArrayPrototype%\": [\"Float32Array\", \"prototype\"],\n \"%Float64ArrayPrototype%\": [\"Float64Array\", \"prototype\"],\n \"%FunctionPrototype%\": [\"Function\", \"prototype\"],\n \"%Generator%\": [\"GeneratorFunction\", \"prototype\"],\n \"%GeneratorPrototype%\": [\"GeneratorFunction\", \"prototype\", \"prototype\"],\n \"%Int8ArrayPrototype%\": [\"Int8Array\", \"prototype\"],\n \"%Int16ArrayPrototype%\": [\"Int16Array\", \"prototype\"],\n \"%Int32ArrayPrototype%\": [\"Int32Array\", \"prototype\"],\n \"%JSONParse%\": [\"JSON\", \"parse\"],\n \"%JSONStringify%\": [\"JSON\", \"stringify\"],\n \"%MapPrototype%\": [\"Map\", \"prototype\"],\n \"%NumberPrototype%\": [\"Number\", \"prototype\"],\n \"%ObjectPrototype%\": [\"Object\", \"prototype\"],\n \"%ObjProto_toString%\": [\"Object\", \"prototype\", \"toString\"],\n \"%ObjProto_valueOf%\": [\"Object\", \"prototype\", \"valueOf\"],\n \"%PromisePrototype%\": [\"Promise\", \"prototype\"],\n \"%PromiseProto_then%\": [\"Promise\", \"prototype\", \"then\"],\n \"%Promise_all%\": [\"Promise\", \"all\"],\n \"%Promise_reject%\": [\"Promise\", \"reject\"],\n \"%Promise_resolve%\": [\"Promise\", \"resolve\"],\n \"%RangeErrorPrototype%\": [\"RangeError\", \"prototype\"],\n \"%ReferenceErrorPrototype%\": [\"ReferenceError\", \"prototype\"],\n \"%RegExpPrototype%\": [\"RegExp\", \"prototype\"],\n \"%SetPrototype%\": [\"Set\", \"prototype\"],\n \"%SharedArrayBufferPrototype%\": [\"SharedArrayBuffer\", \"prototype\"],\n \"%StringPrototype%\": [\"String\", \"prototype\"],\n \"%SymbolPrototype%\": [\"Symbol\", \"prototype\"],\n \"%SyntaxErrorPrototype%\": [\"SyntaxError\", \"prototype\"],\n \"%TypedArrayPrototype%\": [\"TypedArray\", \"prototype\"],\n \"%TypeErrorPrototype%\": [\"TypeError\", \"prototype\"],\n \"%Uint8ArrayPrototype%\": [\"Uint8Array\", \"prototype\"],\n \"%Uint8ClampedArrayPrototype%\": [\"Uint8ClampedArray\", \"prototype\"],\n \"%Uint16ArrayPrototype%\": [\"Uint16Array\", \"prototype\"],\n \"%Uint32ArrayPrototype%\": [\"Uint32Array\", \"prototype\"],\n \"%URIErrorPrototype%\": [\"URIError\", \"prototype\"],\n \"%WeakMapPrototype%\": [\"WeakMap\", \"prototype\"],\n \"%WeakSetPrototype%\": [\"WeakSet\", \"prototype\"]\n };\n var bind = require_function_bind();\n var hasOwn = require_hasown();\n var $concat = bind.call(Function.call, Array.prototype.concat);\n var $spliceApply = bind.call(Function.apply, Array.prototype.splice);\n var $replace = bind.call(Function.call, String.prototype.replace);\n var $strSlice = bind.call(Function.call, String.prototype.slice);\n var $exec = bind.call(Function.call, RegExp.prototype.exec);\n var rePropName = /[^%.[\\]]+|\\[(?:(-?\\d+(?:\\.\\d+)?)|([\"'])((?:(?!\\2)[^\\\\]|\\\\.)*?)\\2)\\]|(?=(?:\\.|\\[\\])(?:\\.|\\[\\]|%$))/g;\n var reEscapeChar = /\\\\(\\\\)?/g;\n var stringToPath = function stringToPath2(string) {\n var first = $strSlice(string, 0, 1);\n var last = $strSlice(string, -1);\n if (first === \"%\" && last !== \"%\") {\n throw new $SyntaxError(\"invalid intrinsic syntax, expected closing `%`\");\n } else if (last === \"%\" && first !== \"%\") {\n throw new $SyntaxError(\"invalid intrinsic syntax, expected opening `%`\");\n }\n var result = [];\n $replace(string, rePropName, function(match, number, quote, subString) {\n result[result.length] = quote ? $replace(subString, reEscapeChar, \"$1\") : number || match;\n });\n return result;\n };\n var getBaseIntrinsic = function getBaseIntrinsic2(name, allowMissing) {\n var intrinsicName = name;\n var alias;\n if (hasOwn(LEGACY_ALIASES, intrinsicName)) {\n alias = LEGACY_ALIASES[intrinsicName];\n intrinsicName = \"%\" + alias[0] + \"%\";\n }\n if (hasOwn(INTRINSICS, intrinsicName)) {\n var value = INTRINSICS[intrinsicName];\n if (value === needsEval) {\n value = doEval(intrinsicName);\n }\n if (typeof value === \"undefined\" && !allowMissing) {\n throw new $TypeError(\"intrinsic \" + name + \" exists, but is not available. Please file an issue!\");\n }\n return {\n alias,\n name: intrinsicName,\n value\n };\n }\n throw new $SyntaxError(\"intrinsic \" + name + \" does not exist!\");\n };\n module.exports = function GetIntrinsic(name, allowMissing) {\n if (typeof name !== \"string\" || name.length === 0) {\n throw new $TypeError(\"intrinsic name must be a non-empty string\");\n }\n if (arguments.length > 1 && typeof allowMissing !== \"boolean\") {\n throw new $TypeError('\"allowMissing\" argument must be a boolean');\n }\n if ($exec(/^%?[^%]*%?$/, name) === null) {\n throw new $SyntaxError(\"`%` may not be present anywhere but at the beginning and end of the intrinsic name\");\n }\n var parts = stringToPath(name);\n var intrinsicBaseName = parts.length > 0 ? parts[0] : \"\";\n var intrinsic = getBaseIntrinsic(\"%\" + intrinsicBaseName + \"%\", allowMissing);\n var intrinsicRealName = intrinsic.name;\n var value = intrinsic.value;\n var skipFurtherCaching = false;\n var alias = intrinsic.alias;\n if (alias) {\n intrinsicBaseName = alias[0];\n $spliceApply(parts, $concat([0, 1], alias));\n }\n for (var i = 1, isOwn = true; i < parts.length; i += 1) {\n var part = parts[i];\n var first = $strSlice(part, 0, 1);\n var last = $strSlice(part, -1);\n if ((first === '\"' || first === \"'\" || first === \"`\" || (last === '\"' || last === \"'\" || last === \"`\")) && first !== last) {\n throw new $SyntaxError(\"property names with quotes must have matching quotes\");\n }\n if (part === \"constructor\" || !isOwn) {\n skipFurtherCaching = true;\n }\n intrinsicBaseName += \".\" + part;\n intrinsicRealName = \"%\" + intrinsicBaseName + \"%\";\n if (hasOwn(INTRINSICS, intrinsicRealName)) {\n value = INTRINSICS[intrinsicRealName];\n } else if (value != null) {\n if (!(part in value)) {\n if (!allowMissing) {\n throw new $TypeError(\"base intrinsic for \" + name + \" exists, but the property is not available.\");\n }\n return void 0;\n }\n if ($gOPD && i + 1 >= parts.length) {\n var desc = $gOPD(value, part);\n isOwn = !!desc;\n if (isOwn && \"get\" in desc && !(\"originalValue\" in desc.get)) {\n value = desc.get;\n } else {\n value = value[part];\n }\n } else {\n isOwn = hasOwn(value, part);\n value = value[part];\n }\n if (isOwn && !skipFurtherCaching) {\n INTRINSICS[intrinsicRealName] = value;\n }\n }\n }\n return value;\n };\n }\n });\n\n // node_modules/es-define-property/index.js\n var require_es_define_property = __commonJS({\n \"node_modules/es-define-property/index.js\"(exports, module) {\n \"use strict\";\n var GetIntrinsic = require_get_intrinsic();\n var $defineProperty = GetIntrinsic(\"%Object.defineProperty%\", true) || false;\n if ($defineProperty) {\n try {\n $defineProperty({}, \"a\", { value: 1 });\n } catch (e) {\n $defineProperty = false;\n }\n }\n module.exports = $defineProperty;\n }\n });\n\n // node_modules/gopd/index.js\n var require_gopd = __commonJS({\n \"node_modules/gopd/index.js\"(exports, module) {\n \"use strict\";\n var GetIntrinsic = require_get_intrinsic();\n var $gOPD = GetIntrinsic(\"%Object.getOwnPropertyDescriptor%\", true);\n if ($gOPD) {\n try {\n $gOPD([], \"length\");\n } catch (e) {\n $gOPD = null;\n }\n }\n module.exports = $gOPD;\n }\n });\n\n // node_modules/define-data-property/index.js\n var require_define_data_property = __commonJS({\n \"node_modules/define-data-property/index.js\"(exports, module) {\n \"use strict\";\n var $defineProperty = require_es_define_property();\n var $SyntaxError = require_syntax();\n var $TypeError = require_type();\n var gopd = require_gopd();\n module.exports = function defineDataProperty(obj, property, value) {\n if (!obj || typeof obj !== \"object\" && typeof obj !== \"function\") {\n throw new $TypeError(\"`obj` must be an object or a function`\");\n }\n if (typeof property !== \"string\" && typeof property !== \"symbol\") {\n throw new $TypeError(\"`property` must be a string or a symbol`\");\n }\n if (arguments.length > 3 && typeof arguments[3] !== \"boolean\" && arguments[3] !== null) {\n throw new $TypeError(\"`nonEnumerable`, if provided, must be a boolean or null\");\n }\n if (arguments.length > 4 && typeof arguments[4] !== \"boolean\" && arguments[4] !== null) {\n throw new $TypeError(\"`nonWritable`, if provided, must be a boolean or null\");\n }\n if (arguments.length > 5 && typeof arguments[5] !== \"boolean\" && arguments[5] !== null) {\n throw new $TypeError(\"`nonConfigurable`, if provided, must be a boolean or null\");\n }\n if (arguments.length > 6 && typeof arguments[6] !== \"boolean\") {\n throw new $TypeError(\"`loose`, if provided, must be a boolean\");\n }\n var nonEnumerable = arguments.length > 3 ? arguments[3] : null;\n var nonWritable = arguments.length > 4 ? arguments[4] : null;\n var nonConfigurable = arguments.length > 5 ? arguments[5] : null;\n var loose = arguments.length > 6 ? arguments[6] : false;\n var desc = !!gopd && gopd(obj, property);\n if ($defineProperty) {\n $defineProperty(obj, property, {\n configurable: nonConfigurable === null && desc ? desc.configurable : !nonConfigurable,\n enumerable: nonEnumerable === null && desc ? desc.enumerable : !nonEnumerable,\n value,\n writable: nonWritable === null && desc ? desc.writable : !nonWritable\n });\n } else if (loose || !nonEnumerable && !nonWritable && !nonConfigurable) {\n obj[property] = value;\n } else {\n throw new $SyntaxError(\"This environment does not support defining a property as non-configurable, non-writable, or non-enumerable.\");\n }\n };\n }\n });\n\n // node_modules/has-property-descriptors/index.js\n var require_has_property_descriptors = __commonJS({\n \"node_modules/has-property-descriptors/index.js\"(exports, module) {\n \"use strict\";\n var $defineProperty = require_es_define_property();\n var hasPropertyDescriptors = function hasPropertyDescriptors2() {\n return !!$defineProperty;\n };\n hasPropertyDescriptors.hasArrayLengthDefineBug = function hasArrayLengthDefineBug() {\n if (!$defineProperty) {\n return null;\n }\n try {\n return $defineProperty([], \"length\", { value: 1 }).length !== 1;\n } catch (e) {\n return true;\n }\n };\n module.exports = hasPropertyDescriptors;\n }\n });\n\n // node_modules/set-function-length/index.js\n var require_set_function_length = __commonJS({\n \"node_modules/set-function-length/index.js\"(exports, module) {\n \"use strict\";\n var GetIntrinsic = require_get_intrinsic();\n var define2 = require_define_data_property();\n var hasDescriptors = require_has_property_descriptors()();\n var gOPD = require_gopd();\n var $TypeError = require_type();\n var $floor = GetIntrinsic(\"%Math.floor%\");\n module.exports = function setFunctionLength(fn, length) {\n if (typeof fn !== \"function\") {\n throw new $TypeError(\"`fn` is not a function\");\n }\n if (typeof length !== \"number\" || length < 0 || length > 4294967295 || $floor(length) !== length) {\n throw new $TypeError(\"`length` must be a positive 32-bit integer\");\n }\n var loose = arguments.length > 2 && !!arguments[2];\n var functionLengthIsConfigurable = true;\n var functionLengthIsWritable = true;\n if (\"length\" in fn && gOPD) {\n var desc = gOPD(fn, \"length\");\n if (desc && !desc.configurable) {\n functionLengthIsConfigurable = false;\n }\n if (desc && !desc.writable) {\n functionLengthIsWritable = false;\n }\n }\n if (functionLengthIsConfigurable || functionLengthIsWritable || !loose) {\n if (hasDescriptors) {\n define2(\n /** @type {Parameters[0]} */\n fn,\n \"length\",\n length,\n true,\n true\n );\n } else {\n define2(\n /** @type {Parameters[0]} */\n fn,\n \"length\",\n length\n );\n }\n }\n return fn;\n };\n }\n });\n\n // node_modules/call-bind/index.js\n var require_call_bind = __commonJS({\n \"node_modules/call-bind/index.js\"(exports, module) {\n \"use strict\";\n var bind = require_function_bind();\n var GetIntrinsic = require_get_intrinsic();\n var setFunctionLength = require_set_function_length();\n var $TypeError = require_type();\n var $apply = GetIntrinsic(\"%Function.prototype.apply%\");\n var $call = GetIntrinsic(\"%Function.prototype.call%\");\n var $reflectApply = GetIntrinsic(\"%Reflect.apply%\", true) || bind.call($call, $apply);\n var $defineProperty = require_es_define_property();\n var $max = GetIntrinsic(\"%Math.max%\");\n module.exports = function callBind(originalFunction) {\n if (typeof originalFunction !== \"function\") {\n throw new $TypeError(\"a function is required\");\n }\n var func = $reflectApply(bind, $call, arguments);\n return setFunctionLength(\n func,\n 1 + $max(0, originalFunction.length - (arguments.length - 1)),\n true\n );\n };\n var applyBind = function applyBind2() {\n return $reflectApply(bind, $apply, arguments);\n };\n if ($defineProperty) {\n $defineProperty(module.exports, \"apply\", { value: applyBind });\n } else {\n module.exports.apply = applyBind;\n }\n }\n });\n\n // node_modules/call-bind/callBound.js\n var require_callBound = __commonJS({\n \"node_modules/call-bind/callBound.js\"(exports, module) {\n \"use strict\";\n var GetIntrinsic = require_get_intrinsic();\n var callBind = require_call_bind();\n var $indexOf = callBind(GetIntrinsic(\"String.prototype.indexOf\"));\n module.exports = function callBoundIntrinsic(name, allowMissing) {\n var intrinsic = GetIntrinsic(name, !!allowMissing);\n if (typeof intrinsic === \"function\" && $indexOf(name, \".prototype.\") > -1) {\n return callBind(intrinsic);\n }\n return intrinsic;\n };\n }\n });\n\n // node_modules/is-arguments/index.js\n var require_is_arguments = __commonJS({\n \"node_modules/is-arguments/index.js\"(exports, module) {\n \"use strict\";\n var hasToStringTag = require_shams2()();\n var callBound = require_callBound();\n var $toString = callBound(\"Object.prototype.toString\");\n var isStandardArguments = function isArguments(value) {\n if (hasToStringTag && value && typeof value === \"object\" && Symbol.toStringTag in value) {\n return false;\n }\n return $toString(value) === \"[object Arguments]\";\n };\n var isLegacyArguments = function isArguments(value) {\n if (isStandardArguments(value)) {\n return true;\n }\n return value !== null && typeof value === \"object\" && typeof value.length === \"number\" && value.length >= 0 && $toString(value) !== \"[object Array]\" && $toString(value.callee) === \"[object Function]\";\n };\n var supportsStandardArguments = function() {\n return isStandardArguments(arguments);\n }();\n isStandardArguments.isLegacyArguments = isLegacyArguments;\n module.exports = supportsStandardArguments ? isStandardArguments : isLegacyArguments;\n }\n });\n\n // node_modules/is-generator-function/index.js\n var require_is_generator_function = __commonJS({\n \"node_modules/is-generator-function/index.js\"(exports, module) {\n \"use strict\";\n var toStr = Object.prototype.toString;\n var fnToStr = Function.prototype.toString;\n var isFnRegex = /^\\s*(?:function)?\\*/;\n var hasToStringTag = require_shams2()();\n var getProto = Object.getPrototypeOf;\n var getGeneratorFunc = function() {\n if (!hasToStringTag) {\n return false;\n }\n try {\n return Function(\"return function*() {}\")();\n } catch (e) {\n }\n };\n var GeneratorFunction;\n module.exports = function isGeneratorFunction(fn) {\n if (typeof fn !== \"function\") {\n return false;\n }\n if (isFnRegex.test(fnToStr.call(fn))) {\n return true;\n }\n if (!hasToStringTag) {\n var str = toStr.call(fn);\n return str === \"[object GeneratorFunction]\";\n }\n if (!getProto) {\n return false;\n }\n if (typeof GeneratorFunction === \"undefined\") {\n var generatorFunc = getGeneratorFunc();\n GeneratorFunction = generatorFunc ? getProto(generatorFunc) : false;\n }\n return getProto(fn) === GeneratorFunction;\n };\n }\n });\n\n // node_modules/is-callable/index.js\n var require_is_callable = __commonJS({\n \"node_modules/is-callable/index.js\"(exports, module) {\n \"use strict\";\n var fnToStr = Function.prototype.toString;\n var reflectApply = typeof Reflect === \"object\" && Reflect !== null && Reflect.apply;\n var badArrayLike;\n var isCallableMarker;\n if (typeof reflectApply === \"function\" && typeof Object.defineProperty === \"function\") {\n try {\n badArrayLike = Object.defineProperty({}, \"length\", {\n get: function() {\n throw isCallableMarker;\n }\n });\n isCallableMarker = {};\n reflectApply(function() {\n throw 42;\n }, null, badArrayLike);\n } catch (_) {\n if (_ !== isCallableMarker) {\n reflectApply = null;\n }\n }\n } else {\n reflectApply = null;\n }\n var constructorRegex = /^\\s*class\\b/;\n var isES6ClassFn = function isES6ClassFunction(value) {\n try {\n var fnStr = fnToStr.call(value);\n return constructorRegex.test(fnStr);\n } catch (e) {\n return false;\n }\n };\n var tryFunctionObject = function tryFunctionToStr(value) {\n try {\n if (isES6ClassFn(value)) {\n return false;\n }\n fnToStr.call(value);\n return true;\n } catch (e) {\n return false;\n }\n };\n var toStr = Object.prototype.toString;\n var objectClass = \"[object Object]\";\n var fnClass = \"[object Function]\";\n var genClass = \"[object GeneratorFunction]\";\n var ddaClass = \"[object HTMLAllCollection]\";\n var ddaClass2 = \"[object HTML document.all class]\";\n var ddaClass3 = \"[object HTMLCollection]\";\n var hasToStringTag = typeof Symbol === \"function\" && !!Symbol.toStringTag;\n var isIE68 = !(0 in [,]);\n var isDDA = function isDocumentDotAll() {\n return false;\n };\n if (typeof document === \"object\") {\n all = document.all;\n if (toStr.call(all) === toStr.call(document.all)) {\n isDDA = function isDocumentDotAll(value) {\n if ((isIE68 || !value) && (typeof value === \"undefined\" || typeof value === \"object\")) {\n try {\n var str = toStr.call(value);\n return (str === ddaClass || str === ddaClass2 || str === ddaClass3 || str === objectClass) && value(\"\") == null;\n } catch (e) {\n }\n }\n return false;\n };\n }\n }\n var all;\n module.exports = reflectApply ? function isCallable(value) {\n if (isDDA(value)) {\n return true;\n }\n if (!value) {\n return false;\n }\n if (typeof value !== \"function\" && typeof value !== \"object\") {\n return false;\n }\n try {\n reflectApply(value, null, badArrayLike);\n } catch (e) {\n if (e !== isCallableMarker) {\n return false;\n }\n }\n return !isES6ClassFn(value) && tryFunctionObject(value);\n } : function isCallable(value) {\n if (isDDA(value)) {\n return true;\n }\n if (!value) {\n return false;\n }\n if (typeof value !== \"function\" && typeof value !== \"object\") {\n return false;\n }\n if (hasToStringTag) {\n return tryFunctionObject(value);\n }\n if (isES6ClassFn(value)) {\n return false;\n }\n var strClass = toStr.call(value);\n if (strClass !== fnClass && strClass !== genClass && !/^\\[object HTML/.test(strClass)) {\n return false;\n }\n return tryFunctionObject(value);\n };\n }\n });\n\n // node_modules/for-each/index.js\n var require_for_each = __commonJS({\n \"node_modules/for-each/index.js\"(exports, module) {\n \"use strict\";\n var isCallable = require_is_callable();\n var toStr = Object.prototype.toString;\n var hasOwnProperty2 = Object.prototype.hasOwnProperty;\n var forEachArray = function forEachArray2(array, iterator, receiver) {\n for (var i = 0, len = array.length; i < len; i++) {\n if (hasOwnProperty2.call(array, i)) {\n if (receiver == null) {\n iterator(array[i], i, array);\n } else {\n iterator.call(receiver, array[i], i, array);\n }\n }\n }\n };\n var forEachString = function forEachString2(string, iterator, receiver) {\n for (var i = 0, len = string.length; i < len; i++) {\n if (receiver == null) {\n iterator(string.charAt(i), i, string);\n } else {\n iterator.call(receiver, string.charAt(i), i, string);\n }\n }\n };\n var forEachObject = function forEachObject2(object, iterator, receiver) {\n for (var k in object) {\n if (hasOwnProperty2.call(object, k)) {\n if (receiver == null) {\n iterator(object[k], k, object);\n } else {\n iterator.call(receiver, object[k], k, object);\n }\n }\n }\n };\n var forEach = function forEach2(list, iterator, thisArg) {\n if (!isCallable(iterator)) {\n throw new TypeError(\"iterator must be a function\");\n }\n var receiver;\n if (arguments.length >= 3) {\n receiver = thisArg;\n }\n if (toStr.call(list) === \"[object Array]\") {\n forEachArray(list, iterator, receiver);\n } else if (typeof list === \"string\") {\n forEachString(list, iterator, receiver);\n } else {\n forEachObject(list, iterator, receiver);\n }\n };\n module.exports = forEach;\n }\n });\n\n // node_modules/available-typed-arrays/index.js\n var require_available_typed_arrays = __commonJS({\n \"node_modules/available-typed-arrays/index.js\"(exports, module) {\n \"use strict\";\n var possibleNames = [\n \"BigInt64Array\",\n \"BigUint64Array\",\n \"Float32Array\",\n \"Float64Array\",\n \"Int16Array\",\n \"Int32Array\",\n \"Int8Array\",\n \"Uint16Array\",\n \"Uint32Array\",\n \"Uint8Array\",\n \"Uint8ClampedArray\"\n ];\n var g = typeof globalThis === \"undefined\" ? window : globalThis;\n module.exports = function availableTypedArrays() {\n var out = [];\n for (var i = 0; i < possibleNames.length; i++) {\n if (typeof g[possibleNames[i]] === \"function\") {\n out[out.length] = possibleNames[i];\n }\n }\n return out;\n };\n }\n });\n\n // node_modules/which-typed-array/index.js\n var require_which_typed_array = __commonJS({\n \"node_modules/which-typed-array/index.js\"(exports, module) {\n \"use strict\";\n var forEach = require_for_each();\n var availableTypedArrays = require_available_typed_arrays();\n var callBind = require_call_bind();\n var callBound = require_callBound();\n var gOPD = require_gopd();\n var $toString = callBound(\"Object.prototype.toString\");\n var hasToStringTag = require_shams2()();\n var g = typeof globalThis === \"undefined\" ? window : globalThis;\n var typedArrays = availableTypedArrays();\n var $slice = callBound(\"String.prototype.slice\");\n var getPrototypeOf = Object.getPrototypeOf;\n var $indexOf = callBound(\"Array.prototype.indexOf\", true) || /** @type {(array: readonly unknown[], value: unknown) => keyof array} */\n function indexOf(array, value) {\n for (var i = 0; i < array.length; i += 1) {\n if (array[i] === value) {\n return i;\n }\n }\n return -1;\n };\n var cache = { __proto__: null };\n if (hasToStringTag && gOPD && getPrototypeOf) {\n forEach(typedArrays, function(typedArray) {\n var arr = new g[typedArray]();\n if (Symbol.toStringTag in arr) {\n var proto = getPrototypeOf(arr);\n var descriptor = gOPD(proto, Symbol.toStringTag);\n if (!descriptor) {\n var superProto = getPrototypeOf(proto);\n descriptor = gOPD(superProto, Symbol.toStringTag);\n }\n cache[\"$\" + typedArray] = callBind(descriptor.get);\n }\n });\n } else {\n forEach(typedArrays, function(typedArray) {\n var arr = new g[typedArray]();\n var fn = arr.slice || arr.set;\n if (fn) {\n cache[\"$\" + typedArray] = callBind(fn);\n }\n });\n }\n var tryTypedArrays = function tryAllTypedArrays(value) {\n var found = false;\n forEach(\n // eslint-disable-next-line no-extra-parens\n /** @type {Record<`\\$${TypedArrayName}`, typeof cache>} */\n /** @type {any} */\n cache,\n /** @type {(getter: typeof cache, name: `\\$${TypedArrayName}`) => void} */\n function(getter, typedArray) {\n if (!found) {\n try {\n if (\"$\" + getter(value) === typedArray) {\n found = $slice(typedArray, 1);\n }\n } catch (e) {\n }\n }\n }\n );\n return found;\n };\n var trySlices = function tryAllSlices(value) {\n var found = false;\n forEach(\n // eslint-disable-next-line no-extra-parens\n /** @type {any} */\n cache,\n /** @type {(getter: typeof cache, name: `\\$${TypedArrayName}`) => void} */\n function(getter, name) {\n if (!found) {\n try {\n getter(value);\n found = $slice(name, 1);\n } catch (e) {\n }\n }\n }\n );\n return found;\n };\n module.exports = function whichTypedArray(value) {\n if (!value || typeof value !== \"object\") {\n return false;\n }\n if (!hasToStringTag) {\n var tag = $slice($toString(value), 8, -1);\n if ($indexOf(typedArrays, tag) > -1) {\n return tag;\n }\n if (tag !== \"Object\") {\n return false;\n }\n return trySlices(value);\n }\n if (!gOPD) {\n return null;\n }\n return tryTypedArrays(value);\n };\n }\n });\n\n // node_modules/is-typed-array/index.js\n var require_is_typed_array = __commonJS({\n \"node_modules/is-typed-array/index.js\"(exports, module) {\n \"use strict\";\n var forEach = require_for_each();\n var availableTypedArrays = require_available_typed_arrays();\n var callBound = require_callBound();\n var $toString = callBound(\"Object.prototype.toString\");\n var hasToStringTag = require_shams2()();\n var gOPD = require_gopd();\n var g = typeof globalThis === \"undefined\" ? window : globalThis;\n var typedArrays = availableTypedArrays();\n var $indexOf = callBound(\"Array.prototype.indexOf\", true) || function indexOf(array, value) {\n for (var i = 0; i < array.length; i += 1) {\n if (array[i] === value) {\n return i;\n }\n }\n return -1;\n };\n var $slice = callBound(\"String.prototype.slice\");\n var toStrTags = {};\n var getPrototypeOf = Object.getPrototypeOf;\n if (hasToStringTag && gOPD && getPrototypeOf) {\n forEach(typedArrays, function(typedArray) {\n var arr = new g[typedArray]();\n if (Symbol.toStringTag in arr) {\n var proto = getPrototypeOf(arr);\n var descriptor = gOPD(proto, Symbol.toStringTag);\n if (!descriptor) {\n var superProto = getPrototypeOf(proto);\n descriptor = gOPD(superProto, Symbol.toStringTag);\n }\n toStrTags[typedArray] = descriptor.get;\n }\n });\n }\n var tryTypedArrays = function tryAllTypedArrays(value) {\n var anyTrue = false;\n forEach(toStrTags, function(getter, typedArray) {\n if (!anyTrue) {\n try {\n anyTrue = getter.call(value) === typedArray;\n } catch (e) {\n }\n }\n });\n return anyTrue;\n };\n module.exports = function isTypedArray(value) {\n if (!value || typeof value !== \"object\") {\n return false;\n }\n if (!hasToStringTag || !(Symbol.toStringTag in value)) {\n var tag = $slice($toString(value), 8, -1);\n return $indexOf(typedArrays, tag) > -1;\n }\n if (!gOPD) {\n return false;\n }\n return tryTypedArrays(value);\n };\n }\n });\n\n // node_modules/util/support/types.js\n var require_types = __commonJS({\n \"node_modules/util/support/types.js\"(exports) {\n \"use strict\";\n var isArgumentsObject = require_is_arguments();\n var isGeneratorFunction = require_is_generator_function();\n var whichTypedArray = require_which_typed_array();\n var isTypedArray = require_is_typed_array();\n function uncurryThis(f) {\n return f.call.bind(f);\n }\n var BigIntSupported = typeof BigInt !== \"undefined\";\n var SymbolSupported = typeof Symbol !== \"undefined\";\n var ObjectToString = uncurryThis(Object.prototype.toString);\n var numberValue = uncurryThis(Number.prototype.valueOf);\n var stringValue = uncurryThis(String.prototype.valueOf);\n var booleanValue = uncurryThis(Boolean.prototype.valueOf);\n if (BigIntSupported) {\n bigIntValue = uncurryThis(BigInt.prototype.valueOf);\n }\n var bigIntValue;\n if (SymbolSupported) {\n symbolValue = uncurryThis(Symbol.prototype.valueOf);\n }\n var symbolValue;\n function checkBoxedPrimitive(value, prototypeValueOf) {\n if (typeof value !== \"object\") {\n return false;\n }\n try {\n prototypeValueOf(value);\n return true;\n } catch (e) {\n return false;\n }\n }\n exports.isArgumentsObject = isArgumentsObject;\n exports.isGeneratorFunction = isGeneratorFunction;\n exports.isTypedArray = isTypedArray;\n function isPromise(input) {\n return typeof Promise !== \"undefined\" && input instanceof Promise || input !== null && typeof input === \"object\" && typeof input.then === \"function\" && typeof input.catch === \"function\";\n }\n exports.isPromise = isPromise;\n function isArrayBufferView(value) {\n if (typeof ArrayBuffer !== \"undefined\" && ArrayBuffer.isView) {\n return ArrayBuffer.isView(value);\n }\n return isTypedArray(value) || isDataView(value);\n }\n exports.isArrayBufferView = isArrayBufferView;\n function isUint8Array(value) {\n return whichTypedArray(value) === \"Uint8Array\";\n }\n exports.isUint8Array = isUint8Array;\n function isUint8ClampedArray(value) {\n return whichTypedArray(value) === \"Uint8ClampedArray\";\n }\n exports.isUint8ClampedArray = isUint8ClampedArray;\n function isUint16Array(value) {\n return whichTypedArray(value) === \"Uint16Array\";\n }\n exports.isUint16Array = isUint16Array;\n function isUint32Array(value) {\n return whichTypedArray(value) === \"Uint32Array\";\n }\n exports.isUint32Array = isUint32Array;\n function isInt8Array(value) {\n return whichTypedArray(value) === \"Int8Array\";\n }\n exports.isInt8Array = isInt8Array;\n function isInt16Array(value) {\n return whichTypedArray(value) === \"Int16Array\";\n }\n exports.isInt16Array = isInt16Array;\n function isInt32Array(value) {\n return whichTypedArray(value) === \"Int32Array\";\n }\n exports.isInt32Array = isInt32Array;\n function isFloat32Array(value) {\n return whichTypedArray(value) === \"Float32Array\";\n }\n exports.isFloat32Array = isFloat32Array;\n function isFloat64Array(value) {\n return whichTypedArray(value) === \"Float64Array\";\n }\n exports.isFloat64Array = isFloat64Array;\n function isBigInt64Array(value) {\n return whichTypedArray(value) === \"BigInt64Array\";\n }\n exports.isBigInt64Array = isBigInt64Array;\n function isBigUint64Array(value) {\n return whichTypedArray(value) === \"BigUint64Array\";\n }\n exports.isBigUint64Array = isBigUint64Array;\n function isMapToString(value) {\n return ObjectToString(value) === \"[object Map]\";\n }\n isMapToString.working = typeof Map !== \"undefined\" && isMapToString(/* @__PURE__ */ new Map());\n function isMap(value) {\n if (typeof Map === \"undefined\") {\n return false;\n }\n return isMapToString.working ? isMapToString(value) : value instanceof Map;\n }\n exports.isMap = isMap;\n function isSetToString(value) {\n return ObjectToString(value) === \"[object Set]\";\n }\n isSetToString.working = typeof Set !== \"undefined\" && isSetToString(/* @__PURE__ */ new Set());\n function isSet(value) {\n if (typeof Set === \"undefined\") {\n return false;\n }\n return isSetToString.working ? isSetToString(value) : value instanceof Set;\n }\n exports.isSet = isSet;\n function isWeakMapToString(value) {\n return ObjectToString(value) === \"[object WeakMap]\";\n }\n isWeakMapToString.working = typeof WeakMap !== \"undefined\" && isWeakMapToString(/* @__PURE__ */ new WeakMap());\n function isWeakMap(value) {\n if (typeof WeakMap === \"undefined\") {\n return false;\n }\n return isWeakMapToString.working ? isWeakMapToString(value) : value instanceof WeakMap;\n }\n exports.isWeakMap = isWeakMap;\n function isWeakSetToString(value) {\n return ObjectToString(value) === \"[object WeakSet]\";\n }\n isWeakSetToString.working = typeof WeakSet !== \"undefined\" && isWeakSetToString(/* @__PURE__ */ new WeakSet());\n function isWeakSet(value) {\n return isWeakSetToString(value);\n }\n exports.isWeakSet = isWeakSet;\n function isArrayBufferToString(value) {\n return ObjectToString(value) === \"[object ArrayBuffer]\";\n }\n isArrayBufferToString.working = typeof ArrayBuffer !== \"undefined\" && isArrayBufferToString(new ArrayBuffer());\n function isArrayBuffer(value) {\n if (typeof ArrayBuffer === \"undefined\") {\n return false;\n }\n return isArrayBufferToString.working ? isArrayBufferToString(value) : value instanceof ArrayBuffer;\n }\n exports.isArrayBuffer = isArrayBuffer;\n function isDataViewToString(value) {\n return ObjectToString(value) === \"[object DataView]\";\n }\n isDataViewToString.working = typeof ArrayBuffer !== \"undefined\" && typeof DataView !== \"undefined\" && isDataViewToString(new DataView(new ArrayBuffer(1), 0, 1));\n function isDataView(value) {\n if (typeof DataView === \"undefined\") {\n return false;\n }\n return isDataViewToString.working ? isDataViewToString(value) : value instanceof DataView;\n }\n exports.isDataView = isDataView;\n var SharedArrayBufferCopy = typeof SharedArrayBuffer !== \"undefined\" ? SharedArrayBuffer : void 0;\n function isSharedArrayBufferToString(value) {\n return ObjectToString(value) === \"[object SharedArrayBuffer]\";\n }\n function isSharedArrayBuffer(value) {\n if (typeof SharedArrayBufferCopy === \"undefined\") {\n return false;\n }\n if (typeof isSharedArrayBufferToString.working === \"undefined\") {\n isSharedArrayBufferToString.working = isSharedArrayBufferToString(new SharedArrayBufferCopy());\n }\n return isSharedArrayBufferToString.working ? isSharedArrayBufferToString(value) : value instanceof SharedArrayBufferCopy;\n }\n exports.isSharedArrayBuffer = isSharedArrayBuffer;\n function isAsyncFunction(value) {\n return ObjectToString(value) === \"[object AsyncFunction]\";\n }\n exports.isAsyncFunction = isAsyncFunction;\n function isMapIterator(value) {\n return ObjectToString(value) === \"[object Map Iterator]\";\n }\n exports.isMapIterator = isMapIterator;\n function isSetIterator(value) {\n return ObjectToString(value) === \"[object Set Iterator]\";\n }\n exports.isSetIterator = isSetIterator;\n function isGeneratorObject(value) {\n return ObjectToString(value) === \"[object Generator]\";\n }\n exports.isGeneratorObject = isGeneratorObject;\n function isWebAssemblyCompiledModule(value) {\n return ObjectToString(value) === \"[object WebAssembly.Module]\";\n }\n exports.isWebAssemblyCompiledModule = isWebAssemblyCompiledModule;\n function isNumberObject(value) {\n return checkBoxedPrimitive(value, numberValue);\n }\n exports.isNumberObject = isNumberObject;\n function isStringObject(value) {\n return checkBoxedPrimitive(value, stringValue);\n }\n exports.isStringObject = isStringObject;\n function isBooleanObject(value) {\n return checkBoxedPrimitive(value, booleanValue);\n }\n exports.isBooleanObject = isBooleanObject;\n function isBigIntObject(value) {\n return BigIntSupported && checkBoxedPrimitive(value, bigIntValue);\n }\n exports.isBigIntObject = isBigIntObject;\n function isSymbolObject(value) {\n return SymbolSupported && checkBoxedPrimitive(value, symbolValue);\n }\n exports.isSymbolObject = isSymbolObject;\n function isBoxedPrimitive(value) {\n return isNumberObject(value) || isStringObject(value) || isBooleanObject(value) || isBigIntObject(value) || isSymbolObject(value);\n }\n exports.isBoxedPrimitive = isBoxedPrimitive;\n function isAnyArrayBuffer(value) {\n return typeof Uint8Array !== \"undefined\" && (isArrayBuffer(value) || isSharedArrayBuffer(value));\n }\n exports.isAnyArrayBuffer = isAnyArrayBuffer;\n [\"isProxy\", \"isExternal\", \"isModuleNamespaceObject\"].forEach(function(method) {\n Object.defineProperty(exports, method, {\n enumerable: false,\n value: function() {\n throw new Error(method + \" is not supported in userland\");\n }\n });\n });\n }\n });\n\n // node_modules/util/support/isBufferBrowser.js\n var require_isBufferBrowser = __commonJS({\n \"node_modules/util/support/isBufferBrowser.js\"(exports, module) {\n module.exports = function isBuffer(arg) {\n return arg && typeof arg === \"object\" && typeof arg.copy === \"function\" && typeof arg.fill === \"function\" && typeof arg.readUInt8 === \"function\";\n };\n }\n });\n\n // node_modules/inherits/inherits_browser.js\n var require_inherits_browser = __commonJS({\n \"node_modules/inherits/inherits_browser.js\"(exports, module) {\n if (typeof Object.create === \"function\") {\n module.exports = function inherits(ctor, superCtor) {\n if (superCtor) {\n ctor.super_ = superCtor;\n ctor.prototype = Object.create(superCtor.prototype, {\n constructor: {\n value: ctor,\n enumerable: false,\n writable: true,\n configurable: true\n }\n });\n }\n };\n } else {\n module.exports = function inherits(ctor, superCtor) {\n if (superCtor) {\n ctor.super_ = superCtor;\n var TempCtor = function() {\n };\n TempCtor.prototype = superCtor.prototype;\n ctor.prototype = new TempCtor();\n ctor.prototype.constructor = ctor;\n }\n };\n }\n }\n });\n\n // node_modules/util/util.js\n var require_util = __commonJS({\n \"node_modules/util/util.js\"(exports) {\n var getOwnPropertyDescriptors = Object.getOwnPropertyDescriptors || function getOwnPropertyDescriptors2(obj) {\n var keys = Object.keys(obj);\n var descriptors = {};\n for (var i = 0; i < keys.length; i++) {\n descriptors[keys[i]] = Object.getOwnPropertyDescriptor(obj, keys[i]);\n }\n return descriptors;\n };\n var formatRegExp = /%[sdj%]/g;\n exports.format = function(f) {\n if (!isString(f)) {\n var objects = [];\n for (var i = 0; i < arguments.length; i++) {\n objects.push(inspect(arguments[i]));\n }\n return objects.join(\" \");\n }\n var i = 1;\n var args = arguments;\n var len = args.length;\n var str = String(f).replace(formatRegExp, function(x2) {\n if (x2 === \"%%\") return \"%\";\n if (i >= len) return x2;\n switch (x2) {\n case \"%s\":\n return String(args[i++]);\n case \"%d\":\n return Number(args[i++]);\n case \"%j\":\n try {\n return JSON.stringify(args[i++]);\n } catch (_) {\n return \"[Circular]\";\n }\n default:\n return x2;\n }\n });\n for (var x = args[i]; i < len; x = args[++i]) {\n if (isNull(x) || !isObject(x)) {\n str += \" \" + x;\n } else {\n str += \" \" + inspect(x);\n }\n }\n return str;\n };\n exports.deprecate = function(fn, msg) {\n if (typeof process !== \"undefined\" && process.noDeprecation === true) {\n return fn;\n }\n if (typeof process === \"undefined\") {\n return function() {\n return exports.deprecate(fn, msg).apply(this, arguments);\n };\n }\n var warned = false;\n function deprecated() {\n if (!warned) {\n if (process.throwDeprecation) {\n throw new Error(msg);\n } else if (process.traceDeprecation) {\n console.trace(msg);\n } else {\n console.error(msg);\n }\n warned = true;\n }\n return fn.apply(this, arguments);\n }\n return deprecated;\n };\n var debugs = {};\n var debugEnvRegex = /^$/;\n if (\"false\") {\n debugEnv = \"false\";\n debugEnv = debugEnv.replace(/[|\\\\{}()[\\]^$+?.]/g, \"\\\\$&\").replace(/\\*/g, \".*\").replace(/,/g, \"$|^\").toUpperCase();\n debugEnvRegex = new RegExp(\"^\" + debugEnv + \"$\", \"i\");\n }\n var debugEnv;\n exports.debuglog = function(set) {\n set = set.toUpperCase();\n if (!debugs[set]) {\n if (debugEnvRegex.test(set)) {\n var pid = process.pid;\n debugs[set] = function() {\n var msg = exports.format.apply(exports, arguments);\n console.error(\"%s %d: %s\", set, pid, msg);\n };\n } else {\n debugs[set] = function() {\n };\n }\n }\n return debugs[set];\n };\n function inspect(obj, opts) {\n var ctx = {\n seen: [],\n stylize: stylizeNoColor\n };\n if (arguments.length >= 3) ctx.depth = arguments[2];\n if (arguments.length >= 4) ctx.colors = arguments[3];\n if (isBoolean(opts)) {\n ctx.showHidden = opts;\n } else if (opts) {\n exports._extend(ctx, opts);\n }\n if (isUndefined(ctx.showHidden)) ctx.showHidden = false;\n if (isUndefined(ctx.depth)) ctx.depth = 2;\n if (isUndefined(ctx.colors)) ctx.colors = false;\n if (isUndefined(ctx.customInspect)) ctx.customInspect = true;\n if (ctx.colors) ctx.stylize = stylizeWithColor;\n return formatValue(ctx, obj, ctx.depth);\n }\n exports.inspect = inspect;\n inspect.colors = {\n \"bold\": [1, 22],\n \"italic\": [3, 23],\n \"underline\": [4, 24],\n \"inverse\": [7, 27],\n \"white\": [37, 39],\n \"grey\": [90, 39],\n \"black\": [30, 39],\n \"blue\": [34, 39],\n \"cyan\": [36, 39],\n \"green\": [32, 39],\n \"magenta\": [35, 39],\n \"red\": [31, 39],\n \"yellow\": [33, 39]\n };\n inspect.styles = {\n \"special\": \"cyan\",\n \"number\": \"yellow\",\n \"boolean\": \"yellow\",\n \"undefined\": \"grey\",\n \"null\": \"bold\",\n \"string\": \"green\",\n \"date\": \"magenta\",\n // \"name\": intentionally not styling\n \"regexp\": \"red\"\n };\n function stylizeWithColor(str, styleType) {\n var style = inspect.styles[styleType];\n if (style) {\n return \"\\x1B[\" + inspect.colors[style][0] + \"m\" + str + \"\\x1B[\" + inspect.colors[style][1] + \"m\";\n } else {\n return str;\n }\n }\n function stylizeNoColor(str, styleType) {\n return str;\n }\n function arrayToHash(array) {\n var hash = {};\n array.forEach(function(val, idx) {\n hash[val] = true;\n });\n return hash;\n }\n function formatValue(ctx, value, recurseTimes) {\n if (ctx.customInspect && value && isFunction(value.inspect) && // Filter out the util module, it's inspect function is special\n value.inspect !== exports.inspect && // Also filter out any prototype objects using the circular check.\n !(value.constructor && value.constructor.prototype === value)) {\n var ret = value.inspect(recurseTimes, ctx);\n if (!isString(ret)) {\n ret = formatValue(ctx, ret, recurseTimes);\n }\n return ret;\n }\n var primitive = formatPrimitive(ctx, value);\n if (primitive) {\n return primitive;\n }\n var keys = Object.keys(value);\n var visibleKeys = arrayToHash(keys);\n if (ctx.showHidden) {\n keys = Object.getOwnPropertyNames(value);\n }\n if (isError(value) && (keys.indexOf(\"message\") >= 0 || keys.indexOf(\"description\") >= 0)) {\n return formatError(value);\n }\n if (keys.length === 0) {\n if (isFunction(value)) {\n var name = value.name ? \": \" + value.name : \"\";\n return ctx.stylize(\"[Function\" + name + \"]\", \"special\");\n }\n if (isRegExp(value)) {\n return ctx.stylize(RegExp.prototype.toString.call(value), \"regexp\");\n }\n if (isDate(value)) {\n return ctx.stylize(Date.prototype.toString.call(value), \"date\");\n }\n if (isError(value)) {\n return formatError(value);\n }\n }\n var base = \"\", array = false, braces = [\"{\", \"}\"];\n if (isArray(value)) {\n array = true;\n braces = [\"[\", \"]\"];\n }\n if (isFunction(value)) {\n var n = value.name ? \": \" + value.name : \"\";\n base = \" [Function\" + n + \"]\";\n }\n if (isRegExp(value)) {\n base = \" \" + RegExp.prototype.toString.call(value);\n }\n if (isDate(value)) {\n base = \" \" + Date.prototype.toUTCString.call(value);\n }\n if (isError(value)) {\n base = \" \" + formatError(value);\n }\n if (keys.length === 0 && (!array || value.length == 0)) {\n return braces[0] + base + braces[1];\n }\n if (recurseTimes < 0) {\n if (isRegExp(value)) {\n return ctx.stylize(RegExp.prototype.toString.call(value), \"regexp\");\n } else {\n return ctx.stylize(\"[Object]\", \"special\");\n }\n }\n ctx.seen.push(value);\n var output;\n if (array) {\n output = formatArray(ctx, value, recurseTimes, visibleKeys, keys);\n } else {\n output = keys.map(function(key) {\n return formatProperty(ctx, value, recurseTimes, visibleKeys, key, array);\n });\n }\n ctx.seen.pop();\n return reduceToSingleString(output, base, braces);\n }\n function formatPrimitive(ctx, value) {\n if (isUndefined(value))\n return ctx.stylize(\"undefined\", \"undefined\");\n if (isString(value)) {\n var simple = \"'\" + JSON.stringify(value).replace(/^\"|\"$/g, \"\").replace(/'/g, \"\\\\'\").replace(/\\\\\"/g, '\"') + \"'\";\n return ctx.stylize(simple, \"string\");\n }\n if (isNumber(value))\n return ctx.stylize(\"\" + value, \"number\");\n if (isBoolean(value))\n return ctx.stylize(\"\" + value, \"boolean\");\n if (isNull(value))\n return ctx.stylize(\"null\", \"null\");\n }\n function formatError(value) {\n return \"[\" + Error.prototype.toString.call(value) + \"]\";\n }\n function formatArray(ctx, value, recurseTimes, visibleKeys, keys) {\n var output = [];\n for (var i = 0, l = value.length; i < l; ++i) {\n if (hasOwnProperty2(value, String(i))) {\n output.push(formatProperty(\n ctx,\n value,\n recurseTimes,\n visibleKeys,\n String(i),\n true\n ));\n } else {\n output.push(\"\");\n }\n }\n keys.forEach(function(key) {\n if (!key.match(/^\\d+$/)) {\n output.push(formatProperty(\n ctx,\n value,\n recurseTimes,\n visibleKeys,\n key,\n true\n ));\n }\n });\n return output;\n }\n function formatProperty(ctx, value, recurseTimes, visibleKeys, key, array) {\n var name, str, desc;\n desc = Object.getOwnPropertyDescriptor(value, key) || { value: value[key] };\n if (desc.get) {\n if (desc.set) {\n str = ctx.stylize(\"[Getter/Setter]\", \"special\");\n } else {\n str = ctx.stylize(\"[Getter]\", \"special\");\n }\n } else {\n if (desc.set) {\n str = ctx.stylize(\"[Setter]\", \"special\");\n }\n }\n if (!hasOwnProperty2(visibleKeys, key)) {\n name = \"[\" + key + \"]\";\n }\n if (!str) {\n if (ctx.seen.indexOf(desc.value) < 0) {\n if (isNull(recurseTimes)) {\n str = formatValue(ctx, desc.value, null);\n } else {\n str = formatValue(ctx, desc.value, recurseTimes - 1);\n }\n if (str.indexOf(\"\\n\") > -1) {\n if (array) {\n str = str.split(\"\\n\").map(function(line) {\n return \" \" + line;\n }).join(\"\\n\").slice(2);\n } else {\n str = \"\\n\" + str.split(\"\\n\").map(function(line) {\n return \" \" + line;\n }).join(\"\\n\");\n }\n }\n } else {\n str = ctx.stylize(\"[Circular]\", \"special\");\n }\n }\n if (isUndefined(name)) {\n if (array && key.match(/^\\d+$/)) {\n return str;\n }\n name = JSON.stringify(\"\" + key);\n if (name.match(/^\"([a-zA-Z_][a-zA-Z_0-9]*)\"$/)) {\n name = name.slice(1, -1);\n name = ctx.stylize(name, \"name\");\n } else {\n name = name.replace(/'/g, \"\\\\'\").replace(/\\\\\"/g, '\"').replace(/(^\"|\"$)/g, \"'\");\n name = ctx.stylize(name, \"string\");\n }\n }\n return name + \": \" + str;\n }\n function reduceToSingleString(output, base, braces) {\n var numLinesEst = 0;\n var length = output.reduce(function(prev, cur) {\n numLinesEst++;\n if (cur.indexOf(\"\\n\") >= 0) numLinesEst++;\n return prev + cur.replace(/\\u001b\\[\\d\\d?m/g, \"\").length + 1;\n }, 0);\n if (length > 60) {\n return braces[0] + (base === \"\" ? \"\" : base + \"\\n \") + \" \" + output.join(\",\\n \") + \" \" + braces[1];\n }\n return braces[0] + base + \" \" + output.join(\", \") + \" \" + braces[1];\n }\n exports.types = require_types();\n function isArray(ar) {\n return Array.isArray(ar);\n }\n exports.isArray = isArray;\n function isBoolean(arg) {\n return typeof arg === \"boolean\";\n }\n exports.isBoolean = isBoolean;\n function isNull(arg) {\n return arg === null;\n }\n exports.isNull = isNull;\n function isNullOrUndefined(arg) {\n return arg == null;\n }\n exports.isNullOrUndefined = isNullOrUndefined;\n function isNumber(arg) {\n return typeof arg === \"number\";\n }\n exports.isNumber = isNumber;\n function isString(arg) {\n return typeof arg === \"string\";\n }\n exports.isString = isString;\n function isSymbol(arg) {\n return typeof arg === \"symbol\";\n }\n exports.isSymbol = isSymbol;\n function isUndefined(arg) {\n return arg === void 0;\n }\n exports.isUndefined = isUndefined;\n function isRegExp(re) {\n return isObject(re) && objectToString(re) === \"[object RegExp]\";\n }\n exports.isRegExp = isRegExp;\n exports.types.isRegExp = isRegExp;\n function isObject(arg) {\n return typeof arg === \"object\" && arg !== null;\n }\n exports.isObject = isObject;\n function isDate(d) {\n return isObject(d) && objectToString(d) === \"[object Date]\";\n }\n exports.isDate = isDate;\n exports.types.isDate = isDate;\n function isError(e) {\n return isObject(e) && (objectToString(e) === \"[object Error]\" || e instanceof Error);\n }\n exports.isError = isError;\n exports.types.isNativeError = isError;\n function isFunction(arg) {\n return typeof arg === \"function\";\n }\n exports.isFunction = isFunction;\n function isPrimitive(arg) {\n return arg === null || typeof arg === \"boolean\" || typeof arg === \"number\" || typeof arg === \"string\" || typeof arg === \"symbol\" || // ES6 symbol\n typeof arg === \"undefined\";\n }\n exports.isPrimitive = isPrimitive;\n exports.isBuffer = require_isBufferBrowser();\n function objectToString(o) {\n return Object.prototype.toString.call(o);\n }\n function pad(n) {\n return n < 10 ? \"0\" + n.toString(10) : n.toString(10);\n }\n var months = [\n \"Jan\",\n \"Feb\",\n \"Mar\",\n \"Apr\",\n \"May\",\n \"Jun\",\n \"Jul\",\n \"Aug\",\n \"Sep\",\n \"Oct\",\n \"Nov\",\n \"Dec\"\n ];\n function timestamp() {\n var d = /* @__PURE__ */ new Date();\n var time = [\n pad(d.getHours()),\n pad(d.getMinutes()),\n pad(d.getSeconds())\n ].join(\":\");\n return [d.getDate(), months[d.getMonth()], time].join(\" \");\n }\n exports.log = function() {\n console.log(\"%s - %s\", timestamp(), exports.format.apply(exports, arguments));\n };\n exports.inherits = require_inherits_browser();\n exports._extend = function(origin, add) {\n if (!add || !isObject(add)) return origin;\n var keys = Object.keys(add);\n var i = keys.length;\n while (i--) {\n origin[keys[i]] = add[keys[i]];\n }\n return origin;\n };\n function hasOwnProperty2(obj, prop) {\n return Object.prototype.hasOwnProperty.call(obj, prop);\n }\n var kCustomPromisifiedSymbol = typeof Symbol !== \"undefined\" ? Symbol(\"util.promisify.custom\") : void 0;\n exports.promisify = function promisify(original) {\n if (typeof original !== \"function\")\n throw new TypeError('The \"original\" argument must be of type Function');\n if (kCustomPromisifiedSymbol && original[kCustomPromisifiedSymbol]) {\n var fn = original[kCustomPromisifiedSymbol];\n if (typeof fn !== \"function\") {\n throw new TypeError('The \"util.promisify.custom\" argument must be of type Function');\n }\n Object.defineProperty(fn, kCustomPromisifiedSymbol, {\n value: fn,\n enumerable: false,\n writable: false,\n configurable: true\n });\n return fn;\n }\n function fn() {\n var promiseResolve, promiseReject;\n var promise = new Promise(function(resolve, reject) {\n promiseResolve = resolve;\n promiseReject = reject;\n });\n var args = [];\n for (var i = 0; i < arguments.length; i++) {\n args.push(arguments[i]);\n }\n args.push(function(err, value) {\n if (err) {\n promiseReject(err);\n } else {\n promiseResolve(value);\n }\n });\n try {\n original.apply(this, args);\n } catch (err) {\n promiseReject(err);\n }\n return promise;\n }\n Object.setPrototypeOf(fn, Object.getPrototypeOf(original));\n if (kCustomPromisifiedSymbol) Object.defineProperty(fn, kCustomPromisifiedSymbol, {\n value: fn,\n enumerable: false,\n writable: false,\n configurable: true\n });\n return Object.defineProperties(\n fn,\n getOwnPropertyDescriptors(original)\n );\n };\n exports.promisify.custom = kCustomPromisifiedSymbol;\n function callbackifyOnRejected(reason, cb) {\n if (!reason) {\n var newReason = new Error(\"Promise was rejected with a falsy value\");\n newReason.reason = reason;\n reason = newReason;\n }\n return cb(reason);\n }\n function callbackify(original) {\n if (typeof original !== \"function\") {\n throw new TypeError('The \"original\" argument must be of type Function');\n }\n function callbackified() {\n var args = [];\n for (var i = 0; i < arguments.length; i++) {\n args.push(arguments[i]);\n }\n var maybeCb = args.pop();\n if (typeof maybeCb !== \"function\") {\n throw new TypeError(\"The last argument must be of type Function\");\n }\n var self2 = this;\n var cb = function() {\n return maybeCb.apply(self2, arguments);\n };\n original.apply(this, args).then(\n function(ret) {\n process.nextTick(cb.bind(null, null, ret));\n },\n function(rej) {\n process.nextTick(callbackifyOnRejected.bind(null, rej, cb));\n }\n );\n }\n Object.setPrototypeOf(callbackified, Object.getPrototypeOf(original));\n Object.defineProperties(\n callbackified,\n getOwnPropertyDescriptors(original)\n );\n return callbackified;\n }\n exports.callbackify = callbackify;\n }\n });\n\n // node_modules/assert/build/internal/errors.js\n var require_errors = __commonJS({\n \"node_modules/assert/build/internal/errors.js\"(exports, module) {\n \"use strict\";\n function _typeof(o) {\n \"@babel/helpers - typeof\";\n return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function(o2) {\n return typeof o2;\n } : function(o2) {\n return o2 && \"function\" == typeof Symbol && o2.constructor === Symbol && o2 !== Symbol.prototype ? \"symbol\" : typeof o2;\n }, _typeof(o);\n }\n function _defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n Object.defineProperty(target, _toPropertyKey(descriptor.key), descriptor);\n }\n }\n function _createClass(Constructor, protoProps, staticProps) {\n if (protoProps) _defineProperties(Constructor.prototype, protoProps);\n if (staticProps) _defineProperties(Constructor, staticProps);\n Object.defineProperty(Constructor, \"prototype\", { writable: false });\n return Constructor;\n }\n function _toPropertyKey(arg) {\n var key = _toPrimitive(arg, \"string\");\n return _typeof(key) === \"symbol\" ? key : String(key);\n }\n function _toPrimitive(input, hint) {\n if (_typeof(input) !== \"object\" || input === null) return input;\n var prim = input[Symbol.toPrimitive];\n if (prim !== void 0) {\n var res = prim.call(input, hint || \"default\");\n if (_typeof(res) !== \"object\") return res;\n throw new TypeError(\"@@toPrimitive must return a primitive value.\");\n }\n return (hint === \"string\" ? String : Number)(input);\n }\n function _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n }\n function _inherits(subClass, superClass) {\n if (typeof superClass !== \"function\" && superClass !== null) {\n throw new TypeError(\"Super expression must either be null or a function\");\n }\n subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } });\n Object.defineProperty(subClass, \"prototype\", { writable: false });\n if (superClass) _setPrototypeOf(subClass, superClass);\n }\n function _setPrototypeOf(o, p) {\n _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function _setPrototypeOf2(o2, p2) {\n o2.__proto__ = p2;\n return o2;\n };\n return _setPrototypeOf(o, p);\n }\n function _createSuper(Derived) {\n var hasNativeReflectConstruct = _isNativeReflectConstruct();\n return function _createSuperInternal() {\n var Super = _getPrototypeOf(Derived), result;\n if (hasNativeReflectConstruct) {\n var NewTarget = _getPrototypeOf(this).constructor;\n result = Reflect.construct(Super, arguments, NewTarget);\n } else {\n result = Super.apply(this, arguments);\n }\n return _possibleConstructorReturn(this, result);\n };\n }\n function _possibleConstructorReturn(self2, call) {\n if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) {\n return call;\n } else if (call !== void 0) {\n throw new TypeError(\"Derived constructors may only return object or undefined\");\n }\n return _assertThisInitialized(self2);\n }\n function _assertThisInitialized(self2) {\n if (self2 === void 0) {\n throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n }\n return self2;\n }\n function _isNativeReflectConstruct() {\n if (typeof Reflect === \"undefined\" || !Reflect.construct) return false;\n if (Reflect.construct.sham) return false;\n if (typeof Proxy === \"function\") return true;\n try {\n Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function() {\n }));\n return true;\n } catch (e) {\n return false;\n }\n }\n function _getPrototypeOf(o) {\n _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf.bind() : function _getPrototypeOf2(o2) {\n return o2.__proto__ || Object.getPrototypeOf(o2);\n };\n return _getPrototypeOf(o);\n }\n var codes = {};\n var assert;\n var util;\n function createErrorType(code, message, Base) {\n if (!Base) {\n Base = Error;\n }\n function getMessage(arg1, arg2, arg3) {\n if (typeof message === \"string\") {\n return message;\n } else {\n return message(arg1, arg2, arg3);\n }\n }\n var NodeError = /* @__PURE__ */ function(_Base) {\n _inherits(NodeError2, _Base);\n var _super = _createSuper(NodeError2);\n function NodeError2(arg1, arg2, arg3) {\n var _this;\n _classCallCheck(this, NodeError2);\n _this = _super.call(this, getMessage(arg1, arg2, arg3));\n _this.code = code;\n return _this;\n }\n return _createClass(NodeError2);\n }(Base);\n codes[code] = NodeError;\n }\n function oneOf(expected, thing) {\n if (Array.isArray(expected)) {\n var len = expected.length;\n expected = expected.map(function(i) {\n return String(i);\n });\n if (len > 2) {\n return \"one of \".concat(thing, \" \").concat(expected.slice(0, len - 1).join(\", \"), \", or \") + expected[len - 1];\n } else if (len === 2) {\n return \"one of \".concat(thing, \" \").concat(expected[0], \" or \").concat(expected[1]);\n } else {\n return \"of \".concat(thing, \" \").concat(expected[0]);\n }\n } else {\n return \"of \".concat(thing, \" \").concat(String(expected));\n }\n }\n function startsWith(str, search, pos) {\n return str.substr(!pos || pos < 0 ? 0 : +pos, search.length) === search;\n }\n function endsWith(str, search, this_len) {\n if (this_len === void 0 || this_len > str.length) {\n this_len = str.length;\n }\n return str.substring(this_len - search.length, this_len) === search;\n }\n function includes(str, search, start) {\n if (typeof start !== \"number\") {\n start = 0;\n }\n if (start + search.length > str.length) {\n return false;\n } else {\n return str.indexOf(search, start) !== -1;\n }\n }\n createErrorType(\"ERR_AMBIGUOUS_ARGUMENT\", 'The \"%s\" argument is ambiguous. %s', TypeError);\n createErrorType(\"ERR_INVALID_ARG_TYPE\", function(name, expected, actual) {\n if (assert === void 0) assert = require_assert();\n assert(typeof name === \"string\", \"'name' must be a string\");\n var determiner;\n if (typeof expected === \"string\" && startsWith(expected, \"not \")) {\n determiner = \"must not be\";\n expected = expected.replace(/^not /, \"\");\n } else {\n determiner = \"must be\";\n }\n var msg;\n if (endsWith(name, \" argument\")) {\n msg = \"The \".concat(name, \" \").concat(determiner, \" \").concat(oneOf(expected, \"type\"));\n } else {\n var type = includes(name, \".\") ? \"property\" : \"argument\";\n msg = 'The \"'.concat(name, '\" ').concat(type, \" \").concat(determiner, \" \").concat(oneOf(expected, \"type\"));\n }\n msg += \". Received type \".concat(_typeof(actual));\n return msg;\n }, TypeError);\n createErrorType(\"ERR_INVALID_ARG_VALUE\", function(name, value) {\n var reason = arguments.length > 2 && arguments[2] !== void 0 ? arguments[2] : \"is invalid\";\n if (util === void 0) util = require_util();\n var inspected = util.inspect(value);\n if (inspected.length > 128) {\n inspected = \"\".concat(inspected.slice(0, 128), \"...\");\n }\n return \"The argument '\".concat(name, \"' \").concat(reason, \". Received \").concat(inspected);\n }, TypeError, RangeError);\n createErrorType(\"ERR_INVALID_RETURN_VALUE\", function(input, name, value) {\n var type;\n if (value && value.constructor && value.constructor.name) {\n type = \"instance of \".concat(value.constructor.name);\n } else {\n type = \"type \".concat(_typeof(value));\n }\n return \"Expected \".concat(input, ' to be returned from the \"').concat(name, '\"') + \" function but got \".concat(type, \".\");\n }, TypeError);\n createErrorType(\"ERR_MISSING_ARGS\", function() {\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n if (assert === void 0) assert = require_assert();\n assert(args.length > 0, \"At least one arg needs to be specified\");\n var msg = \"The \";\n var len = args.length;\n args = args.map(function(a) {\n return '\"'.concat(a, '\"');\n });\n switch (len) {\n case 1:\n msg += \"\".concat(args[0], \" argument\");\n break;\n case 2:\n msg += \"\".concat(args[0], \" and \").concat(args[1], \" arguments\");\n break;\n default:\n msg += args.slice(0, len - 1).join(\", \");\n msg += \", and \".concat(args[len - 1], \" arguments\");\n break;\n }\n return \"\".concat(msg, \" must be specified\");\n }, TypeError);\n module.exports.codes = codes;\n }\n });\n\n // node_modules/assert/build/internal/assert/assertion_error.js\n var require_assertion_error = __commonJS({\n \"node_modules/assert/build/internal/assert/assertion_error.js\"(exports, module) {\n \"use strict\";\n function ownKeys(e, r) {\n var t = Object.keys(e);\n if (Object.getOwnPropertySymbols) {\n var o = Object.getOwnPropertySymbols(e);\n r && (o = o.filter(function(r2) {\n return Object.getOwnPropertyDescriptor(e, r2).enumerable;\n })), t.push.apply(t, o);\n }\n return t;\n }\n function _objectSpread(e) {\n for (var r = 1; r < arguments.length; r++) {\n var t = null != arguments[r] ? arguments[r] : {};\n r % 2 ? ownKeys(Object(t), true).forEach(function(r2) {\n _defineProperty(e, r2, t[r2]);\n }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function(r2) {\n Object.defineProperty(e, r2, Object.getOwnPropertyDescriptor(t, r2));\n });\n }\n return e;\n }\n function _defineProperty(obj, key, value) {\n key = _toPropertyKey(key);\n if (key in obj) {\n Object.defineProperty(obj, key, { value, enumerable: true, configurable: true, writable: true });\n } else {\n obj[key] = value;\n }\n return obj;\n }\n function _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n }\n function _defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n Object.defineProperty(target, _toPropertyKey(descriptor.key), descriptor);\n }\n }\n function _createClass(Constructor, protoProps, staticProps) {\n if (protoProps) _defineProperties(Constructor.prototype, protoProps);\n if (staticProps) _defineProperties(Constructor, staticProps);\n Object.defineProperty(Constructor, \"prototype\", { writable: false });\n return Constructor;\n }\n function _toPropertyKey(arg) {\n var key = _toPrimitive(arg, \"string\");\n return _typeof(key) === \"symbol\" ? key : String(key);\n }\n function _toPrimitive(input, hint) {\n if (_typeof(input) !== \"object\" || input === null) return input;\n var prim = input[Symbol.toPrimitive];\n if (prim !== void 0) {\n var res = prim.call(input, hint || \"default\");\n if (_typeof(res) !== \"object\") return res;\n throw new TypeError(\"@@toPrimitive must return a primitive value.\");\n }\n return (hint === \"string\" ? String : Number)(input);\n }\n function _inherits(subClass, superClass) {\n if (typeof superClass !== \"function\" && superClass !== null) {\n throw new TypeError(\"Super expression must either be null or a function\");\n }\n subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } });\n Object.defineProperty(subClass, \"prototype\", { writable: false });\n if (superClass) _setPrototypeOf(subClass, superClass);\n }\n function _createSuper(Derived) {\n var hasNativeReflectConstruct = _isNativeReflectConstruct();\n return function _createSuperInternal() {\n var Super = _getPrototypeOf(Derived), result;\n if (hasNativeReflectConstruct) {\n var NewTarget = _getPrototypeOf(this).constructor;\n result = Reflect.construct(Super, arguments, NewTarget);\n } else {\n result = Super.apply(this, arguments);\n }\n return _possibleConstructorReturn(this, result);\n };\n }\n function _possibleConstructorReturn(self2, call) {\n if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) {\n return call;\n } else if (call !== void 0) {\n throw new TypeError(\"Derived constructors may only return object or undefined\");\n }\n return _assertThisInitialized(self2);\n }\n function _assertThisInitialized(self2) {\n if (self2 === void 0) {\n throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n }\n return self2;\n }\n function _wrapNativeSuper(Class) {\n var _cache = typeof Map === \"function\" ? /* @__PURE__ */ new Map() : void 0;\n _wrapNativeSuper = function _wrapNativeSuper2(Class2) {\n if (Class2 === null || !_isNativeFunction(Class2)) return Class2;\n if (typeof Class2 !== \"function\") {\n throw new TypeError(\"Super expression must either be null or a function\");\n }\n if (typeof _cache !== \"undefined\") {\n if (_cache.has(Class2)) return _cache.get(Class2);\n _cache.set(Class2, Wrapper);\n }\n function Wrapper() {\n return _construct(Class2, arguments, _getPrototypeOf(this).constructor);\n }\n Wrapper.prototype = Object.create(Class2.prototype, { constructor: { value: Wrapper, enumerable: false, writable: true, configurable: true } });\n return _setPrototypeOf(Wrapper, Class2);\n };\n return _wrapNativeSuper(Class);\n }\n function _construct(Parent, args, Class) {\n if (_isNativeReflectConstruct()) {\n _construct = Reflect.construct.bind();\n } else {\n _construct = function _construct2(Parent2, args2, Class2) {\n var a = [null];\n a.push.apply(a, args2);\n var Constructor = Function.bind.apply(Parent2, a);\n var instance = new Constructor();\n if (Class2) _setPrototypeOf(instance, Class2.prototype);\n return instance;\n };\n }\n return _construct.apply(null, arguments);\n }\n function _isNativeReflectConstruct() {\n if (typeof Reflect === \"undefined\" || !Reflect.construct) return false;\n if (Reflect.construct.sham) return false;\n if (typeof Proxy === \"function\") return true;\n try {\n Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function() {\n }));\n return true;\n } catch (e) {\n return false;\n }\n }\n function _isNativeFunction(fn) {\n return Function.toString.call(fn).indexOf(\"[native code]\") !== -1;\n }\n function _setPrototypeOf(o, p) {\n _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function _setPrototypeOf2(o2, p2) {\n o2.__proto__ = p2;\n return o2;\n };\n return _setPrototypeOf(o, p);\n }\n function _getPrototypeOf(o) {\n _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf.bind() : function _getPrototypeOf2(o2) {\n return o2.__proto__ || Object.getPrototypeOf(o2);\n };\n return _getPrototypeOf(o);\n }\n function _typeof(o) {\n \"@babel/helpers - typeof\";\n return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function(o2) {\n return typeof o2;\n } : function(o2) {\n return o2 && \"function\" == typeof Symbol && o2.constructor === Symbol && o2 !== Symbol.prototype ? \"symbol\" : typeof o2;\n }, _typeof(o);\n }\n var _require = require_util();\n var inspect = _require.inspect;\n var _require2 = require_errors();\n var ERR_INVALID_ARG_TYPE = _require2.codes.ERR_INVALID_ARG_TYPE;\n function endsWith(str, search, this_len) {\n if (this_len === void 0 || this_len > str.length) {\n this_len = str.length;\n }\n return str.substring(this_len - search.length, this_len) === search;\n }\n function repeat(str, count) {\n count = Math.floor(count);\n if (str.length == 0 || count == 0) return \"\";\n var maxCount = str.length * count;\n count = Math.floor(Math.log(count) / Math.log(2));\n while (count) {\n str += str;\n count--;\n }\n str += str.substring(0, maxCount - str.length);\n return str;\n }\n var blue = \"\";\n var green = \"\";\n var red = \"\";\n var white = \"\";\n var kReadableOperator = {\n deepStrictEqual: \"Expected values to be strictly deep-equal:\",\n strictEqual: \"Expected values to be strictly equal:\",\n strictEqualObject: 'Expected \"actual\" to be reference-equal to \"expected\":',\n deepEqual: \"Expected values to be loosely deep-equal:\",\n equal: \"Expected values to be loosely equal:\",\n notDeepStrictEqual: 'Expected \"actual\" not to be strictly deep-equal to:',\n notStrictEqual: 'Expected \"actual\" to be strictly unequal to:',\n notStrictEqualObject: 'Expected \"actual\" not to be reference-equal to \"expected\":',\n notDeepEqual: 'Expected \"actual\" not to be loosely deep-equal to:',\n notEqual: 'Expected \"actual\" to be loosely unequal to:',\n notIdentical: \"Values identical but not reference-equal:\"\n };\n var kMaxShortLength = 10;\n function copyError(source) {\n var keys = Object.keys(source);\n var target = Object.create(Object.getPrototypeOf(source));\n keys.forEach(function(key) {\n target[key] = source[key];\n });\n Object.defineProperty(target, \"message\", {\n value: source.message\n });\n return target;\n }\n function inspectValue(val) {\n return inspect(val, {\n compact: false,\n customInspect: false,\n depth: 1e3,\n maxArrayLength: Infinity,\n // Assert compares only enumerable properties (with a few exceptions).\n showHidden: false,\n // Having a long line as error is better than wrapping the line for\n // comparison for now.\n // TODO(BridgeAR): `breakLength` should be limited as soon as soon as we\n // have meta information about the inspected properties (i.e., know where\n // in what line the property starts and ends).\n breakLength: Infinity,\n // Assert does not detect proxies currently.\n showProxy: false,\n sorted: true,\n // Inspect getters as we also check them when comparing entries.\n getters: true\n });\n }\n function createErrDiff(actual, expected, operator) {\n var other = \"\";\n var res = \"\";\n var lastPos = 0;\n var end = \"\";\n var skipped = false;\n var actualInspected = inspectValue(actual);\n var actualLines = actualInspected.split(\"\\n\");\n var expectedLines = inspectValue(expected).split(\"\\n\");\n var i = 0;\n var indicator = \"\";\n if (operator === \"strictEqual\" && _typeof(actual) === \"object\" && _typeof(expected) === \"object\" && actual !== null && expected !== null) {\n operator = \"strictEqualObject\";\n }\n if (actualLines.length === 1 && expectedLines.length === 1 && actualLines[0] !== expectedLines[0]) {\n var inputLength = actualLines[0].length + expectedLines[0].length;\n if (inputLength <= kMaxShortLength) {\n if ((_typeof(actual) !== \"object\" || actual === null) && (_typeof(expected) !== \"object\" || expected === null) && (actual !== 0 || expected !== 0)) {\n return \"\".concat(kReadableOperator[operator], \"\\n\\n\") + \"\".concat(actualLines[0], \" !== \").concat(expectedLines[0], \"\\n\");\n }\n } else if (operator !== \"strictEqualObject\") {\n var maxLength = process.stderr && process.stderr.isTTY ? process.stderr.columns : 80;\n if (inputLength < maxLength) {\n while (actualLines[0][i] === expectedLines[0][i]) {\n i++;\n }\n if (i > 2) {\n indicator = \"\\n \".concat(repeat(\" \", i), \"^\");\n i = 0;\n }\n }\n }\n }\n var a = actualLines[actualLines.length - 1];\n var b = expectedLines[expectedLines.length - 1];\n while (a === b) {\n if (i++ < 2) {\n end = \"\\n \".concat(a).concat(end);\n } else {\n other = a;\n }\n actualLines.pop();\n expectedLines.pop();\n if (actualLines.length === 0 || expectedLines.length === 0) break;\n a = actualLines[actualLines.length - 1];\n b = expectedLines[expectedLines.length - 1];\n }\n var maxLines = Math.max(actualLines.length, expectedLines.length);\n if (maxLines === 0) {\n var _actualLines = actualInspected.split(\"\\n\");\n if (_actualLines.length > 30) {\n _actualLines[26] = \"\".concat(blue, \"...\").concat(white);\n while (_actualLines.length > 27) {\n _actualLines.pop();\n }\n }\n return \"\".concat(kReadableOperator.notIdentical, \"\\n\\n\").concat(_actualLines.join(\"\\n\"), \"\\n\");\n }\n if (i > 3) {\n end = \"\\n\".concat(blue, \"...\").concat(white).concat(end);\n skipped = true;\n }\n if (other !== \"\") {\n end = \"\\n \".concat(other).concat(end);\n other = \"\";\n }\n var printedLines = 0;\n var msg = kReadableOperator[operator] + \"\\n\".concat(green, \"+ actual\").concat(white, \" \").concat(red, \"- expected\").concat(white);\n var skippedMsg = \" \".concat(blue, \"...\").concat(white, \" Lines skipped\");\n for (i = 0; i < maxLines; i++) {\n var cur = i - lastPos;\n if (actualLines.length < i + 1) {\n if (cur > 1 && i > 2) {\n if (cur > 4) {\n res += \"\\n\".concat(blue, \"...\").concat(white);\n skipped = true;\n } else if (cur > 3) {\n res += \"\\n \".concat(expectedLines[i - 2]);\n printedLines++;\n }\n res += \"\\n \".concat(expectedLines[i - 1]);\n printedLines++;\n }\n lastPos = i;\n other += \"\\n\".concat(red, \"-\").concat(white, \" \").concat(expectedLines[i]);\n printedLines++;\n } else if (expectedLines.length < i + 1) {\n if (cur > 1 && i > 2) {\n if (cur > 4) {\n res += \"\\n\".concat(blue, \"...\").concat(white);\n skipped = true;\n } else if (cur > 3) {\n res += \"\\n \".concat(actualLines[i - 2]);\n printedLines++;\n }\n res += \"\\n \".concat(actualLines[i - 1]);\n printedLines++;\n }\n lastPos = i;\n res += \"\\n\".concat(green, \"+\").concat(white, \" \").concat(actualLines[i]);\n printedLines++;\n } else {\n var expectedLine = expectedLines[i];\n var actualLine = actualLines[i];\n var divergingLines = actualLine !== expectedLine && (!endsWith(actualLine, \",\") || actualLine.slice(0, -1) !== expectedLine);\n if (divergingLines && endsWith(expectedLine, \",\") && expectedLine.slice(0, -1) === actualLine) {\n divergingLines = false;\n actualLine += \",\";\n }\n if (divergingLines) {\n if (cur > 1 && i > 2) {\n if (cur > 4) {\n res += \"\\n\".concat(blue, \"...\").concat(white);\n skipped = true;\n } else if (cur > 3) {\n res += \"\\n \".concat(actualLines[i - 2]);\n printedLines++;\n }\n res += \"\\n \".concat(actualLines[i - 1]);\n printedLines++;\n }\n lastPos = i;\n res += \"\\n\".concat(green, \"+\").concat(white, \" \").concat(actualLine);\n other += \"\\n\".concat(red, \"-\").concat(white, \" \").concat(expectedLine);\n printedLines += 2;\n } else {\n res += other;\n other = \"\";\n if (cur === 1 || i === 0) {\n res += \"\\n \".concat(actualLine);\n printedLines++;\n }\n }\n }\n if (printedLines > 20 && i < maxLines - 2) {\n return \"\".concat(msg).concat(skippedMsg, \"\\n\").concat(res, \"\\n\").concat(blue, \"...\").concat(white).concat(other, \"\\n\") + \"\".concat(blue, \"...\").concat(white);\n }\n }\n return \"\".concat(msg).concat(skipped ? skippedMsg : \"\", \"\\n\").concat(res).concat(other).concat(end).concat(indicator);\n }\n var AssertionError = /* @__PURE__ */ function(_Error, _inspect$custom) {\n _inherits(AssertionError2, _Error);\n var _super = _createSuper(AssertionError2);\n function AssertionError2(options) {\n var _this;\n _classCallCheck(this, AssertionError2);\n if (_typeof(options) !== \"object\" || options === null) {\n throw new ERR_INVALID_ARG_TYPE(\"options\", \"Object\", options);\n }\n var message = options.message, operator = options.operator, stackStartFn = options.stackStartFn;\n var actual = options.actual, expected = options.expected;\n var limit = Error.stackTraceLimit;\n Error.stackTraceLimit = 0;\n if (message != null) {\n _this = _super.call(this, String(message));\n } else {\n if (process.stderr && process.stderr.isTTY) {\n if (process.stderr && process.stderr.getColorDepth && process.stderr.getColorDepth() !== 1) {\n blue = \"\\x1B[34m\";\n green = \"\\x1B[32m\";\n white = \"\\x1B[39m\";\n red = \"\\x1B[31m\";\n } else {\n blue = \"\";\n green = \"\";\n white = \"\";\n red = \"\";\n }\n }\n if (_typeof(actual) === \"object\" && actual !== null && _typeof(expected) === \"object\" && expected !== null && \"stack\" in actual && actual instanceof Error && \"stack\" in expected && expected instanceof Error) {\n actual = copyError(actual);\n expected = copyError(expected);\n }\n if (operator === \"deepStrictEqual\" || operator === \"strictEqual\") {\n _this = _super.call(this, createErrDiff(actual, expected, operator));\n } else if (operator === \"notDeepStrictEqual\" || operator === \"notStrictEqual\") {\n var base = kReadableOperator[operator];\n var res = inspectValue(actual).split(\"\\n\");\n if (operator === \"notStrictEqual\" && _typeof(actual) === \"object\" && actual !== null) {\n base = kReadableOperator.notStrictEqualObject;\n }\n if (res.length > 30) {\n res[26] = \"\".concat(blue, \"...\").concat(white);\n while (res.length > 27) {\n res.pop();\n }\n }\n if (res.length === 1) {\n _this = _super.call(this, \"\".concat(base, \" \").concat(res[0]));\n } else {\n _this = _super.call(this, \"\".concat(base, \"\\n\\n\").concat(res.join(\"\\n\"), \"\\n\"));\n }\n } else {\n var _res = inspectValue(actual);\n var other = \"\";\n var knownOperators = kReadableOperator[operator];\n if (operator === \"notDeepEqual\" || operator === \"notEqual\") {\n _res = \"\".concat(kReadableOperator[operator], \"\\n\\n\").concat(_res);\n if (_res.length > 1024) {\n _res = \"\".concat(_res.slice(0, 1021), \"...\");\n }\n } else {\n other = \"\".concat(inspectValue(expected));\n if (_res.length > 512) {\n _res = \"\".concat(_res.slice(0, 509), \"...\");\n }\n if (other.length > 512) {\n other = \"\".concat(other.slice(0, 509), \"...\");\n }\n if (operator === \"deepEqual\" || operator === \"equal\") {\n _res = \"\".concat(knownOperators, \"\\n\\n\").concat(_res, \"\\n\\nshould equal\\n\\n\");\n } else {\n other = \" \".concat(operator, \" \").concat(other);\n }\n }\n _this = _super.call(this, \"\".concat(_res).concat(other));\n }\n }\n Error.stackTraceLimit = limit;\n _this.generatedMessage = !message;\n Object.defineProperty(_assertThisInitialized(_this), \"name\", {\n value: \"AssertionError [ERR_ASSERTION]\",\n enumerable: false,\n writable: true,\n configurable: true\n });\n _this.code = \"ERR_ASSERTION\";\n _this.actual = actual;\n _this.expected = expected;\n _this.operator = operator;\n if (Error.captureStackTrace) {\n Error.captureStackTrace(_assertThisInitialized(_this), stackStartFn);\n }\n _this.stack;\n _this.name = \"AssertionError\";\n return _possibleConstructorReturn(_this);\n }\n _createClass(AssertionError2, [{\n key: \"toString\",\n value: function toString() {\n return \"\".concat(this.name, \" [\").concat(this.code, \"]: \").concat(this.message);\n }\n }, {\n key: _inspect$custom,\n value: function value(recurseTimes, ctx) {\n return inspect(this, _objectSpread(_objectSpread({}, ctx), {}, {\n customInspect: false,\n depth: 0\n }));\n }\n }]);\n return AssertionError2;\n }(/* @__PURE__ */ _wrapNativeSuper(Error), inspect.custom);\n module.exports = AssertionError;\n }\n });\n\n // node_modules/object-keys/isArguments.js\n var require_isArguments = __commonJS({\n \"node_modules/object-keys/isArguments.js\"(exports, module) {\n \"use strict\";\n var toStr = Object.prototype.toString;\n module.exports = function isArguments(value) {\n var str = toStr.call(value);\n var isArgs = str === \"[object Arguments]\";\n if (!isArgs) {\n isArgs = str !== \"[object Array]\" && value !== null && typeof value === \"object\" && typeof value.length === \"number\" && value.length >= 0 && toStr.call(value.callee) === \"[object Function]\";\n }\n return isArgs;\n };\n }\n });\n\n // node_modules/object-keys/implementation.js\n var require_implementation2 = __commonJS({\n \"node_modules/object-keys/implementation.js\"(exports, module) {\n \"use strict\";\n var keysShim;\n if (!Object.keys) {\n has = Object.prototype.hasOwnProperty;\n toStr = Object.prototype.toString;\n isArgs = require_isArguments();\n isEnumerable = Object.prototype.propertyIsEnumerable;\n hasDontEnumBug = !isEnumerable.call({ toString: null }, \"toString\");\n hasProtoEnumBug = isEnumerable.call(function() {\n }, \"prototype\");\n dontEnums = [\n \"toString\",\n \"toLocaleString\",\n \"valueOf\",\n \"hasOwnProperty\",\n \"isPrototypeOf\",\n \"propertyIsEnumerable\",\n \"constructor\"\n ];\n equalsConstructorPrototype = function(o) {\n var ctor = o.constructor;\n return ctor && ctor.prototype === o;\n };\n excludedKeys = {\n $applicationCache: true,\n $console: true,\n $external: true,\n $frame: true,\n $frameElement: true,\n $frames: true,\n $innerHeight: true,\n $innerWidth: true,\n $onmozfullscreenchange: true,\n $onmozfullscreenerror: true,\n $outerHeight: true,\n $outerWidth: true,\n $pageXOffset: true,\n $pageYOffset: true,\n $parent: true,\n $scrollLeft: true,\n $scrollTop: true,\n $scrollX: true,\n $scrollY: true,\n $self: true,\n $webkitIndexedDB: true,\n $webkitStorageInfo: true,\n $window: true\n };\n hasAutomationEqualityBug = function() {\n if (typeof window === \"undefined\") {\n return false;\n }\n for (var k in window) {\n try {\n if (!excludedKeys[\"$\" + k] && has.call(window, k) && window[k] !== null && typeof window[k] === \"object\") {\n try {\n equalsConstructorPrototype(window[k]);\n } catch (e) {\n return true;\n }\n }\n } catch (e) {\n return true;\n }\n }\n return false;\n }();\n equalsConstructorPrototypeIfNotBuggy = function(o) {\n if (typeof window === \"undefined\" || !hasAutomationEqualityBug) {\n return equalsConstructorPrototype(o);\n }\n try {\n return equalsConstructorPrototype(o);\n } catch (e) {\n return false;\n }\n };\n keysShim = function keys(object) {\n var isObject = object !== null && typeof object === \"object\";\n var isFunction = toStr.call(object) === \"[object Function]\";\n var isArguments = isArgs(object);\n var isString = isObject && toStr.call(object) === \"[object String]\";\n var theKeys = [];\n if (!isObject && !isFunction && !isArguments) {\n throw new TypeError(\"Object.keys called on a non-object\");\n }\n var skipProto = hasProtoEnumBug && isFunction;\n if (isString && object.length > 0 && !has.call(object, 0)) {\n for (var i = 0; i < object.length; ++i) {\n theKeys.push(String(i));\n }\n }\n if (isArguments && object.length > 0) {\n for (var j = 0; j < object.length; ++j) {\n theKeys.push(String(j));\n }\n } else {\n for (var name in object) {\n if (!(skipProto && name === \"prototype\") && has.call(object, name)) {\n theKeys.push(String(name));\n }\n }\n }\n if (hasDontEnumBug) {\n var skipConstructor = equalsConstructorPrototypeIfNotBuggy(object);\n for (var k = 0; k < dontEnums.length; ++k) {\n if (!(skipConstructor && dontEnums[k] === \"constructor\") && has.call(object, dontEnums[k])) {\n theKeys.push(dontEnums[k]);\n }\n }\n }\n return theKeys;\n };\n }\n var has;\n var toStr;\n var isArgs;\n var isEnumerable;\n var hasDontEnumBug;\n var hasProtoEnumBug;\n var dontEnums;\n var equalsConstructorPrototype;\n var excludedKeys;\n var hasAutomationEqualityBug;\n var equalsConstructorPrototypeIfNotBuggy;\n module.exports = keysShim;\n }\n });\n\n // node_modules/object-keys/index.js\n var require_object_keys = __commonJS({\n \"node_modules/object-keys/index.js\"(exports, module) {\n \"use strict\";\n var slice = Array.prototype.slice;\n var isArgs = require_isArguments();\n var origKeys = Object.keys;\n var keysShim = origKeys ? function keys(o) {\n return origKeys(o);\n } : require_implementation2();\n var originalKeys = Object.keys;\n keysShim.shim = function shimObjectKeys() {\n if (Object.keys) {\n var keysWorksWithArguments = function() {\n var args = Object.keys(arguments);\n return args && args.length === arguments.length;\n }(1, 2);\n if (!keysWorksWithArguments) {\n Object.keys = function keys(object) {\n if (isArgs(object)) {\n return originalKeys(slice.call(object));\n }\n return originalKeys(object);\n };\n }\n } else {\n Object.keys = keysShim;\n }\n return Object.keys || keysShim;\n };\n module.exports = keysShim;\n }\n });\n\n // node_modules/object.assign/implementation.js\n var require_implementation3 = __commonJS({\n \"node_modules/object.assign/implementation.js\"(exports, module) {\n \"use strict\";\n var objectKeys = require_object_keys();\n var hasSymbols = require_shams()();\n var callBound = require_callBound();\n var toObject = Object;\n var $push = callBound(\"Array.prototype.push\");\n var $propIsEnumerable = callBound(\"Object.prototype.propertyIsEnumerable\");\n var originalGetSymbols = hasSymbols ? Object.getOwnPropertySymbols : null;\n module.exports = function assign(target, source1) {\n if (target == null) {\n throw new TypeError(\"target must be an object\");\n }\n var to = toObject(target);\n if (arguments.length === 1) {\n return to;\n }\n for (var s = 1; s < arguments.length; ++s) {\n var from = toObject(arguments[s]);\n var keys = objectKeys(from);\n var getSymbols = hasSymbols && (Object.getOwnPropertySymbols || originalGetSymbols);\n if (getSymbols) {\n var syms = getSymbols(from);\n for (var j = 0; j < syms.length; ++j) {\n var key = syms[j];\n if ($propIsEnumerable(from, key)) {\n $push(keys, key);\n }\n }\n }\n for (var i = 0; i < keys.length; ++i) {\n var nextKey = keys[i];\n if ($propIsEnumerable(from, nextKey)) {\n var propValue = from[nextKey];\n to[nextKey] = propValue;\n }\n }\n }\n return to;\n };\n }\n });\n\n // node_modules/object.assign/polyfill.js\n var require_polyfill = __commonJS({\n \"node_modules/object.assign/polyfill.js\"(exports, module) {\n \"use strict\";\n var implementation = require_implementation3();\n var lacksProperEnumerationOrder = function() {\n if (!Object.assign) {\n return false;\n }\n var str = \"abcdefghijklmnopqrst\";\n var letters = str.split(\"\");\n var map = {};\n for (var i = 0; i < letters.length; ++i) {\n map[letters[i]] = letters[i];\n }\n var obj = Object.assign({}, map);\n var actual = \"\";\n for (var k in obj) {\n actual += k;\n }\n return str !== actual;\n };\n var assignHasPendingExceptions = function() {\n if (!Object.assign || !Object.preventExtensions) {\n return false;\n }\n var thrower = Object.preventExtensions({ 1: 2 });\n try {\n Object.assign(thrower, \"xy\");\n } catch (e) {\n return thrower[1] === \"y\";\n }\n return false;\n };\n module.exports = function getPolyfill() {\n if (!Object.assign) {\n return implementation;\n }\n if (lacksProperEnumerationOrder()) {\n return implementation;\n }\n if (assignHasPendingExceptions()) {\n return implementation;\n }\n return Object.assign;\n };\n }\n });\n\n // node_modules/object-is/implementation.js\n var require_implementation4 = __commonJS({\n \"node_modules/object-is/implementation.js\"(exports, module) {\n \"use strict\";\n var numberIsNaN = function(value) {\n return value !== value;\n };\n module.exports = function is(a, b) {\n if (a === 0 && b === 0) {\n return 1 / a === 1 / b;\n }\n if (a === b) {\n return true;\n }\n if (numberIsNaN(a) && numberIsNaN(b)) {\n return true;\n }\n return false;\n };\n }\n });\n\n // node_modules/object-is/polyfill.js\n var require_polyfill2 = __commonJS({\n \"node_modules/object-is/polyfill.js\"(exports, module) {\n \"use strict\";\n var implementation = require_implementation4();\n module.exports = function getPolyfill() {\n return typeof Object.is === \"function\" ? Object.is : implementation;\n };\n }\n });\n\n // node_modules/define-properties/index.js\n var require_define_properties = __commonJS({\n \"node_modules/define-properties/index.js\"(exports, module) {\n \"use strict\";\n var keys = require_object_keys();\n var hasSymbols = typeof Symbol === \"function\" && typeof Symbol(\"foo\") === \"symbol\";\n var toStr = Object.prototype.toString;\n var concat = Array.prototype.concat;\n var origDefineProperty = Object.defineProperty;\n var isFunction = function(fn) {\n return typeof fn === \"function\" && toStr.call(fn) === \"[object Function]\";\n };\n var hasPropertyDescriptors = require_has_property_descriptors()();\n var supportsDescriptors = origDefineProperty && hasPropertyDescriptors;\n var defineProperty = function(object, name, value, predicate) {\n if (name in object) {\n if (predicate === true) {\n if (object[name] === value) {\n return;\n }\n } else if (!isFunction(predicate) || !predicate()) {\n return;\n }\n }\n if (supportsDescriptors) {\n origDefineProperty(object, name, {\n configurable: true,\n enumerable: false,\n value,\n writable: true\n });\n } else {\n object[name] = value;\n }\n };\n var defineProperties = function(object, map) {\n var predicates = arguments.length > 2 ? arguments[2] : {};\n var props = keys(map);\n if (hasSymbols) {\n props = concat.call(props, Object.getOwnPropertySymbols(map));\n }\n for (var i = 0; i < props.length; i += 1) {\n defineProperty(object, props[i], map[props[i]], predicates[props[i]]);\n }\n };\n defineProperties.supportsDescriptors = !!supportsDescriptors;\n module.exports = defineProperties;\n }\n });\n\n // node_modules/object-is/shim.js\n var require_shim = __commonJS({\n \"node_modules/object-is/shim.js\"(exports, module) {\n \"use strict\";\n var getPolyfill = require_polyfill2();\n var define2 = require_define_properties();\n module.exports = function shimObjectIs() {\n var polyfill = getPolyfill();\n define2(Object, { is: polyfill }, {\n is: function testObjectIs() {\n return Object.is !== polyfill;\n }\n });\n return polyfill;\n };\n }\n });\n\n // node_modules/object-is/index.js\n var require_object_is = __commonJS({\n \"node_modules/object-is/index.js\"(exports, module) {\n \"use strict\";\n var define2 = require_define_properties();\n var callBind = require_call_bind();\n var implementation = require_implementation4();\n var getPolyfill = require_polyfill2();\n var shim = require_shim();\n var polyfill = callBind(getPolyfill(), Object);\n define2(polyfill, {\n getPolyfill,\n implementation,\n shim\n });\n module.exports = polyfill;\n }\n });\n\n // node_modules/is-nan/implementation.js\n var require_implementation5 = __commonJS({\n \"node_modules/is-nan/implementation.js\"(exports, module) {\n \"use strict\";\n module.exports = function isNaN2(value) {\n return value !== value;\n };\n }\n });\n\n // node_modules/is-nan/polyfill.js\n var require_polyfill3 = __commonJS({\n \"node_modules/is-nan/polyfill.js\"(exports, module) {\n \"use strict\";\n var implementation = require_implementation5();\n module.exports = function getPolyfill() {\n if (Number.isNaN && Number.isNaN(NaN) && !Number.isNaN(\"a\")) {\n return Number.isNaN;\n }\n return implementation;\n };\n }\n });\n\n // node_modules/is-nan/shim.js\n var require_shim2 = __commonJS({\n \"node_modules/is-nan/shim.js\"(exports, module) {\n \"use strict\";\n var define2 = require_define_properties();\n var getPolyfill = require_polyfill3();\n module.exports = function shimNumberIsNaN() {\n var polyfill = getPolyfill();\n define2(Number, { isNaN: polyfill }, {\n isNaN: function testIsNaN() {\n return Number.isNaN !== polyfill;\n }\n });\n return polyfill;\n };\n }\n });\n\n // node_modules/is-nan/index.js\n var require_is_nan = __commonJS({\n \"node_modules/is-nan/index.js\"(exports, module) {\n \"use strict\";\n var callBind = require_call_bind();\n var define2 = require_define_properties();\n var implementation = require_implementation5();\n var getPolyfill = require_polyfill3();\n var shim = require_shim2();\n var polyfill = callBind(getPolyfill(), Number);\n define2(polyfill, {\n getPolyfill,\n implementation,\n shim\n });\n module.exports = polyfill;\n }\n });\n\n // node_modules/assert/build/internal/util/comparisons.js\n var require_comparisons = __commonJS({\n \"node_modules/assert/build/internal/util/comparisons.js\"(exports, module) {\n \"use strict\";\n function _slicedToArray(arr, i) {\n return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest();\n }\n function _nonIterableRest() {\n throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n }\n function _unsupportedIterableToArray(o, minLen) {\n if (!o) return;\n if (typeof o === \"string\") return _arrayLikeToArray(o, minLen);\n var n = Object.prototype.toString.call(o).slice(8, -1);\n if (n === \"Object\" && o.constructor) n = o.constructor.name;\n if (n === \"Map\" || n === \"Set\") return Array.from(o);\n if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen);\n }\n function _arrayLikeToArray(arr, len) {\n if (len == null || len > arr.length) len = arr.length;\n for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i];\n return arr2;\n }\n function _iterableToArrayLimit(r, l) {\n var t = null == r ? null : \"undefined\" != typeof Symbol && r[Symbol.iterator] || r[\"@@iterator\"];\n if (null != t) {\n var e, n, i, u, a = [], f = true, o = false;\n try {\n if (i = (t = t.call(r)).next, 0 === l) {\n if (Object(t) !== t) return;\n f = false;\n } else for (; !(f = (e = i.call(t)).done) && (a.push(e.value), a.length !== l); f = true) ;\n } catch (r2) {\n o = true, n = r2;\n } finally {\n try {\n if (!f && null != t.return && (u = t.return(), Object(u) !== u)) return;\n } finally {\n if (o) throw n;\n }\n }\n return a;\n }\n }\n function _arrayWithHoles(arr) {\n if (Array.isArray(arr)) return arr;\n }\n function _typeof(o) {\n \"@babel/helpers - typeof\";\n return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function(o2) {\n return typeof o2;\n } : function(o2) {\n return o2 && \"function\" == typeof Symbol && o2.constructor === Symbol && o2 !== Symbol.prototype ? \"symbol\" : typeof o2;\n }, _typeof(o);\n }\n var regexFlagsSupported = /a/g.flags !== void 0;\n var arrayFromSet = function arrayFromSet2(set) {\n var array = [];\n set.forEach(function(value) {\n return array.push(value);\n });\n return array;\n };\n var arrayFromMap = function arrayFromMap2(map) {\n var array = [];\n map.forEach(function(value, key) {\n return array.push([key, value]);\n });\n return array;\n };\n var objectIs = Object.is ? Object.is : require_object_is();\n var objectGetOwnPropertySymbols = Object.getOwnPropertySymbols ? Object.getOwnPropertySymbols : function() {\n return [];\n };\n var numberIsNaN = Number.isNaN ? Number.isNaN : require_is_nan();\n function uncurryThis(f) {\n return f.call.bind(f);\n }\n var hasOwnProperty2 = uncurryThis(Object.prototype.hasOwnProperty);\n var propertyIsEnumerable = uncurryThis(Object.prototype.propertyIsEnumerable);\n var objectToString = uncurryThis(Object.prototype.toString);\n var _require$types = require_util().types;\n var isAnyArrayBuffer = _require$types.isAnyArrayBuffer;\n var isArrayBufferView = _require$types.isArrayBufferView;\n var isDate = _require$types.isDate;\n var isMap = _require$types.isMap;\n var isRegExp = _require$types.isRegExp;\n var isSet = _require$types.isSet;\n var isNativeError = _require$types.isNativeError;\n var isBoxedPrimitive = _require$types.isBoxedPrimitive;\n var isNumberObject = _require$types.isNumberObject;\n var isStringObject = _require$types.isStringObject;\n var isBooleanObject = _require$types.isBooleanObject;\n var isBigIntObject = _require$types.isBigIntObject;\n var isSymbolObject = _require$types.isSymbolObject;\n var isFloat32Array = _require$types.isFloat32Array;\n var isFloat64Array = _require$types.isFloat64Array;\n function isNonIndex(key) {\n if (key.length === 0 || key.length > 10) return true;\n for (var i = 0; i < key.length; i++) {\n var code = key.charCodeAt(i);\n if (code < 48 || code > 57) return true;\n }\n return key.length === 10 && key >= Math.pow(2, 32);\n }\n function getOwnNonIndexProperties(value) {\n return Object.keys(value).filter(isNonIndex).concat(objectGetOwnPropertySymbols(value).filter(Object.prototype.propertyIsEnumerable.bind(value)));\n }\n function compare(a, b) {\n if (a === b) {\n return 0;\n }\n var x = a.length;\n var y = b.length;\n for (var i = 0, len = Math.min(x, y); i < len; ++i) {\n if (a[i] !== b[i]) {\n x = a[i];\n y = b[i];\n break;\n }\n }\n if (x < y) {\n return -1;\n }\n if (y < x) {\n return 1;\n }\n return 0;\n }\n var ONLY_ENUMERABLE = void 0;\n var kStrict = true;\n var kLoose = false;\n var kNoIterator = 0;\n var kIsArray = 1;\n var kIsSet = 2;\n var kIsMap = 3;\n function areSimilarRegExps(a, b) {\n return regexFlagsSupported ? a.source === b.source && a.flags === b.flags : RegExp.prototype.toString.call(a) === RegExp.prototype.toString.call(b);\n }\n function areSimilarFloatArrays(a, b) {\n if (a.byteLength !== b.byteLength) {\n return false;\n }\n for (var offset = 0; offset < a.byteLength; offset++) {\n if (a[offset] !== b[offset]) {\n return false;\n }\n }\n return true;\n }\n function areSimilarTypedArrays(a, b) {\n if (a.byteLength !== b.byteLength) {\n return false;\n }\n return compare(new Uint8Array(a.buffer, a.byteOffset, a.byteLength), new Uint8Array(b.buffer, b.byteOffset, b.byteLength)) === 0;\n }\n function areEqualArrayBuffers(buf1, buf2) {\n return buf1.byteLength === buf2.byteLength && compare(new Uint8Array(buf1), new Uint8Array(buf2)) === 0;\n }\n function isEqualBoxedPrimitive(val1, val2) {\n if (isNumberObject(val1)) {\n return isNumberObject(val2) && objectIs(Number.prototype.valueOf.call(val1), Number.prototype.valueOf.call(val2));\n }\n if (isStringObject(val1)) {\n return isStringObject(val2) && String.prototype.valueOf.call(val1) === String.prototype.valueOf.call(val2);\n }\n if (isBooleanObject(val1)) {\n return isBooleanObject(val2) && Boolean.prototype.valueOf.call(val1) === Boolean.prototype.valueOf.call(val2);\n }\n if (isBigIntObject(val1)) {\n return isBigIntObject(val2) && BigInt.prototype.valueOf.call(val1) === BigInt.prototype.valueOf.call(val2);\n }\n return isSymbolObject(val2) && Symbol.prototype.valueOf.call(val1) === Symbol.prototype.valueOf.call(val2);\n }\n function innerDeepEqual(val1, val2, strict, memos) {\n if (val1 === val2) {\n if (val1 !== 0) return true;\n return strict ? objectIs(val1, val2) : true;\n }\n if (strict) {\n if (_typeof(val1) !== \"object\") {\n return typeof val1 === \"number\" && numberIsNaN(val1) && numberIsNaN(val2);\n }\n if (_typeof(val2) !== \"object\" || val1 === null || val2 === null) {\n return false;\n }\n if (Object.getPrototypeOf(val1) !== Object.getPrototypeOf(val2)) {\n return false;\n }\n } else {\n if (val1 === null || _typeof(val1) !== \"object\") {\n if (val2 === null || _typeof(val2) !== \"object\") {\n return val1 == val2;\n }\n return false;\n }\n if (val2 === null || _typeof(val2) !== \"object\") {\n return false;\n }\n }\n var val1Tag = objectToString(val1);\n var val2Tag = objectToString(val2);\n if (val1Tag !== val2Tag) {\n return false;\n }\n if (Array.isArray(val1)) {\n if (val1.length !== val2.length) {\n return false;\n }\n var keys1 = getOwnNonIndexProperties(val1, ONLY_ENUMERABLE);\n var keys2 = getOwnNonIndexProperties(val2, ONLY_ENUMERABLE);\n if (keys1.length !== keys2.length) {\n return false;\n }\n return keyCheck(val1, val2, strict, memos, kIsArray, keys1);\n }\n if (val1Tag === \"[object Object]\") {\n if (!isMap(val1) && isMap(val2) || !isSet(val1) && isSet(val2)) {\n return false;\n }\n }\n if (isDate(val1)) {\n if (!isDate(val2) || Date.prototype.getTime.call(val1) !== Date.prototype.getTime.call(val2)) {\n return false;\n }\n } else if (isRegExp(val1)) {\n if (!isRegExp(val2) || !areSimilarRegExps(val1, val2)) {\n return false;\n }\n } else if (isNativeError(val1) || val1 instanceof Error) {\n if (val1.message !== val2.message || val1.name !== val2.name) {\n return false;\n }\n } else if (isArrayBufferView(val1)) {\n if (!strict && (isFloat32Array(val1) || isFloat64Array(val1))) {\n if (!areSimilarFloatArrays(val1, val2)) {\n return false;\n }\n } else if (!areSimilarTypedArrays(val1, val2)) {\n return false;\n }\n var _keys = getOwnNonIndexProperties(val1, ONLY_ENUMERABLE);\n var _keys2 = getOwnNonIndexProperties(val2, ONLY_ENUMERABLE);\n if (_keys.length !== _keys2.length) {\n return false;\n }\n return keyCheck(val1, val2, strict, memos, kNoIterator, _keys);\n } else if (isSet(val1)) {\n if (!isSet(val2) || val1.size !== val2.size) {\n return false;\n }\n return keyCheck(val1, val2, strict, memos, kIsSet);\n } else if (isMap(val1)) {\n if (!isMap(val2) || val1.size !== val2.size) {\n return false;\n }\n return keyCheck(val1, val2, strict, memos, kIsMap);\n } else if (isAnyArrayBuffer(val1)) {\n if (!areEqualArrayBuffers(val1, val2)) {\n return false;\n }\n } else if (isBoxedPrimitive(val1) && !isEqualBoxedPrimitive(val1, val2)) {\n return false;\n }\n return keyCheck(val1, val2, strict, memos, kNoIterator);\n }\n function getEnumerables(val, keys) {\n return keys.filter(function(k) {\n return propertyIsEnumerable(val, k);\n });\n }\n function keyCheck(val1, val2, strict, memos, iterationType, aKeys) {\n if (arguments.length === 5) {\n aKeys = Object.keys(val1);\n var bKeys = Object.keys(val2);\n if (aKeys.length !== bKeys.length) {\n return false;\n }\n }\n var i = 0;\n for (; i < aKeys.length; i++) {\n if (!hasOwnProperty2(val2, aKeys[i])) {\n return false;\n }\n }\n if (strict && arguments.length === 5) {\n var symbolKeysA = objectGetOwnPropertySymbols(val1);\n if (symbolKeysA.length !== 0) {\n var count = 0;\n for (i = 0; i < symbolKeysA.length; i++) {\n var key = symbolKeysA[i];\n if (propertyIsEnumerable(val1, key)) {\n if (!propertyIsEnumerable(val2, key)) {\n return false;\n }\n aKeys.push(key);\n count++;\n } else if (propertyIsEnumerable(val2, key)) {\n return false;\n }\n }\n var symbolKeysB = objectGetOwnPropertySymbols(val2);\n if (symbolKeysA.length !== symbolKeysB.length && getEnumerables(val2, symbolKeysB).length !== count) {\n return false;\n }\n } else {\n var _symbolKeysB = objectGetOwnPropertySymbols(val2);\n if (_symbolKeysB.length !== 0 && getEnumerables(val2, _symbolKeysB).length !== 0) {\n return false;\n }\n }\n }\n if (aKeys.length === 0 && (iterationType === kNoIterator || iterationType === kIsArray && val1.length === 0 || val1.size === 0)) {\n return true;\n }\n if (memos === void 0) {\n memos = {\n val1: /* @__PURE__ */ new Map(),\n val2: /* @__PURE__ */ new Map(),\n position: 0\n };\n } else {\n var val2MemoA = memos.val1.get(val1);\n if (val2MemoA !== void 0) {\n var val2MemoB = memos.val2.get(val2);\n if (val2MemoB !== void 0) {\n return val2MemoA === val2MemoB;\n }\n }\n memos.position++;\n }\n memos.val1.set(val1, memos.position);\n memos.val2.set(val2, memos.position);\n var areEq = objEquiv(val1, val2, strict, aKeys, memos, iterationType);\n memos.val1.delete(val1);\n memos.val2.delete(val2);\n return areEq;\n }\n function setHasEqualElement(set, val1, strict, memo) {\n var setValues = arrayFromSet(set);\n for (var i = 0; i < setValues.length; i++) {\n var val2 = setValues[i];\n if (innerDeepEqual(val1, val2, strict, memo)) {\n set.delete(val2);\n return true;\n }\n }\n return false;\n }\n function findLooseMatchingPrimitives(prim) {\n switch (_typeof(prim)) {\n case \"undefined\":\n return null;\n case \"object\":\n return void 0;\n case \"symbol\":\n return false;\n case \"string\":\n prim = +prim;\n // Loose equal entries exist only if the string is possible to convert to\n // a regular number and not NaN.\n // Fall through\n case \"number\":\n if (numberIsNaN(prim)) {\n return false;\n }\n }\n return true;\n }\n function setMightHaveLoosePrim(a, b, prim) {\n var altValue = findLooseMatchingPrimitives(prim);\n if (altValue != null) return altValue;\n return b.has(altValue) && !a.has(altValue);\n }\n function mapMightHaveLoosePrim(a, b, prim, item, memo) {\n var altValue = findLooseMatchingPrimitives(prim);\n if (altValue != null) {\n return altValue;\n }\n var curB = b.get(altValue);\n if (curB === void 0 && !b.has(altValue) || !innerDeepEqual(item, curB, false, memo)) {\n return false;\n }\n return !a.has(altValue) && innerDeepEqual(item, curB, false, memo);\n }\n function setEquiv(a, b, strict, memo) {\n var set = null;\n var aValues = arrayFromSet(a);\n for (var i = 0; i < aValues.length; i++) {\n var val = aValues[i];\n if (_typeof(val) === \"object\" && val !== null) {\n if (set === null) {\n set = /* @__PURE__ */ new Set();\n }\n set.add(val);\n } else if (!b.has(val)) {\n if (strict) return false;\n if (!setMightHaveLoosePrim(a, b, val)) {\n return false;\n }\n if (set === null) {\n set = /* @__PURE__ */ new Set();\n }\n set.add(val);\n }\n }\n if (set !== null) {\n var bValues = arrayFromSet(b);\n for (var _i = 0; _i < bValues.length; _i++) {\n var _val = bValues[_i];\n if (_typeof(_val) === \"object\" && _val !== null) {\n if (!setHasEqualElement(set, _val, strict, memo)) return false;\n } else if (!strict && !a.has(_val) && !setHasEqualElement(set, _val, strict, memo)) {\n return false;\n }\n }\n return set.size === 0;\n }\n return true;\n }\n function mapHasEqualEntry(set, map, key1, item1, strict, memo) {\n var setValues = arrayFromSet(set);\n for (var i = 0; i < setValues.length; i++) {\n var key2 = setValues[i];\n if (innerDeepEqual(key1, key2, strict, memo) && innerDeepEqual(item1, map.get(key2), strict, memo)) {\n set.delete(key2);\n return true;\n }\n }\n return false;\n }\n function mapEquiv(a, b, strict, memo) {\n var set = null;\n var aEntries = arrayFromMap(a);\n for (var i = 0; i < aEntries.length; i++) {\n var _aEntries$i = _slicedToArray(aEntries[i], 2), key = _aEntries$i[0], item1 = _aEntries$i[1];\n if (_typeof(key) === \"object\" && key !== null) {\n if (set === null) {\n set = /* @__PURE__ */ new Set();\n }\n set.add(key);\n } else {\n var item2 = b.get(key);\n if (item2 === void 0 && !b.has(key) || !innerDeepEqual(item1, item2, strict, memo)) {\n if (strict) return false;\n if (!mapMightHaveLoosePrim(a, b, key, item1, memo)) return false;\n if (set === null) {\n set = /* @__PURE__ */ new Set();\n }\n set.add(key);\n }\n }\n }\n if (set !== null) {\n var bEntries = arrayFromMap(b);\n for (var _i2 = 0; _i2 < bEntries.length; _i2++) {\n var _bEntries$_i = _slicedToArray(bEntries[_i2], 2), _key = _bEntries$_i[0], item = _bEntries$_i[1];\n if (_typeof(_key) === \"object\" && _key !== null) {\n if (!mapHasEqualEntry(set, a, _key, item, strict, memo)) return false;\n } else if (!strict && (!a.has(_key) || !innerDeepEqual(a.get(_key), item, false, memo)) && !mapHasEqualEntry(set, a, _key, item, false, memo)) {\n return false;\n }\n }\n return set.size === 0;\n }\n return true;\n }\n function objEquiv(a, b, strict, keys, memos, iterationType) {\n var i = 0;\n if (iterationType === kIsSet) {\n if (!setEquiv(a, b, strict, memos)) {\n return false;\n }\n } else if (iterationType === kIsMap) {\n if (!mapEquiv(a, b, strict, memos)) {\n return false;\n }\n } else if (iterationType === kIsArray) {\n for (; i < a.length; i++) {\n if (hasOwnProperty2(a, i)) {\n if (!hasOwnProperty2(b, i) || !innerDeepEqual(a[i], b[i], strict, memos)) {\n return false;\n }\n } else if (hasOwnProperty2(b, i)) {\n return false;\n } else {\n var keysA = Object.keys(a);\n for (; i < keysA.length; i++) {\n var key = keysA[i];\n if (!hasOwnProperty2(b, key) || !innerDeepEqual(a[key], b[key], strict, memos)) {\n return false;\n }\n }\n if (keysA.length !== Object.keys(b).length) {\n return false;\n }\n return true;\n }\n }\n }\n for (i = 0; i < keys.length; i++) {\n var _key2 = keys[i];\n if (!innerDeepEqual(a[_key2], b[_key2], strict, memos)) {\n return false;\n }\n }\n return true;\n }\n function isDeepEqual(val1, val2) {\n return innerDeepEqual(val1, val2, kLoose);\n }\n function isDeepStrictEqual(val1, val2) {\n return innerDeepEqual(val1, val2, kStrict);\n }\n module.exports = {\n isDeepEqual,\n isDeepStrictEqual\n };\n }\n });\n\n // node_modules/assert/build/assert.js\n var require_assert = __commonJS({\n \"node_modules/assert/build/assert.js\"(exports, module) {\n \"use strict\";\n function _typeof(o) {\n \"@babel/helpers - typeof\";\n return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function(o2) {\n return typeof o2;\n } : function(o2) {\n return o2 && \"function\" == typeof Symbol && o2.constructor === Symbol && o2 !== Symbol.prototype ? \"symbol\" : typeof o2;\n }, _typeof(o);\n }\n function _defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n Object.defineProperty(target, _toPropertyKey(descriptor.key), descriptor);\n }\n }\n function _createClass(Constructor, protoProps, staticProps) {\n if (protoProps) _defineProperties(Constructor.prototype, protoProps);\n if (staticProps) _defineProperties(Constructor, staticProps);\n Object.defineProperty(Constructor, \"prototype\", { writable: false });\n return Constructor;\n }\n function _toPropertyKey(arg) {\n var key = _toPrimitive(arg, \"string\");\n return _typeof(key) === \"symbol\" ? key : String(key);\n }\n function _toPrimitive(input, hint) {\n if (_typeof(input) !== \"object\" || input === null) return input;\n var prim = input[Symbol.toPrimitive];\n if (prim !== void 0) {\n var res = prim.call(input, hint || \"default\");\n if (_typeof(res) !== \"object\") return res;\n throw new TypeError(\"@@toPrimitive must return a primitive value.\");\n }\n return (hint === \"string\" ? String : Number)(input);\n }\n function _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n }\n var _require = require_errors();\n var _require$codes = _require.codes;\n var ERR_AMBIGUOUS_ARGUMENT = _require$codes.ERR_AMBIGUOUS_ARGUMENT;\n var ERR_INVALID_ARG_TYPE = _require$codes.ERR_INVALID_ARG_TYPE;\n var ERR_INVALID_ARG_VALUE = _require$codes.ERR_INVALID_ARG_VALUE;\n var ERR_INVALID_RETURN_VALUE = _require$codes.ERR_INVALID_RETURN_VALUE;\n var ERR_MISSING_ARGS = _require$codes.ERR_MISSING_ARGS;\n var AssertionError = require_assertion_error();\n var _require2 = require_util();\n var inspect = _require2.inspect;\n var _require$types = require_util().types;\n var isPromise = _require$types.isPromise;\n var isRegExp = _require$types.isRegExp;\n var objectAssign = require_polyfill()();\n var objectIs = require_polyfill2()();\n var RegExpPrototypeTest = require_callBound()(\"RegExp.prototype.test\");\n var isDeepEqual;\n var isDeepStrictEqual;\n function lazyLoadComparison() {\n var comparison = require_comparisons();\n isDeepEqual = comparison.isDeepEqual;\n isDeepStrictEqual = comparison.isDeepStrictEqual;\n }\n var warned = false;\n var assert = module.exports = ok;\n var NO_EXCEPTION_SENTINEL = {};\n function innerFail(obj) {\n if (obj.message instanceof Error) throw obj.message;\n throw new AssertionError(obj);\n }\n function fail(actual, expected, message, operator, stackStartFn) {\n var argsLen = arguments.length;\n var internalMessage;\n if (argsLen === 0) {\n internalMessage = \"Failed\";\n } else if (argsLen === 1) {\n message = actual;\n actual = void 0;\n } else {\n if (warned === false) {\n warned = true;\n var warn = process.emitWarning ? process.emitWarning : console.warn.bind(console);\n warn(\"assert.fail() with more than one argument is deprecated. Please use assert.strictEqual() instead or only pass a message.\", \"DeprecationWarning\", \"DEP0094\");\n }\n if (argsLen === 2) operator = \"!=\";\n }\n if (message instanceof Error) throw message;\n var errArgs = {\n actual,\n expected,\n operator: operator === void 0 ? \"fail\" : operator,\n stackStartFn: stackStartFn || fail\n };\n if (message !== void 0) {\n errArgs.message = message;\n }\n var err = new AssertionError(errArgs);\n if (internalMessage) {\n err.message = internalMessage;\n err.generatedMessage = true;\n }\n throw err;\n }\n assert.fail = fail;\n assert.AssertionError = AssertionError;\n function innerOk(fn, argLen, value, message) {\n if (!value) {\n var generatedMessage = false;\n if (argLen === 0) {\n generatedMessage = true;\n message = \"No value argument passed to `assert.ok()`\";\n } else if (message instanceof Error) {\n throw message;\n }\n var err = new AssertionError({\n actual: value,\n expected: true,\n message,\n operator: \"==\",\n stackStartFn: fn\n });\n err.generatedMessage = generatedMessage;\n throw err;\n }\n }\n function ok() {\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n innerOk.apply(void 0, [ok, args.length].concat(args));\n }\n assert.ok = ok;\n assert.equal = function equal(actual, expected, message) {\n if (arguments.length < 2) {\n throw new ERR_MISSING_ARGS(\"actual\", \"expected\");\n }\n if (actual != expected) {\n innerFail({\n actual,\n expected,\n message,\n operator: \"==\",\n stackStartFn: equal\n });\n }\n };\n assert.notEqual = function notEqual(actual, expected, message) {\n if (arguments.length < 2) {\n throw new ERR_MISSING_ARGS(\"actual\", \"expected\");\n }\n if (actual == expected) {\n innerFail({\n actual,\n expected,\n message,\n operator: \"!=\",\n stackStartFn: notEqual\n });\n }\n };\n assert.deepEqual = function deepEqual(actual, expected, message) {\n if (arguments.length < 2) {\n throw new ERR_MISSING_ARGS(\"actual\", \"expected\");\n }\n if (isDeepEqual === void 0) lazyLoadComparison();\n if (!isDeepEqual(actual, expected)) {\n innerFail({\n actual,\n expected,\n message,\n operator: \"deepEqual\",\n stackStartFn: deepEqual\n });\n }\n };\n assert.notDeepEqual = function notDeepEqual(actual, expected, message) {\n if (arguments.length < 2) {\n throw new ERR_MISSING_ARGS(\"actual\", \"expected\");\n }\n if (isDeepEqual === void 0) lazyLoadComparison();\n if (isDeepEqual(actual, expected)) {\n innerFail({\n actual,\n expected,\n message,\n operator: \"notDeepEqual\",\n stackStartFn: notDeepEqual\n });\n }\n };\n assert.deepStrictEqual = function deepStrictEqual(actual, expected, message) {\n if (arguments.length < 2) {\n throw new ERR_MISSING_ARGS(\"actual\", \"expected\");\n }\n if (isDeepEqual === void 0) lazyLoadComparison();\n if (!isDeepStrictEqual(actual, expected)) {\n innerFail({\n actual,\n expected,\n message,\n operator: \"deepStrictEqual\",\n stackStartFn: deepStrictEqual\n });\n }\n };\n assert.notDeepStrictEqual = notDeepStrictEqual;\n function notDeepStrictEqual(actual, expected, message) {\n if (arguments.length < 2) {\n throw new ERR_MISSING_ARGS(\"actual\", \"expected\");\n }\n if (isDeepEqual === void 0) lazyLoadComparison();\n if (isDeepStrictEqual(actual, expected)) {\n innerFail({\n actual,\n expected,\n message,\n operator: \"notDeepStrictEqual\",\n stackStartFn: notDeepStrictEqual\n });\n }\n }\n assert.strictEqual = function strictEqual(actual, expected, message) {\n if (arguments.length < 2) {\n throw new ERR_MISSING_ARGS(\"actual\", \"expected\");\n }\n if (!objectIs(actual, expected)) {\n innerFail({\n actual,\n expected,\n message,\n operator: \"strictEqual\",\n stackStartFn: strictEqual\n });\n }\n };\n assert.notStrictEqual = function notStrictEqual(actual, expected, message) {\n if (arguments.length < 2) {\n throw new ERR_MISSING_ARGS(\"actual\", \"expected\");\n }\n if (objectIs(actual, expected)) {\n innerFail({\n actual,\n expected,\n message,\n operator: \"notStrictEqual\",\n stackStartFn: notStrictEqual\n });\n }\n };\n var Comparison = /* @__PURE__ */ _createClass(function Comparison2(obj, keys, actual) {\n var _this = this;\n _classCallCheck(this, Comparison2);\n keys.forEach(function(key) {\n if (key in obj) {\n if (actual !== void 0 && typeof actual[key] === \"string\" && isRegExp(obj[key]) && RegExpPrototypeTest(obj[key], actual[key])) {\n _this[key] = actual[key];\n } else {\n _this[key] = obj[key];\n }\n }\n });\n });\n function compareExceptionKey(actual, expected, key, message, keys, fn) {\n if (!(key in actual) || !isDeepStrictEqual(actual[key], expected[key])) {\n if (!message) {\n var a = new Comparison(actual, keys);\n var b = new Comparison(expected, keys, actual);\n var err = new AssertionError({\n actual: a,\n expected: b,\n operator: \"deepStrictEqual\",\n stackStartFn: fn\n });\n err.actual = actual;\n err.expected = expected;\n err.operator = fn.name;\n throw err;\n }\n innerFail({\n actual,\n expected,\n message,\n operator: fn.name,\n stackStartFn: fn\n });\n }\n }\n function expectedException(actual, expected, msg, fn) {\n if (typeof expected !== \"function\") {\n if (isRegExp(expected)) return RegExpPrototypeTest(expected, actual);\n if (arguments.length === 2) {\n throw new ERR_INVALID_ARG_TYPE(\"expected\", [\"Function\", \"RegExp\"], expected);\n }\n if (_typeof(actual) !== \"object\" || actual === null) {\n var err = new AssertionError({\n actual,\n expected,\n message: msg,\n operator: \"deepStrictEqual\",\n stackStartFn: fn\n });\n err.operator = fn.name;\n throw err;\n }\n var keys = Object.keys(expected);\n if (expected instanceof Error) {\n keys.push(\"name\", \"message\");\n } else if (keys.length === 0) {\n throw new ERR_INVALID_ARG_VALUE(\"error\", expected, \"may not be an empty object\");\n }\n if (isDeepEqual === void 0) lazyLoadComparison();\n keys.forEach(function(key) {\n if (typeof actual[key] === \"string\" && isRegExp(expected[key]) && RegExpPrototypeTest(expected[key], actual[key])) {\n return;\n }\n compareExceptionKey(actual, expected, key, msg, keys, fn);\n });\n return true;\n }\n if (expected.prototype !== void 0 && actual instanceof expected) {\n return true;\n }\n if (Error.isPrototypeOf(expected)) {\n return false;\n }\n return expected.call({}, actual) === true;\n }\n function getActual(fn) {\n if (typeof fn !== \"function\") {\n throw new ERR_INVALID_ARG_TYPE(\"fn\", \"Function\", fn);\n }\n try {\n fn();\n } catch (e) {\n return e;\n }\n return NO_EXCEPTION_SENTINEL;\n }\n function checkIsPromise(obj) {\n return isPromise(obj) || obj !== null && _typeof(obj) === \"object\" && typeof obj.then === \"function\" && typeof obj.catch === \"function\";\n }\n function waitForActual(promiseFn) {\n return Promise.resolve().then(function() {\n var resultPromise;\n if (typeof promiseFn === \"function\") {\n resultPromise = promiseFn();\n if (!checkIsPromise(resultPromise)) {\n throw new ERR_INVALID_RETURN_VALUE(\"instance of Promise\", \"promiseFn\", resultPromise);\n }\n } else if (checkIsPromise(promiseFn)) {\n resultPromise = promiseFn;\n } else {\n throw new ERR_INVALID_ARG_TYPE(\"promiseFn\", [\"Function\", \"Promise\"], promiseFn);\n }\n return Promise.resolve().then(function() {\n return resultPromise;\n }).then(function() {\n return NO_EXCEPTION_SENTINEL;\n }).catch(function(e) {\n return e;\n });\n });\n }\n function expectsError(stackStartFn, actual, error, message) {\n if (typeof error === \"string\") {\n if (arguments.length === 4) {\n throw new ERR_INVALID_ARG_TYPE(\"error\", [\"Object\", \"Error\", \"Function\", \"RegExp\"], error);\n }\n if (_typeof(actual) === \"object\" && actual !== null) {\n if (actual.message === error) {\n throw new ERR_AMBIGUOUS_ARGUMENT(\"error/message\", 'The error message \"'.concat(actual.message, '\" is identical to the message.'));\n }\n } else if (actual === error) {\n throw new ERR_AMBIGUOUS_ARGUMENT(\"error/message\", 'The error \"'.concat(actual, '\" is identical to the message.'));\n }\n message = error;\n error = void 0;\n } else if (error != null && _typeof(error) !== \"object\" && typeof error !== \"function\") {\n throw new ERR_INVALID_ARG_TYPE(\"error\", [\"Object\", \"Error\", \"Function\", \"RegExp\"], error);\n }\n if (actual === NO_EXCEPTION_SENTINEL) {\n var details = \"\";\n if (error && error.name) {\n details += \" (\".concat(error.name, \")\");\n }\n details += message ? \": \".concat(message) : \".\";\n var fnType = stackStartFn.name === \"rejects\" ? \"rejection\" : \"exception\";\n innerFail({\n actual: void 0,\n expected: error,\n operator: stackStartFn.name,\n message: \"Missing expected \".concat(fnType).concat(details),\n stackStartFn\n });\n }\n if (error && !expectedException(actual, error, message, stackStartFn)) {\n throw actual;\n }\n }\n function expectsNoError(stackStartFn, actual, error, message) {\n if (actual === NO_EXCEPTION_SENTINEL) return;\n if (typeof error === \"string\") {\n message = error;\n error = void 0;\n }\n if (!error || expectedException(actual, error)) {\n var details = message ? \": \".concat(message) : \".\";\n var fnType = stackStartFn.name === \"doesNotReject\" ? \"rejection\" : \"exception\";\n innerFail({\n actual,\n expected: error,\n operator: stackStartFn.name,\n message: \"Got unwanted \".concat(fnType).concat(details, \"\\n\") + 'Actual message: \"'.concat(actual && actual.message, '\"'),\n stackStartFn\n });\n }\n throw actual;\n }\n assert.throws = function throws(promiseFn) {\n for (var _len2 = arguments.length, args = new Array(_len2 > 1 ? _len2 - 1 : 0), _key2 = 1; _key2 < _len2; _key2++) {\n args[_key2 - 1] = arguments[_key2];\n }\n expectsError.apply(void 0, [throws, getActual(promiseFn)].concat(args));\n };\n assert.rejects = function rejects(promiseFn) {\n for (var _len3 = arguments.length, args = new Array(_len3 > 1 ? _len3 - 1 : 0), _key3 = 1; _key3 < _len3; _key3++) {\n args[_key3 - 1] = arguments[_key3];\n }\n return waitForActual(promiseFn).then(function(result) {\n return expectsError.apply(void 0, [rejects, result].concat(args));\n });\n };\n assert.doesNotThrow = function doesNotThrow(fn) {\n for (var _len4 = arguments.length, args = new Array(_len4 > 1 ? _len4 - 1 : 0), _key4 = 1; _key4 < _len4; _key4++) {\n args[_key4 - 1] = arguments[_key4];\n }\n expectsNoError.apply(void 0, [doesNotThrow, getActual(fn)].concat(args));\n };\n assert.doesNotReject = function doesNotReject(fn) {\n for (var _len5 = arguments.length, args = new Array(_len5 > 1 ? _len5 - 1 : 0), _key5 = 1; _key5 < _len5; _key5++) {\n args[_key5 - 1] = arguments[_key5];\n }\n return waitForActual(fn).then(function(result) {\n return expectsNoError.apply(void 0, [doesNotReject, result].concat(args));\n });\n };\n assert.ifError = function ifError(err) {\n if (err !== null && err !== void 0) {\n var message = \"ifError got unwanted exception: \";\n if (_typeof(err) === \"object\" && typeof err.message === \"string\") {\n if (err.message.length === 0 && err.constructor) {\n message += err.constructor.name;\n } else {\n message += err.message;\n }\n } else {\n message += inspect(err);\n }\n var newErr = new AssertionError({\n actual: err,\n expected: null,\n operator: \"ifError\",\n message,\n stackStartFn: ifError\n });\n var origStack = err.stack;\n if (typeof origStack === \"string\") {\n var tmp2 = origStack.split(\"\\n\");\n tmp2.shift();\n var tmp1 = newErr.stack.split(\"\\n\");\n for (var i = 0; i < tmp2.length; i++) {\n var pos = tmp1.indexOf(tmp2[i]);\n if (pos !== -1) {\n tmp1 = tmp1.slice(0, pos);\n break;\n }\n }\n newErr.stack = \"\".concat(tmp1.join(\"\\n\"), \"\\n\").concat(tmp2.join(\"\\n\"));\n }\n throw newErr;\n }\n };\n function internalMatch(string, regexp, message, fn, fnName) {\n if (!isRegExp(regexp)) {\n throw new ERR_INVALID_ARG_TYPE(\"regexp\", \"RegExp\", regexp);\n }\n var match = fnName === \"match\";\n if (typeof string !== \"string\" || RegExpPrototypeTest(regexp, string) !== match) {\n if (message instanceof Error) {\n throw message;\n }\n var generatedMessage = !message;\n message = message || (typeof string !== \"string\" ? 'The \"string\" argument must be of type string. Received type ' + \"\".concat(_typeof(string), \" (\").concat(inspect(string), \")\") : (match ? \"The input did not match the regular expression \" : \"The input was expected to not match the regular expression \") + \"\".concat(inspect(regexp), \". Input:\\n\\n\").concat(inspect(string), \"\\n\"));\n var err = new AssertionError({\n actual: string,\n expected: regexp,\n message,\n operator: fnName,\n stackStartFn: fn\n });\n err.generatedMessage = generatedMessage;\n throw err;\n }\n }\n assert.match = function match(string, regexp, message) {\n internalMatch(string, regexp, message, match, \"match\");\n };\n assert.doesNotMatch = function doesNotMatch(string, regexp, message) {\n internalMatch(string, regexp, message, doesNotMatch, \"doesNotMatch\");\n };\n function strict() {\n for (var _len6 = arguments.length, args = new Array(_len6), _key6 = 0; _key6 < _len6; _key6++) {\n args[_key6] = arguments[_key6];\n }\n innerOk.apply(void 0, [strict, args.length].concat(args));\n }\n assert.strict = objectAssign(strict, assert, {\n equal: assert.strictEqual,\n deepEqual: assert.deepStrictEqual,\n notEqual: assert.notStrictEqual,\n notDeepEqual: assert.notDeepStrictEqual\n });\n assert.strict.strict = assert.strict;\n }\n });\n\n // node_modules/svg-path-bounds/index.js\n var require_svg_path_bounds = __commonJS({\n \"node_modules/svg-path-bounds/index.js\"(exports, module) {\n \"use strict\";\n var parse = require_parse_svg_path();\n var abs = require_abs_svg_path();\n var normalize = require_normalize_svg_path();\n var isSvgPath = require_is_svg_path();\n var assert = require_assert();\n module.exports = pathBounds;\n function pathBounds(path) {\n if (Array.isArray(path) && path.length === 1 && typeof path[0] === \"string\") path = path[0];\n if (typeof path === \"string\") {\n assert(isSvgPath(path), \"String is not an SVG path.\");\n path = parse(path);\n }\n assert(Array.isArray(path), \"Argument should be a string or an array of path segments.\");\n path = abs(path);\n path = normalize(path);\n if (!path.length) return [0, 0, 0, 0];\n var bounds = [Infinity, Infinity, -Infinity, -Infinity];\n for (var i = 0, l = path.length; i < l; i++) {\n var points = path[i].slice(1);\n for (var j = 0; j < points.length; j += 2) {\n if (points[j + 0] < bounds[0]) bounds[0] = points[j + 0];\n if (points[j + 1] < bounds[1]) bounds[1] = points[j + 1];\n if (points[j + 0] > bounds[2]) bounds[2] = points[j + 0];\n if (points[j + 1] > bounds[3]) bounds[3] = points[j + 1];\n }\n }\n return bounds;\n }\n }\n });\n\n // node_modules/normalize-svg-path/index.js\n var require_normalize_svg_path2 = __commonJS({\n \"node_modules/normalize-svg-path/index.js\"(exports, module) {\n var \\u03C0 = Math.PI;\n var _120 = radians(120);\n module.exports = normalize;\n function normalize(path) {\n var prev;\n var result = [];\n var bezierX = 0;\n var bezierY = 0;\n var startX = 0;\n var startY = 0;\n var quadX = null;\n var quadY = null;\n var x = 0;\n var y = 0;\n for (var i = 0, len = path.length; i < len; i++) {\n var seg = path[i];\n var command = seg[0];\n switch (command) {\n case \"M\":\n startX = seg[1];\n startY = seg[2];\n break;\n case \"A\":\n seg = arc(x, y, seg[1], seg[2], radians(seg[3]), seg[4], seg[5], seg[6], seg[7]);\n seg.unshift(\"C\");\n if (seg.length > 7) {\n result.push(seg.splice(0, 7));\n seg.unshift(\"C\");\n }\n break;\n case \"S\":\n var cx = x;\n var cy = y;\n if (prev == \"C\" || prev == \"S\") {\n cx += cx - bezierX;\n cy += cy - bezierY;\n }\n seg = [\"C\", cx, cy, seg[1], seg[2], seg[3], seg[4]];\n break;\n case \"T\":\n if (prev == \"Q\" || prev == \"T\") {\n quadX = x * 2 - quadX;\n quadY = y * 2 - quadY;\n } else {\n quadX = x;\n quadY = y;\n }\n seg = quadratic(x, y, quadX, quadY, seg[1], seg[2]);\n break;\n case \"Q\":\n quadX = seg[1];\n quadY = seg[2];\n seg = quadratic(x, y, seg[1], seg[2], seg[3], seg[4]);\n break;\n case \"L\":\n seg = line(x, y, seg[1], seg[2]);\n break;\n case \"H\":\n seg = line(x, y, seg[1], y);\n break;\n case \"V\":\n seg = line(x, y, x, seg[1]);\n break;\n case \"Z\":\n seg = line(x, y, startX, startY);\n break;\n }\n prev = command;\n x = seg[seg.length - 2];\n y = seg[seg.length - 1];\n if (seg.length > 4) {\n bezierX = seg[seg.length - 4];\n bezierY = seg[seg.length - 3];\n } else {\n bezierX = x;\n bezierY = y;\n }\n result.push(seg);\n }\n return result;\n }\n function line(x1, y1, x2, y2) {\n return [\"C\", x1, y1, x2, y2, x2, y2];\n }\n function quadratic(x1, y1, cx, cy, x2, y2) {\n return [\n \"C\",\n x1 / 3 + 2 / 3 * cx,\n y1 / 3 + 2 / 3 * cy,\n x2 / 3 + 2 / 3 * cx,\n y2 / 3 + 2 / 3 * cy,\n x2,\n y2\n ];\n }\n function arc(x1, y1, rx, ry, angle, large_arc_flag, sweep_flag, x2, y2, recursive) {\n if (!recursive) {\n var xy = rotate(x1, y1, -angle);\n x1 = xy.x;\n y1 = xy.y;\n xy = rotate(x2, y2, -angle);\n x2 = xy.x;\n y2 = xy.y;\n var x = (x1 - x2) / 2;\n var y = (y1 - y2) / 2;\n var h = x * x / (rx * rx) + y * y / (ry * ry);\n if (h > 1) {\n h = Math.sqrt(h);\n rx = h * rx;\n ry = h * ry;\n }\n var rx2 = rx * rx;\n var ry2 = ry * ry;\n var k = (large_arc_flag == sweep_flag ? -1 : 1) * Math.sqrt(Math.abs((rx2 * ry2 - rx2 * y * y - ry2 * x * x) / (rx2 * y * y + ry2 * x * x)));\n if (k == Infinity) k = 1;\n var cx = k * rx * y / ry + (x1 + x2) / 2;\n var cy = k * -ry * x / rx + (y1 + y2) / 2;\n var f1 = Math.asin(((y1 - cy) / ry).toFixed(9));\n var f2 = Math.asin(((y2 - cy) / ry).toFixed(9));\n f1 = x1 < cx ? \\u03C0 - f1 : f1;\n f2 = x2 < cx ? \\u03C0 - f2 : f2;\n if (f1 < 0) f1 = \\u03C0 * 2 + f1;\n if (f2 < 0) f2 = \\u03C0 * 2 + f2;\n if (sweep_flag && f1 > f2) f1 = f1 - \\u03C0 * 2;\n if (!sweep_flag && f2 > f1) f2 = f2 - \\u03C0 * 2;\n } else {\n f1 = recursive[0];\n f2 = recursive[1];\n cx = recursive[2];\n cy = recursive[3];\n }\n if (Math.abs(f2 - f1) > _120) {\n var f2old = f2;\n var x2old = x2;\n var y2old = y2;\n f2 = f1 + _120 * (sweep_flag && f2 > f1 ? 1 : -1);\n x2 = cx + rx * Math.cos(f2);\n y2 = cy + ry * Math.sin(f2);\n var res = arc(x2, y2, rx, ry, angle, 0, sweep_flag, x2old, y2old, [f2, f2old, cx, cy]);\n }\n var t = Math.tan((f2 - f1) / 4);\n var hx = 4 / 3 * rx * t;\n var hy = 4 / 3 * ry * t;\n var curve = [\n 2 * x1 - (x1 + hx * Math.sin(f1)),\n 2 * y1 - (y1 - hy * Math.cos(f1)),\n x2 + hx * Math.sin(f2),\n y2 - hy * Math.cos(f2),\n x2,\n y2\n ];\n if (recursive) return curve;\n if (res) curve = curve.concat(res);\n for (var i = 0; i < curve.length; ) {\n var rot = rotate(curve[i], curve[i + 1], angle);\n curve[i++] = rot.x;\n curve[i++] = rot.y;\n }\n return curve;\n }\n function rotate(x, y, rad) {\n return {\n x: x * Math.cos(rad) - y * Math.sin(rad),\n y: x * Math.sin(rad) + y * Math.cos(rad)\n };\n }\n function radians(degress) {\n return degress * (\\u03C0 / 180);\n }\n }\n });\n\n // node_modules/draw-svg-path/index.js\n var require_draw_svg_path = __commonJS({\n \"node_modules/draw-svg-path/index.js\"(exports, module) {\n var abs = require_abs_svg_path();\n var normalize = require_normalize_svg_path2();\n var methods = {\n \"M\": \"moveTo\",\n \"C\": \"bezierCurveTo\"\n };\n module.exports = function(context, segments) {\n context.beginPath();\n normalize(abs(segments)).forEach(\n function(segment) {\n var command = segment[0];\n var args = segment.slice(1);\n context[methods[command]].apply(context, args);\n }\n );\n context.closePath();\n };\n }\n });\n\n // node_modules/bitmap-sdf/index.js\n var require_bitmap_sdf = __commonJS({\n \"node_modules/bitmap-sdf/index.js\"(exports, module) {\n \"use strict\";\n var clamp = require_clamp();\n module.exports = calcSDF;\n var INF = 1e20;\n function calcSDF(src, options) {\n if (!options) options = {};\n var cutoff = options.cutoff == null ? 0.25 : options.cutoff;\n var radius = options.radius == null ? 8 : options.radius;\n var channel = options.channel || 0;\n var w, h, size, data, intData, stride, ctx, canvas, imgData, i, l;\n if (ArrayBuffer.isView(src) || Array.isArray(src)) {\n if (!options.width || !options.height) throw Error(\"For raw data width and height should be provided by options\");\n w = options.width, h = options.height;\n data = src;\n if (!options.stride) stride = Math.floor(src.length / w / h);\n else stride = options.stride;\n } else {\n if (window.HTMLCanvasElement && src instanceof window.HTMLCanvasElement) {\n canvas = src;\n ctx = canvas.getContext(\"2d\");\n w = canvas.width, h = canvas.height;\n imgData = ctx.getImageData(0, 0, w, h);\n data = imgData.data;\n stride = 4;\n } else if (window.CanvasRenderingContext2D && src instanceof window.CanvasRenderingContext2D) {\n canvas = src.canvas;\n ctx = src;\n w = canvas.width, h = canvas.height;\n imgData = ctx.getImageData(0, 0, w, h);\n data = imgData.data;\n stride = 4;\n } else if (window.ImageData && src instanceof window.ImageData) {\n imgData = src;\n w = src.width, h = src.height;\n data = imgData.data;\n stride = 4;\n }\n }\n size = Math.max(w, h);\n if (window.Uint8ClampedArray && data instanceof window.Uint8ClampedArray || window.Uint8Array && data instanceof window.Uint8Array) {\n intData = data;\n data = Array(w * h);\n for (i = 0, l = intData.length; i < l; i++) {\n data[i] = intData[i * stride + channel] / 255;\n }\n } else {\n if (stride !== 1) throw Error(\"Raw data can have only 1 value per pixel\");\n }\n var gridOuter = Array(w * h);\n var gridInner = Array(w * h);\n var f = Array(size);\n var d = Array(size);\n var z = Array(size + 1);\n var v = Array(size);\n for (i = 0, l = w * h; i < l; i++) {\n var a = data[i];\n gridOuter[i] = a === 1 ? 0 : a === 0 ? INF : Math.pow(Math.max(0, 0.5 - a), 2);\n gridInner[i] = a === 1 ? INF : a === 0 ? 0 : Math.pow(Math.max(0, a - 0.5), 2);\n }\n edt(gridOuter, w, h, f, d, v, z);\n edt(gridInner, w, h, f, d, v, z);\n var dist = window.Float32Array ? new Float32Array(w * h) : new Array(w * h);\n for (i = 0, l = w * h; i < l; i++) {\n dist[i] = clamp(1 - ((gridOuter[i] - gridInner[i]) / radius + cutoff), 0, 1);\n }\n return dist;\n }\n function edt(data, width, height, f, d, v, z) {\n for (var x = 0; x < width; x++) {\n for (var y = 0; y < height; y++) {\n f[y] = data[y * width + x];\n }\n edt1d(f, d, v, z, height);\n for (y = 0; y < height; y++) {\n data[y * width + x] = d[y];\n }\n }\n for (y = 0; y < height; y++) {\n for (x = 0; x < width; x++) {\n f[x] = data[y * width + x];\n }\n edt1d(f, d, v, z, width);\n for (x = 0; x < width; x++) {\n data[y * width + x] = Math.sqrt(d[x]);\n }\n }\n }\n function edt1d(f, d, v, z, n) {\n v[0] = 0;\n z[0] = -INF;\n z[1] = +INF;\n for (var q = 1, k = 0; q < n; q++) {\n var s = (f[q] + q * q - (f[v[k]] + v[k] * v[k])) / (2 * q - 2 * v[k]);\n while (s <= z[k]) {\n k--;\n s = (f[q] + q * q - (f[v[k]] + v[k] * v[k])) / (2 * q - 2 * v[k]);\n }\n k++;\n v[k] = q;\n z[k] = s;\n z[k + 1] = +INF;\n }\n for (q = 0, k = 0; q < n; q++) {\n while (z[k + 1] < q) k++;\n d[q] = (q - v[k]) * (q - v[k]) + f[v[k]];\n }\n }\n }\n });\n\n // node_modules/svg-path-sdf/index.js\n var require_svg_path_sdf = __commonJS({\n \"node_modules/svg-path-sdf/index.js\"(exports, module) {\n \"use strict\";\n var pathBounds = require_svg_path_bounds();\n var parsePath = require_parse_svg_path();\n var drawPath = require_draw_svg_path();\n var isSvgPath = require_is_svg_path();\n var bitmapSdf = require_bitmap_sdf();\n var canvas = document.createElement(\"canvas\");\n var ctx = canvas.getContext(\"2d\");\n module.exports = pathSdf;\n function pathSdf(path, options) {\n if (!isSvgPath(path)) throw Error(\"Argument should be valid svg path string\");\n if (!options) options = {};\n var w, h;\n if (options.shape) {\n w = options.shape[0];\n h = options.shape[1];\n } else {\n w = canvas.width = options.w || options.width || 200;\n h = canvas.height = options.h || options.height || 200;\n }\n var size = Math.min(w, h);\n var stroke = options.stroke || 0;\n var viewbox = options.viewbox || options.viewBox || pathBounds(path);\n var scale = [w / (viewbox[2] - viewbox[0]), h / (viewbox[3] - viewbox[1])];\n var maxScale = Math.min(scale[0] || 0, scale[1] || 0) / 2;\n ctx.fillStyle = \"black\";\n ctx.fillRect(0, 0, w, h);\n ctx.fillStyle = \"white\";\n if (stroke) {\n if (typeof stroke != \"number\") stroke = 1;\n if (stroke > 0) {\n ctx.strokeStyle = \"white\";\n } else {\n ctx.strokeStyle = \"black\";\n }\n ctx.lineWidth = Math.abs(stroke);\n }\n ctx.translate(w * 0.5, h * 0.5);\n ctx.scale(maxScale, maxScale);\n if (isPath2DSupported()) {\n var path2d = new Path2D(path);\n ctx.fill(path2d);\n stroke && ctx.stroke(path2d);\n } else {\n var segments = parsePath(path);\n drawPath(ctx, segments);\n ctx.fill();\n stroke && ctx.stroke();\n }\n ctx.setTransform(1, 0, 0, 1, 0, 0);\n var data = bitmapSdf(ctx, {\n cutoff: options.cutoff != null ? options.cutoff : 0.5,\n radius: options.radius != null ? options.radius : size * 0.5\n });\n return data;\n }\n var path2DSupported;\n function isPath2DSupported() {\n if (path2DSupported != null) return path2DSupported;\n var ctx2 = document.createElement(\"canvas\").getContext(\"2d\");\n ctx2.canvas.width = ctx2.canvas.height = 1;\n if (!window.Path2D) return path2DSupported = false;\n var path = new Path2D(\"M0,0h1v1h-1v-1Z\");\n ctx2.fillStyle = \"black\";\n ctx2.fill(path);\n var idata = ctx2.getImageData(0, 0, 1, 1);\n return path2DSupported = idata && idata.data && idata.data[3] === 255;\n }\n }\n });\n\n // node_modules/color-name/index.js\n var require_color_name = __commonJS({\n \"node_modules/color-name/index.js\"(exports, module) {\n \"use strict\";\n module.exports = {\n \"aliceblue\": [240, 248, 255],\n \"antiquewhite\": [250, 235, 215],\n \"aqua\": [0, 255, 255],\n \"aquamarine\": [127, 255, 212],\n \"azure\": [240, 255, 255],\n \"beige\": [245, 245, 220],\n \"bisque\": [255, 228, 196],\n \"black\": [0, 0, 0],\n \"blanchedalmond\": [255, 235, 205],\n \"blue\": [0, 0, 255],\n \"blueviolet\": [138, 43, 226],\n \"brown\": [165, 42, 42],\n \"burlywood\": [222, 184, 135],\n \"cadetblue\": [95, 158, 160],\n \"chartreuse\": [127, 255, 0],\n \"chocolate\": [210, 105, 30],\n \"coral\": [255, 127, 80],\n \"cornflowerblue\": [100, 149, 237],\n \"cornsilk\": [255, 248, 220],\n \"crimson\": [220, 20, 60],\n \"cyan\": [0, 255, 255],\n \"darkblue\": [0, 0, 139],\n \"darkcyan\": [0, 139, 139],\n \"darkgoldenrod\": [184, 134, 11],\n \"darkgray\": [169, 169, 169],\n \"darkgreen\": [0, 100, 0],\n \"darkgrey\": [169, 169, 169],\n \"darkkhaki\": [189, 183, 107],\n \"darkmagenta\": [139, 0, 139],\n \"darkolivegreen\": [85, 107, 47],\n \"darkorange\": [255, 140, 0],\n \"darkorchid\": [153, 50, 204],\n \"darkred\": [139, 0, 0],\n \"darksalmon\": [233, 150, 122],\n \"darkseagreen\": [143, 188, 143],\n \"darkslateblue\": [72, 61, 139],\n \"darkslategray\": [47, 79, 79],\n \"darkslategrey\": [47, 79, 79],\n \"darkturquoise\": [0, 206, 209],\n \"darkviolet\": [148, 0, 211],\n \"deeppink\": [255, 20, 147],\n \"deepskyblue\": [0, 191, 255],\n \"dimgray\": [105, 105, 105],\n \"dimgrey\": [105, 105, 105],\n \"dodgerblue\": [30, 144, 255],\n \"firebrick\": [178, 34, 34],\n \"floralwhite\": [255, 250, 240],\n \"forestgreen\": [34, 139, 34],\n \"fuchsia\": [255, 0, 255],\n \"gainsboro\": [220, 220, 220],\n \"ghostwhite\": [248, 248, 255],\n \"gold\": [255, 215, 0],\n \"goldenrod\": [218, 165, 32],\n \"gray\": [128, 128, 128],\n \"green\": [0, 128, 0],\n \"greenyellow\": [173, 255, 47],\n \"grey\": [128, 128, 128],\n \"honeydew\": [240, 255, 240],\n \"hotpink\": [255, 105, 180],\n \"indianred\": [205, 92, 92],\n \"indigo\": [75, 0, 130],\n \"ivory\": [255, 255, 240],\n \"khaki\": [240, 230, 140],\n \"lavender\": [230, 230, 250],\n \"lavenderblush\": [255, 240, 245],\n \"lawngreen\": [124, 252, 0],\n \"lemonchiffon\": [255, 250, 205],\n \"lightblue\": [173, 216, 230],\n \"lightcoral\": [240, 128, 128],\n \"lightcyan\": [224, 255, 255],\n \"lightgoldenrodyellow\": [250, 250, 210],\n \"lightgray\": [211, 211, 211],\n \"lightgreen\": [144, 238, 144],\n \"lightgrey\": [211, 211, 211],\n \"lightpink\": [255, 182, 193],\n \"lightsalmon\": [255, 160, 122],\n \"lightseagreen\": [32, 178, 170],\n \"lightskyblue\": [135, 206, 250],\n \"lightslategray\": [119, 136, 153],\n \"lightslategrey\": [119, 136, 153],\n \"lightsteelblue\": [176, 196, 222],\n \"lightyellow\": [255, 255, 224],\n \"lime\": [0, 255, 0],\n \"limegreen\": [50, 205, 50],\n \"linen\": [250, 240, 230],\n \"magenta\": [255, 0, 255],\n \"maroon\": [128, 0, 0],\n \"mediumaquamarine\": [102, 205, 170],\n \"mediumblue\": [0, 0, 205],\n \"mediumorchid\": [186, 85, 211],\n \"mediumpurple\": [147, 112, 219],\n \"mediumseagreen\": [60, 179, 113],\n \"mediumslateblue\": [123, 104, 238],\n \"mediumspringgreen\": [0, 250, 154],\n \"mediumturquoise\": [72, 209, 204],\n \"mediumvioletred\": [199, 21, 133],\n \"midnightblue\": [25, 25, 112],\n \"mintcream\": [245, 255, 250],\n \"mistyrose\": [255, 228, 225],\n \"moccasin\": [255, 228, 181],\n \"navajowhite\": [255, 222, 173],\n \"navy\": [0, 0, 128],\n \"oldlace\": [253, 245, 230],\n \"olive\": [128, 128, 0],\n \"olivedrab\": [107, 142, 35],\n \"orange\": [255, 165, 0],\n \"orangered\": [255, 69, 0],\n \"orchid\": [218, 112, 214],\n \"palegoldenrod\": [238, 232, 170],\n \"palegreen\": [152, 251, 152],\n \"paleturquoise\": [175, 238, 238],\n \"palevioletred\": [219, 112, 147],\n \"papayawhip\": [255, 239, 213],\n \"peachpuff\": [255, 218, 185],\n \"peru\": [205, 133, 63],\n \"pink\": [255, 192, 203],\n \"plum\": [221, 160, 221],\n \"powderblue\": [176, 224, 230],\n \"purple\": [128, 0, 128],\n \"rebeccapurple\": [102, 51, 153],\n \"red\": [255, 0, 0],\n \"rosybrown\": [188, 143, 143],\n \"royalblue\": [65, 105, 225],\n \"saddlebrown\": [139, 69, 19],\n \"salmon\": [250, 128, 114],\n \"sandybrown\": [244, 164, 96],\n \"seagreen\": [46, 139, 87],\n \"seashell\": [255, 245, 238],\n \"sienna\": [160, 82, 45],\n \"silver\": [192, 192, 192],\n \"skyblue\": [135, 206, 235],\n \"slateblue\": [106, 90, 205],\n \"slategray\": [112, 128, 144],\n \"slategrey\": [112, 128, 144],\n \"snow\": [255, 250, 250],\n \"springgreen\": [0, 255, 127],\n \"steelblue\": [70, 130, 180],\n \"tan\": [210, 180, 140],\n \"teal\": [0, 128, 128],\n \"thistle\": [216, 191, 216],\n \"tomato\": [255, 99, 71],\n \"turquoise\": [64, 224, 208],\n \"violet\": [238, 130, 238],\n \"wheat\": [245, 222, 179],\n \"white\": [255, 255, 255],\n \"whitesmoke\": [245, 245, 245],\n \"yellow\": [255, 255, 0],\n \"yellowgreen\": [154, 205, 50]\n };\n }\n });\n\n // node_modules/color-rgba/node_modules/color-parse/index.js\n var require_color_parse = __commonJS({\n \"node_modules/color-rgba/node_modules/color-parse/index.js\"(exports, module) {\n \"use strict\";\n var names = require_color_name();\n module.exports = parse;\n var baseHues = {\n red: 0,\n orange: 60,\n yellow: 120,\n green: 180,\n blue: 240,\n purple: 300\n };\n function parse(cstr) {\n var m, parts = [], alpha = 1, space;\n if (typeof cstr === \"string\") {\n cstr = cstr.toLowerCase();\n if (names[cstr]) {\n parts = names[cstr].slice();\n space = \"rgb\";\n } else if (cstr === \"transparent\") {\n alpha = 0;\n space = \"rgb\";\n parts = [0, 0, 0];\n } else if (/^#[A-Fa-f0-9]+$/.test(cstr)) {\n var base = cstr.slice(1);\n var size = base.length;\n var isShort = size <= 4;\n alpha = 1;\n if (isShort) {\n parts = [\n parseInt(base[0] + base[0], 16),\n parseInt(base[1] + base[1], 16),\n parseInt(base[2] + base[2], 16)\n ];\n if (size === 4) {\n alpha = parseInt(base[3] + base[3], 16) / 255;\n }\n } else {\n parts = [\n parseInt(base[0] + base[1], 16),\n parseInt(base[2] + base[3], 16),\n parseInt(base[4] + base[5], 16)\n ];\n if (size === 8) {\n alpha = parseInt(base[6] + base[7], 16) / 255;\n }\n }\n if (!parts[0]) parts[0] = 0;\n if (!parts[1]) parts[1] = 0;\n if (!parts[2]) parts[2] = 0;\n space = \"rgb\";\n } else if (m = /^((?:rgb|hs[lvb]|hwb|cmyk?|xy[zy]|gray|lab|lchu?v?|[ly]uv|lms)a?)\\s*\\(([^\\)]*)\\)/.exec(cstr)) {\n var name = m[1];\n var isRGB = name === \"rgb\";\n var base = name.replace(/a$/, \"\");\n space = base;\n var size = base === \"cmyk\" ? 4 : base === \"gray\" ? 1 : 3;\n parts = m[2].trim().split(/\\s*[,\\/]\\s*|\\s+/).map(function(x, i) {\n if (/%$/.test(x)) {\n if (i === size) return parseFloat(x) / 100;\n if (base === \"rgb\") return parseFloat(x) * 255 / 100;\n return parseFloat(x);\n } else if (base[i] === \"h\") {\n if (/deg$/.test(x)) {\n return parseFloat(x);\n } else if (baseHues[x] !== void 0) {\n return baseHues[x];\n }\n }\n return parseFloat(x);\n });\n if (name === base) parts.push(1);\n alpha = isRGB ? 1 : parts[size] === void 0 ? 1 : parts[size];\n parts = parts.slice(0, size);\n } else if (cstr.length > 10 && /[0-9](?:\\s|\\/)/.test(cstr)) {\n parts = cstr.match(/([0-9]+)/g).map(function(value) {\n return parseFloat(value);\n });\n space = cstr.match(/([a-z])/ig).join(\"\").toLowerCase();\n }\n } else if (!isNaN(cstr)) {\n space = \"rgb\";\n parts = [cstr >>> 16, (cstr & 65280) >>> 8, cstr & 255];\n } else if (Array.isArray(cstr) || cstr.length) {\n parts = [cstr[0], cstr[1], cstr[2]];\n space = \"rgb\";\n alpha = cstr.length === 4 ? cstr[3] : 1;\n } else if (cstr instanceof Object) {\n if (cstr.r != null || cstr.red != null || cstr.R != null) {\n space = \"rgb\";\n parts = [\n cstr.r || cstr.red || cstr.R || 0,\n cstr.g || cstr.green || cstr.G || 0,\n cstr.b || cstr.blue || cstr.B || 0\n ];\n } else {\n space = \"hsl\";\n parts = [\n cstr.h || cstr.hue || cstr.H || 0,\n cstr.s || cstr.saturation || cstr.S || 0,\n cstr.l || cstr.lightness || cstr.L || cstr.b || cstr.brightness\n ];\n }\n alpha = cstr.a || cstr.alpha || cstr.opacity || 1;\n if (cstr.opacity != null) alpha /= 100;\n }\n return {\n space,\n values: parts,\n alpha\n };\n }\n }\n });\n\n // node_modules/color-space/rgb.js\n var require_rgb = __commonJS({\n \"node_modules/color-space/rgb.js\"(exports, module) {\n \"use strict\";\n module.exports = {\n name: \"rgb\",\n min: [0, 0, 0],\n max: [255, 255, 255],\n channel: [\"red\", \"green\", \"blue\"],\n alias: [\"RGB\"]\n };\n }\n });\n\n // node_modules/color-space/hsl.js\n var require_hsl = __commonJS({\n \"node_modules/color-space/hsl.js\"(exports, module) {\n \"use strict\";\n var rgb = require_rgb();\n module.exports = {\n name: \"hsl\",\n min: [0, 0, 0],\n max: [360, 100, 100],\n channel: [\"hue\", \"saturation\", \"lightness\"],\n alias: [\"HSL\"],\n rgb: function(hsl) {\n var h = hsl[0] / 360, s = hsl[1] / 100, l = hsl[2] / 100, t1, t2, t3, rgb2, val;\n if (s === 0) {\n val = l * 255;\n return [val, val, val];\n }\n if (l < 0.5) {\n t2 = l * (1 + s);\n } else {\n t2 = l + s - l * s;\n }\n t1 = 2 * l - t2;\n rgb2 = [0, 0, 0];\n for (var i = 0; i < 3; i++) {\n t3 = h + 1 / 3 * -(i - 1);\n if (t3 < 0) {\n t3++;\n } else if (t3 > 1) {\n t3--;\n }\n if (6 * t3 < 1) {\n val = t1 + (t2 - t1) * 6 * t3;\n } else if (2 * t3 < 1) {\n val = t2;\n } else if (3 * t3 < 2) {\n val = t1 + (t2 - t1) * (2 / 3 - t3) * 6;\n } else {\n val = t1;\n }\n rgb2[i] = val * 255;\n }\n return rgb2;\n }\n };\n rgb.hsl = function(rgb2) {\n var r = rgb2[0] / 255, g = rgb2[1] / 255, b = rgb2[2] / 255, min = Math.min(r, g, b), max = Math.max(r, g, b), delta = max - min, h, s, l;\n if (max === min) {\n h = 0;\n } else if (r === max) {\n h = (g - b) / delta;\n } else if (g === max) {\n h = 2 + (b - r) / delta;\n } else if (b === max) {\n h = 4 + (r - g) / delta;\n }\n h = Math.min(h * 60, 360);\n if (h < 0) {\n h += 360;\n }\n l = (min + max) / 2;\n if (max === min) {\n s = 0;\n } else if (l <= 0.5) {\n s = delta / (max + min);\n } else {\n s = delta / (2 - max - min);\n }\n return [h, s * 100, l * 100];\n };\n }\n });\n\n // node_modules/color-rgba/index.js\n var require_color_rgba = __commonJS({\n \"node_modules/color-rgba/index.js\"(exports, module) {\n \"use strict\";\n var parse = require_color_parse();\n var hsl = require_hsl();\n var clamp = require_clamp();\n module.exports = function rgba(color) {\n var values, i, l;\n var parsed = parse(color);\n if (!parsed.space) return [];\n values = Array(3);\n values[0] = clamp(parsed.values[0], 0, 255);\n values[1] = clamp(parsed.values[1], 0, 255);\n values[2] = clamp(parsed.values[2], 0, 255);\n if (parsed.space[0] === \"h\") {\n values = hsl.rgb(values);\n }\n values.push(clamp(parsed.alpha, 0, 1));\n return values;\n };\n }\n });\n\n // node_modules/color-normalize/index.js\n var require_color_normalize = __commonJS({\n \"node_modules/color-normalize/index.js\"(exports, module) {\n \"use strict\";\n var rgba = require_color_rgba();\n var clamp = require_clamp();\n var dtype = require_dtype();\n module.exports = function normalize(color, type) {\n if (type === \"float\" || !type) type = \"array\";\n if (type === \"uint\") type = \"uint8\";\n if (type === \"uint_clamped\") type = \"uint8_clamped\";\n var Ctor = dtype(type);\n var output = new Ctor(4);\n var normalize2 = type !== \"uint8\" && type !== \"uint8_clamped\";\n if (!color.length || typeof color === \"string\") {\n color = rgba(color);\n color[0] /= 255;\n color[1] /= 255;\n color[2] /= 255;\n }\n if (isInt(color)) {\n output[0] = color[0];\n output[1] = color[1];\n output[2] = color[2];\n output[3] = color[3] != null ? color[3] : 255;\n if (normalize2) {\n output[0] /= 255;\n output[1] /= 255;\n output[2] /= 255;\n output[3] /= 255;\n }\n return output;\n }\n if (!normalize2) {\n output[0] = clamp(Math.floor(color[0] * 255), 0, 255);\n output[1] = clamp(Math.floor(color[1] * 255), 0, 255);\n output[2] = clamp(Math.floor(color[2] * 255), 0, 255);\n output[3] = color[3] == null ? 255 : clamp(Math.floor(color[3] * 255), 0, 255);\n } else {\n output[0] = color[0];\n output[1] = color[1];\n output[2] = color[2];\n output[3] = color[3] != null ? color[3] : 1;\n }\n return output;\n };\n function isInt(color) {\n if (color instanceof Uint8Array || color instanceof Uint8ClampedArray) return true;\n if (Array.isArray(color) && (color[0] > 1 || color[0] === 0) && (color[1] > 1 || color[1] === 0) && (color[2] > 1 || color[2] === 0) && (!color[3] || color[3] > 1)) return true;\n return false;\n }\n }\n });\n\n // src/lib/gl_format_color.js\n var require_gl_format_color = __commonJS({\n \"src/lib/gl_format_color.js\"(exports, module) {\n \"use strict\";\n var isNumeric = require_fast_isnumeric();\n var tinycolor = require_tinycolor();\n var rgba = require_color_normalize();\n var Colorscale = require_colorscale();\n var colorDflt = require_attributes3().defaultLine;\n var isArrayOrTypedArray = require_array().isArrayOrTypedArray;\n var colorDfltRgba = rgba(colorDflt);\n var opacityDflt = 1;\n function calculateColor(colorIn, opacityIn) {\n var colorOut = colorIn;\n colorOut[3] *= opacityIn;\n return colorOut;\n }\n function validateColor(colorIn) {\n if (isNumeric(colorIn)) return colorDfltRgba;\n var colorOut = rgba(colorIn);\n return colorOut.length ? colorOut : colorDfltRgba;\n }\n function validateOpacity(opacityIn) {\n return isNumeric(opacityIn) ? opacityIn : opacityDflt;\n }\n function formatColor(containerIn, opacityIn, len) {\n var colorIn = containerIn.color;\n if (colorIn && colorIn._inputArray) colorIn = colorIn._inputArray;\n var isArrayColorIn = isArrayOrTypedArray(colorIn);\n var isArrayOpacityIn = isArrayOrTypedArray(opacityIn);\n var cOpts = Colorscale.extractOpts(containerIn);\n var colorOut = [];\n var sclFunc, getColor, getOpacity, colori, opacityi;\n if (cOpts.colorscale !== void 0) {\n sclFunc = Colorscale.makeColorScaleFuncFromTrace(containerIn);\n } else {\n sclFunc = validateColor;\n }\n if (isArrayColorIn) {\n getColor = function(c, i2) {\n return c[i2] === void 0 ? colorDfltRgba : rgba(sclFunc(c[i2]));\n };\n } else getColor = validateColor;\n if (isArrayOpacityIn) {\n getOpacity = function(o, i2) {\n return o[i2] === void 0 ? opacityDflt : validateOpacity(o[i2]);\n };\n } else getOpacity = validateOpacity;\n if (isArrayColorIn || isArrayOpacityIn) {\n for (var i = 0; i < len; i++) {\n colori = getColor(colorIn, i);\n opacityi = getOpacity(opacityIn, i);\n colorOut[i] = calculateColor(colori, opacityi);\n }\n } else colorOut = calculateColor(rgba(colorIn), opacityIn);\n return colorOut;\n }\n function parseColorScale(cont) {\n var cOpts = Colorscale.extractOpts(cont);\n var colorscale = cOpts.colorscale;\n if (cOpts.reversescale) colorscale = Colorscale.flipScale(cOpts.colorscale);\n return colorscale.map(function(elem) {\n var index = elem[0];\n var color = tinycolor(elem[1]);\n var rgb = color.toRgb();\n return {\n index,\n rgb: [rgb.r, rgb.g, rgb.b, rgb.a]\n };\n });\n }\n module.exports = {\n formatColor,\n parseColorScale\n };\n }\n });\n\n // src/traces/scattergl/convert.js\n var require_convert2 = __commonJS({\n \"src/traces/scattergl/convert.js\"(exports, module) {\n \"use strict\";\n var isNumeric = require_fast_isnumeric();\n var svgSdf = require_svg_path_sdf();\n var rgba = require_color_normalize();\n var Registry = require_registry();\n var Lib = require_lib();\n var isArrayOrTypedArray = Lib.isArrayOrTypedArray;\n var Drawing = require_drawing();\n var AxisIDs = require_axis_ids();\n var formatColor = require_gl_format_color().formatColor;\n var subTypes = require_subtypes();\n var makeBubbleSizeFn = require_make_bubble_size_func();\n var helpers = require_helpers12();\n var constants = require_constants14();\n var DESELECTDIM = require_interactions().DESELECTDIM;\n var TEXTOFFSETSIGN = {\n start: 1,\n left: 1,\n end: -1,\n right: -1,\n middle: 0,\n center: 0,\n bottom: 1,\n top: -1\n };\n var appendArrayPointValue = require_helpers2().appendArrayPointValue;\n function convertStyle(gd, trace) {\n var i;\n var opts = {\n marker: void 0,\n markerSel: void 0,\n markerUnsel: void 0,\n line: void 0,\n fill: void 0,\n errorX: void 0,\n errorY: void 0,\n text: void 0,\n textSel: void 0,\n textUnsel: void 0\n };\n var plotGlPixelRatio = gd._context.plotGlPixelRatio;\n if (trace.visible !== true) return opts;\n if (subTypes.hasText(trace)) {\n opts.text = convertTextStyle(gd, trace);\n opts.textSel = convertTextSelection(gd, trace, trace.selected);\n opts.textUnsel = convertTextSelection(gd, trace, trace.unselected);\n }\n if (subTypes.hasMarkers(trace)) {\n opts.marker = convertMarkerStyle(gd, trace);\n opts.markerSel = convertMarkerSelection(gd, trace, trace.selected);\n opts.markerUnsel = convertMarkerSelection(gd, trace, trace.unselected);\n if (!trace.unselected && isArrayOrTypedArray(trace.marker.opacity)) {\n var mo = trace.marker.opacity;\n opts.markerUnsel.opacity = new Array(mo.length);\n for (i = 0; i < mo.length; i++) {\n opts.markerUnsel.opacity[i] = DESELECTDIM * mo[i];\n }\n }\n }\n if (subTypes.hasLines(trace)) {\n opts.line = {\n overlay: true,\n thickness: trace.line.width * plotGlPixelRatio,\n color: trace.line.color,\n opacity: trace.opacity\n };\n var dashes = (constants.DASHES[trace.line.dash] || [1]).slice();\n for (i = 0; i < dashes.length; ++i) {\n dashes[i] *= trace.line.width * plotGlPixelRatio;\n }\n opts.line.dashes = dashes;\n }\n if (trace.error_x && trace.error_x.visible) {\n opts.errorX = convertErrorBarStyle(trace, trace.error_x, plotGlPixelRatio);\n }\n if (trace.error_y && trace.error_y.visible) {\n opts.errorY = convertErrorBarStyle(trace, trace.error_y, plotGlPixelRatio);\n }\n if (!!trace.fill && trace.fill !== \"none\") {\n opts.fill = {\n closed: true,\n fill: trace.fillcolor,\n thickness: 0\n };\n }\n return opts;\n }\n function convertTextStyle(gd, trace) {\n var fullLayout = gd._fullLayout;\n var count = trace._length;\n var textfontIn = trace.textfont;\n var textpositionIn = trace.textposition;\n var textPos = isArrayOrTypedArray(textpositionIn) ? textpositionIn : [textpositionIn];\n var tfc = textfontIn.color;\n var tfs = textfontIn.size;\n var tff = textfontIn.family;\n var tfw = textfontIn.weight;\n var tfy = textfontIn.style;\n var tfv = textfontIn.variant;\n var optsOut = {};\n var i;\n var plotGlPixelRatio = gd._context.plotGlPixelRatio;\n var texttemplate = trace.texttemplate;\n if (texttemplate) {\n optsOut.text = [];\n var d3locale = fullLayout._d3locale;\n var isArray = Array.isArray(texttemplate);\n var N = isArray ? Math.min(texttemplate.length, count) : count;\n var txt = isArray ? function(i2) {\n return texttemplate[i2];\n } : function() {\n return texttemplate;\n };\n for (i = 0; i < N; i++) {\n var d = { i };\n var labels = trace._module.formatLabels(d, trace, fullLayout);\n var pointValues = {};\n appendArrayPointValue(pointValues, trace, i);\n var meta = trace._meta || {};\n optsOut.text.push(Lib.texttemplateString(txt(i), labels, d3locale, pointValues, d, meta));\n }\n } else {\n if (isArrayOrTypedArray(trace.text) && trace.text.length < count) {\n optsOut.text = trace.text.slice();\n } else {\n optsOut.text = trace.text;\n }\n }\n if (isArrayOrTypedArray(optsOut.text)) {\n for (i = optsOut.text.length; i < count; i++) {\n optsOut.text[i] = \"\";\n }\n }\n optsOut.opacity = trace.opacity;\n optsOut.font = {};\n optsOut.align = [];\n optsOut.baseline = [];\n for (i = 0; i < textPos.length; i++) {\n var tp = textPos[i].split(/\\s+/);\n switch (tp[1]) {\n case \"left\":\n optsOut.align.push(\"right\");\n break;\n case \"right\":\n optsOut.align.push(\"left\");\n break;\n default:\n optsOut.align.push(tp[1]);\n }\n switch (tp[0]) {\n case \"top\":\n optsOut.baseline.push(\"bottom\");\n break;\n case \"bottom\":\n optsOut.baseline.push(\"top\");\n break;\n default:\n optsOut.baseline.push(tp[0]);\n }\n }\n if (isArrayOrTypedArray(tfc)) {\n optsOut.color = new Array(count);\n for (i = 0; i < count; i++) {\n optsOut.color[i] = tfc[i];\n }\n } else {\n optsOut.color = tfc;\n }\n if (isArrayOrTypedArray(tfs) || Array.isArray(tff) || isArrayOrTypedArray(tfw) || Array.isArray(tfy) || Array.isArray(tfv)) {\n optsOut.font = new Array(count);\n for (i = 0; i < count; i++) {\n var fonti = optsOut.font[i] = {};\n fonti.size = (Lib.isTypedArray(tfs) ? tfs[i] : isArrayOrTypedArray(tfs) ? isNumeric(tfs[i]) ? tfs[i] : 0 : tfs) * plotGlPixelRatio;\n fonti.family = Array.isArray(tff) ? tff[i] : tff;\n fonti.weight = weightFallBack(isArrayOrTypedArray(tfw) ? tfw[i] : tfw);\n fonti.style = Array.isArray(tfy) ? tfy[i] : tfy;\n fonti.variant = Array.isArray(tfv) ? tfv[i] : tfv;\n }\n } else {\n optsOut.font = {\n size: tfs * plotGlPixelRatio,\n family: tff,\n weight: weightFallBack(tfw),\n style: tfy,\n variant: tfv\n };\n }\n return optsOut;\n }\n function weightFallBack(w) {\n if (w <= 1e3) {\n return w > 500 ? \"bold\" : \"normal\";\n }\n return w;\n }\n function convertMarkerStyle(gd, trace) {\n var count = trace._length;\n var optsIn = trace.marker;\n var optsOut = {};\n var i;\n var multiSymbol = isArrayOrTypedArray(optsIn.symbol);\n var multiAngle = isArrayOrTypedArray(optsIn.angle);\n var multiColor = isArrayOrTypedArray(optsIn.color);\n var multiLineColor = isArrayOrTypedArray(optsIn.line.color);\n var multiOpacity = isArrayOrTypedArray(optsIn.opacity);\n var multiSize = isArrayOrTypedArray(optsIn.size);\n var multiLineWidth = isArrayOrTypedArray(optsIn.line.width);\n var isOpen;\n if (!multiSymbol) isOpen = helpers.isOpenSymbol(optsIn.symbol);\n if (multiSymbol || multiColor || multiLineColor || multiOpacity || multiAngle) {\n optsOut.symbols = new Array(count);\n optsOut.angles = new Array(count);\n optsOut.colors = new Array(count);\n optsOut.borderColors = new Array(count);\n var symbols = optsIn.symbol;\n var angles = optsIn.angle;\n var colors = formatColor(optsIn, optsIn.opacity, count);\n var borderColors = formatColor(optsIn.line, optsIn.opacity, count);\n if (!isArrayOrTypedArray(borderColors[0])) {\n var borderColor = borderColors;\n borderColors = Array(count);\n for (i = 0; i < count; i++) {\n borderColors[i] = borderColor;\n }\n }\n if (!isArrayOrTypedArray(colors[0])) {\n var color = colors;\n colors = Array(count);\n for (i = 0; i < count; i++) {\n colors[i] = color;\n }\n }\n if (!isArrayOrTypedArray(symbols)) {\n var symbol = symbols;\n symbols = Array(count);\n for (i = 0; i < count; i++) {\n symbols[i] = symbol;\n }\n }\n if (!isArrayOrTypedArray(angles)) {\n var angle = angles;\n angles = Array(count);\n for (i = 0; i < count; i++) {\n angles[i] = angle;\n }\n }\n optsOut.symbols = symbols;\n optsOut.angles = angles;\n optsOut.colors = colors;\n optsOut.borderColors = borderColors;\n for (i = 0; i < count; i++) {\n if (multiSymbol) {\n isOpen = helpers.isOpenSymbol(optsIn.symbol[i]);\n }\n if (isOpen) {\n borderColors[i] = colors[i].slice();\n colors[i] = colors[i].slice();\n colors[i][3] = 0;\n }\n }\n optsOut.opacity = trace.opacity;\n optsOut.markers = new Array(count);\n for (i = 0; i < count; i++) {\n optsOut.markers[i] = getSymbolSdf({\n mx: optsOut.symbols[i],\n ma: optsOut.angles[i]\n }, trace);\n }\n } else {\n if (isOpen) {\n optsOut.color = rgba(optsIn.color, \"uint8\");\n optsOut.color[3] = 0;\n optsOut.borderColor = rgba(optsIn.color, \"uint8\");\n } else {\n optsOut.color = rgba(optsIn.color, \"uint8\");\n optsOut.borderColor = rgba(optsIn.line.color, \"uint8\");\n }\n optsOut.opacity = trace.opacity * optsIn.opacity;\n optsOut.marker = getSymbolSdf({\n mx: optsIn.symbol,\n ma: optsIn.angle\n }, trace);\n }\n var sizeFactor = 1;\n var markerSizeFunc = makeBubbleSizeFn(trace, sizeFactor);\n var s;\n if (multiSize || multiLineWidth) {\n var sizes = optsOut.sizes = new Array(count);\n var borderSizes = optsOut.borderSizes = new Array(count);\n var sizeTotal = 0;\n var sizeAvg;\n if (multiSize) {\n for (i = 0; i < count; i++) {\n sizes[i] = markerSizeFunc(optsIn.size[i]);\n sizeTotal += sizes[i];\n }\n sizeAvg = sizeTotal / count;\n } else {\n s = markerSizeFunc(optsIn.size);\n for (i = 0; i < count; i++) {\n sizes[i] = s;\n }\n }\n if (multiLineWidth) {\n for (i = 0; i < count; i++) {\n borderSizes[i] = optsIn.line.width[i];\n }\n } else {\n s = optsIn.line.width;\n for (i = 0; i < count; i++) {\n borderSizes[i] = s;\n }\n }\n optsOut.sizeAvg = sizeAvg;\n } else {\n optsOut.size = markerSizeFunc(optsIn && optsIn.size || 10);\n optsOut.borderSizes = markerSizeFunc(optsIn.line.width);\n }\n return optsOut;\n }\n function convertMarkerSelection(gd, trace, target) {\n var optsIn = trace.marker;\n var optsOut = {};\n if (!target) return optsOut;\n if (target.marker && target.marker.symbol) {\n optsOut = convertMarkerStyle(gd, Lib.extendFlat({}, optsIn, target.marker));\n } else if (target.marker) {\n if (target.marker.size) optsOut.size = target.marker.size;\n if (target.marker.color) optsOut.colors = target.marker.color;\n if (target.marker.opacity !== void 0) optsOut.opacity = target.marker.opacity;\n }\n return optsOut;\n }\n function convertTextSelection(gd, trace, target) {\n var optsOut = {};\n if (!target) return optsOut;\n if (target.textfont) {\n var optsIn = {\n opacity: 1,\n text: trace.text,\n texttemplate: trace.texttemplate,\n textposition: trace.textposition,\n textfont: Lib.extendFlat({}, trace.textfont)\n };\n if (target.textfont) {\n Lib.extendFlat(optsIn.textfont, target.textfont);\n }\n optsOut = convertTextStyle(gd, optsIn);\n }\n return optsOut;\n }\n function convertErrorBarStyle(trace, target, plotGlPixelRatio) {\n var optsOut = {\n capSize: target.width * 2 * plotGlPixelRatio,\n lineWidth: target.thickness * plotGlPixelRatio,\n color: target.color\n };\n if (target.copy_ystyle) {\n optsOut = trace.error_y;\n }\n return optsOut;\n }\n var SYMBOL_SDF_SIZE = constants.SYMBOL_SDF_SIZE;\n var SYMBOL_SIZE = constants.SYMBOL_SIZE;\n var SYMBOL_STROKE = constants.SYMBOL_STROKE;\n var SYMBOL_SDF = {};\n var SYMBOL_SVG_CIRCLE = Drawing.symbolFuncs[0](SYMBOL_SIZE * 0.05);\n function getSymbolSdf(d, trace) {\n var symbol = d.mx;\n if (symbol === \"circle\") return null;\n var symbolPath, symbolSdf;\n var symbolNumber = Drawing.symbolNumber(symbol);\n var symbolFunc = Drawing.symbolFuncs[symbolNumber % 100];\n var symbolNoDot = !!Drawing.symbolNoDot[symbolNumber % 100];\n var symbolNoFill = !!Drawing.symbolNoFill[symbolNumber % 100];\n var isDot = helpers.isDotSymbol(symbol);\n if (d.ma) symbol += \"_\" + d.ma;\n if (SYMBOL_SDF[symbol]) return SYMBOL_SDF[symbol];\n var angle = Drawing.getMarkerAngle(d, trace);\n if (isDot && !symbolNoDot) {\n symbolPath = symbolFunc(SYMBOL_SIZE * 1.1, angle) + SYMBOL_SVG_CIRCLE;\n } else {\n symbolPath = symbolFunc(SYMBOL_SIZE, angle);\n }\n symbolSdf = svgSdf(symbolPath, {\n w: SYMBOL_SDF_SIZE,\n h: SYMBOL_SDF_SIZE,\n viewBox: [-SYMBOL_SIZE, -SYMBOL_SIZE, SYMBOL_SIZE, SYMBOL_SIZE],\n stroke: symbolNoFill ? SYMBOL_STROKE : -SYMBOL_STROKE\n });\n SYMBOL_SDF[symbol] = symbolSdf;\n return symbolSdf || null;\n }\n function convertLinePositions(gd, trace, positions) {\n var len = positions.length;\n var count = len / 2;\n var linePositions;\n var i;\n if (subTypes.hasLines(trace) && count) {\n if (trace.line.shape === \"hv\") {\n linePositions = [];\n for (i = 0; i < count - 1; i++) {\n if (isNaN(positions[i * 2]) || isNaN(positions[i * 2 + 1])) {\n linePositions.push(NaN, NaN, NaN, NaN);\n } else {\n linePositions.push(positions[i * 2], positions[i * 2 + 1]);\n if (!isNaN(positions[i * 2 + 2]) && !isNaN(positions[i * 2 + 3])) {\n linePositions.push(positions[i * 2 + 2], positions[i * 2 + 1]);\n } else {\n linePositions.push(NaN, NaN);\n }\n }\n }\n linePositions.push(positions[len - 2], positions[len - 1]);\n } else if (trace.line.shape === \"hvh\") {\n linePositions = [];\n for (i = 0; i < count - 1; i++) {\n if (isNaN(positions[i * 2]) || isNaN(positions[i * 2 + 1]) || isNaN(positions[i * 2 + 2]) || isNaN(positions[i * 2 + 3])) {\n if (!isNaN(positions[i * 2]) && !isNaN(positions[i * 2 + 1])) {\n linePositions.push(positions[i * 2], positions[i * 2 + 1]);\n } else {\n linePositions.push(NaN, NaN);\n }\n linePositions.push(NaN, NaN);\n } else {\n var midPtX = (positions[i * 2] + positions[i * 2 + 2]) / 2;\n linePositions.push(\n positions[i * 2],\n positions[i * 2 + 1],\n midPtX,\n positions[i * 2 + 1],\n midPtX,\n positions[i * 2 + 3]\n );\n }\n }\n linePositions.push(positions[len - 2], positions[len - 1]);\n } else if (trace.line.shape === \"vhv\") {\n linePositions = [];\n for (i = 0; i < count - 1; i++) {\n if (isNaN(positions[i * 2]) || isNaN(positions[i * 2 + 1]) || isNaN(positions[i * 2 + 2]) || isNaN(positions[i * 2 + 3])) {\n if (!isNaN(positions[i * 2]) && !isNaN(positions[i * 2 + 1])) {\n linePositions.push(positions[i * 2], positions[i * 2 + 1]);\n } else {\n linePositions.push(NaN, NaN);\n }\n linePositions.push(NaN, NaN);\n } else {\n var midPtY = (positions[i * 2 + 1] + positions[i * 2 + 3]) / 2;\n linePositions.push(\n positions[i * 2],\n positions[i * 2 + 1],\n positions[i * 2],\n midPtY,\n positions[i * 2 + 2],\n midPtY\n );\n }\n }\n linePositions.push(positions[len - 2], positions[len - 1]);\n } else if (trace.line.shape === \"vh\") {\n linePositions = [];\n for (i = 0; i < count - 1; i++) {\n if (isNaN(positions[i * 2]) || isNaN(positions[i * 2 + 1])) {\n linePositions.push(NaN, NaN, NaN, NaN);\n } else {\n linePositions.push(positions[i * 2], positions[i * 2 + 1]);\n if (!isNaN(positions[i * 2 + 2]) && !isNaN(positions[i * 2 + 3])) {\n linePositions.push(positions[i * 2], positions[i * 2 + 3]);\n } else {\n linePositions.push(NaN, NaN);\n }\n }\n }\n linePositions.push(positions[len - 2], positions[len - 1]);\n } else {\n linePositions = positions;\n }\n }\n var hasNaN = false;\n for (i = 0; i < linePositions.length; i++) {\n if (isNaN(linePositions[i])) {\n hasNaN = true;\n break;\n }\n }\n var join = hasNaN || linePositions.length > constants.TOO_MANY_POINTS ? \"rect\" : subTypes.hasMarkers(trace) ? \"rect\" : \"round\";\n if (hasNaN && trace.connectgaps) {\n var lastX = linePositions[0];\n var lastY = linePositions[1];\n for (i = 0; i < linePositions.length; i += 2) {\n if (isNaN(linePositions[i]) || isNaN(linePositions[i + 1])) {\n linePositions[i] = lastX;\n linePositions[i + 1] = lastY;\n } else {\n lastX = linePositions[i];\n lastY = linePositions[i + 1];\n }\n }\n }\n return {\n join,\n positions: linePositions\n };\n }\n function convertErrorBarPositions(gd, trace, positions, x, y) {\n var makeComputeError = Registry.getComponentMethod(\"errorbars\", \"makeComputeError\");\n var xa = AxisIDs.getFromId(gd, trace.xaxis, \"x\");\n var ya = AxisIDs.getFromId(gd, trace.yaxis, \"y\");\n var count = positions.length / 2;\n var out = {};\n function convertOneAxis(coords, ax) {\n var axLetter = ax._id.charAt(0);\n var opts = trace[\"error_\" + axLetter];\n if (opts && opts.visible && (ax.type === \"linear\" || ax.type === \"log\")) {\n var computeError = makeComputeError(opts);\n var pOffset = { x: 0, y: 1 }[axLetter];\n var eOffset = { x: [0, 1, 2, 3], y: [2, 3, 0, 1] }[axLetter];\n var errors = new Float64Array(4 * count);\n var minShoe = Infinity;\n var maxHat = -Infinity;\n for (var i = 0, j = 0; i < count; i++, j += 4) {\n var dc = coords[i];\n if (isNumeric(dc)) {\n var dl = positions[i * 2 + pOffset];\n var vals = computeError(dc, i);\n var lv = vals[0];\n var hv = vals[1];\n if (isNumeric(lv) && isNumeric(hv)) {\n var shoe = dc - lv;\n var hat = dc + hv;\n errors[j + eOffset[0]] = dl - ax.c2l(shoe);\n errors[j + eOffset[1]] = ax.c2l(hat) - dl;\n errors[j + eOffset[2]] = 0;\n errors[j + eOffset[3]] = 0;\n minShoe = Math.min(minShoe, dc - lv);\n maxHat = Math.max(maxHat, dc + hv);\n }\n }\n }\n out[axLetter] = {\n positions,\n errors,\n _bnds: [minShoe, maxHat]\n };\n }\n }\n convertOneAxis(x, xa);\n convertOneAxis(y, ya);\n return out;\n }\n function convertTextPosition(gd, trace, textOpts, markerOpts) {\n var count = trace._length;\n var out = {};\n var i;\n if (subTypes.hasMarkers(trace)) {\n var fontOpts = textOpts.font;\n var align = textOpts.align;\n var baseline = textOpts.baseline;\n out.offset = new Array(count);\n for (i = 0; i < count; i++) {\n var ms = markerOpts.sizes ? markerOpts.sizes[i] : markerOpts.size;\n var fs = isArrayOrTypedArray(fontOpts) ? fontOpts[i].size : fontOpts.size;\n var a = isArrayOrTypedArray(align) ? align.length > 1 ? align[i] : align[0] : align;\n var b = isArrayOrTypedArray(baseline) ? baseline.length > 1 ? baseline[i] : baseline[0] : baseline;\n var hSign = TEXTOFFSETSIGN[a];\n var vSign = TEXTOFFSETSIGN[b];\n var xPad = ms ? ms / 0.8 + 1 : 0;\n var yPad = -vSign * xPad - vSign * 0.5;\n out.offset[i] = [hSign * xPad / fs, yPad / fs];\n }\n }\n return out;\n }\n module.exports = {\n style: convertStyle,\n markerStyle: convertMarkerStyle,\n markerSelection: convertMarkerSelection,\n linePositions: convertLinePositions,\n errorBarPositions: convertErrorBarPositions,\n textPosition: convertTextPosition\n };\n }\n });\n\n // src/traces/scattergl/scene_update.js\n var require_scene_update = __commonJS({\n \"src/traces/scattergl/scene_update.js\"(exports, module) {\n \"use strict\";\n var Lib = require_lib();\n module.exports = function sceneUpdate(gd, subplot) {\n var scene = subplot._scene;\n var resetOpts = {\n // number of traces in subplot, since scene:subplot -> 1:1\n count: 0,\n // whether scene requires init hook in plot call (dirty plot call)\n dirty: true,\n // last used options\n lineOptions: [],\n fillOptions: [],\n markerOptions: [],\n markerSelectedOptions: [],\n markerUnselectedOptions: [],\n errorXOptions: [],\n errorYOptions: [],\n textOptions: [],\n textSelectedOptions: [],\n textUnselectedOptions: [],\n // selection batches\n selectBatch: [],\n unselectBatch: []\n };\n var initOpts = {\n fill2d: false,\n scatter2d: false,\n error2d: false,\n line2d: false,\n glText: false,\n select2d: false\n };\n if (!subplot._scene) {\n scene = subplot._scene = {};\n scene.init = function init() {\n Lib.extendFlat(scene, initOpts, resetOpts);\n };\n scene.init();\n scene.update = function update(opt) {\n var opts = Lib.repeat(opt, scene.count);\n if (scene.fill2d) scene.fill2d.update(opts);\n if (scene.scatter2d) scene.scatter2d.update(opts);\n if (scene.line2d) scene.line2d.update(opts);\n if (scene.error2d) scene.error2d.update(opts.concat(opts));\n if (scene.select2d) scene.select2d.update(opts);\n if (scene.glText) {\n for (var i = 0; i < scene.count; i++) {\n scene.glText[i].update(opt);\n }\n }\n };\n scene.draw = function draw() {\n var count = scene.count;\n var fill2d = scene.fill2d;\n var error2d = scene.error2d;\n var line2d = scene.line2d;\n var scatter2d = scene.scatter2d;\n var glText = scene.glText;\n var select2d = scene.select2d;\n var selectBatch = scene.selectBatch;\n var unselectBatch = scene.unselectBatch;\n for (var i = 0; i < count; i++) {\n if (fill2d && scene.fillOrder[i]) {\n fill2d.draw(scene.fillOrder[i]);\n }\n if (line2d && scene.lineOptions[i]) {\n line2d.draw(i);\n }\n if (error2d) {\n if (scene.errorXOptions[i]) error2d.draw(i);\n if (scene.errorYOptions[i]) error2d.draw(i + count);\n }\n if (scatter2d && scene.markerOptions[i]) {\n if (unselectBatch[i].length) {\n var arg = Lib.repeat([], scene.count);\n arg[i] = unselectBatch[i];\n scatter2d.draw(arg);\n } else if (!selectBatch[i].length) {\n scatter2d.draw(i);\n }\n }\n if (glText[i] && scene.textOptions[i]) {\n glText[i].render();\n }\n }\n if (select2d) {\n select2d.draw(selectBatch);\n }\n scene.dirty = false;\n };\n scene.destroy = function destroy() {\n if (scene.fill2d && scene.fill2d.destroy) scene.fill2d.destroy();\n if (scene.scatter2d && scene.scatter2d.destroy) scene.scatter2d.destroy();\n if (scene.error2d && scene.error2d.destroy) scene.error2d.destroy();\n if (scene.line2d && scene.line2d.destroy) scene.line2d.destroy();\n if (scene.select2d && scene.select2d.destroy) scene.select2d.destroy();\n if (scene.glText) {\n scene.glText.forEach(function(text) {\n if (text.destroy) text.destroy();\n });\n }\n scene.lineOptions = null;\n scene.fillOptions = null;\n scene.markerOptions = null;\n scene.markerSelectedOptions = null;\n scene.markerUnselectedOptions = null;\n scene.errorXOptions = null;\n scene.errorYOptions = null;\n scene.textOptions = null;\n scene.textSelectedOptions = null;\n scene.textUnselectedOptions = null;\n scene.selectBatch = null;\n scene.unselectBatch = null;\n subplot._scene = null;\n };\n }\n if (!scene.dirty) {\n Lib.extendFlat(scene, resetOpts);\n }\n return scene;\n };\n }\n });\n\n // src/traces/scattergl/calc.js\n var require_calc5 = __commonJS({\n \"src/traces/scattergl/calc.js\"(exports, module) {\n \"use strict\";\n var cluster = require_point_cluster();\n var Lib = require_lib();\n var AxisIDs = require_axis_ids();\n var findExtremes = require_autorange().findExtremes;\n var alignPeriod = require_align_period();\n var scatterCalc = require_calc3();\n var calcMarkerSize = scatterCalc.calcMarkerSize;\n var calcAxisExpansion = scatterCalc.calcAxisExpansion;\n var setFirstScatter = scatterCalc.setFirstScatter;\n var calcColorscale = require_colorscale_calc();\n var convert = require_convert2();\n var sceneUpdate = require_scene_update();\n var BADNUM = require_numerical().BADNUM;\n var TOO_MANY_POINTS = require_constants14().TOO_MANY_POINTS;\n module.exports = function calc(gd, trace) {\n var fullLayout = gd._fullLayout;\n var xa = trace._xA = AxisIDs.getFromId(gd, trace.xaxis, \"x\");\n var ya = trace._yA = AxisIDs.getFromId(gd, trace.yaxis, \"y\");\n var subplot = fullLayout._plots[trace.xaxis + trace.yaxis];\n var len = trace._length;\n var hasTooManyPoints = len >= TOO_MANY_POINTS;\n var len2 = len * 2;\n var stash = {};\n var i;\n var origX = xa.makeCalcdata(trace, \"x\");\n var origY = ya.makeCalcdata(trace, \"y\");\n var xObj = alignPeriod(trace, xa, \"x\", origX);\n var yObj = alignPeriod(trace, ya, \"y\", origY);\n var x = xObj.vals;\n var y = yObj.vals;\n trace._x = x;\n trace._y = y;\n if (trace.xperiodalignment) {\n trace._origX = origX;\n trace._xStarts = xObj.starts;\n trace._xEnds = xObj.ends;\n }\n if (trace.yperiodalignment) {\n trace._origY = origY;\n trace._yStarts = yObj.starts;\n trace._yEnds = yObj.ends;\n }\n var positions = new Array(len2);\n var _ids = new Array(len);\n for (i = 0; i < len; i++) {\n positions[i * 2] = x[i] === BADNUM ? NaN : x[i];\n positions[i * 2 + 1] = y[i] === BADNUM ? NaN : y[i];\n _ids[i] = i;\n }\n if (xa.type === \"log\") {\n for (i = 0; i < len2; i += 2) {\n positions[i] = xa.c2l(positions[i]);\n }\n }\n if (ya.type === \"log\") {\n for (i = 1; i < len2; i += 2) {\n positions[i] = ya.c2l(positions[i]);\n }\n }\n if (hasTooManyPoints && (xa.type !== \"log\" && ya.type !== \"log\")) {\n stash.tree = cluster(positions);\n } else {\n stash.ids = _ids;\n }\n calcColorscale(gd, trace);\n var opts = sceneOptions(gd, subplot, trace, positions, x, y);\n var scene = sceneUpdate(gd, subplot);\n setFirstScatter(fullLayout, trace);\n var ppad;\n if (!hasTooManyPoints) {\n ppad = calcMarkerSize(trace, len);\n } else if (opts.marker) {\n ppad = opts.marker.sizeAvg || Math.max(opts.marker.size, 3);\n }\n calcAxisExpansion(gd, trace, xa, ya, x, y, ppad);\n if (opts.errorX) expandForErrorBars(trace, xa, opts.errorX);\n if (opts.errorY) expandForErrorBars(trace, ya, opts.errorY);\n if (opts.fill && !scene.fill2d) scene.fill2d = true;\n if (opts.marker && !scene.scatter2d) scene.scatter2d = true;\n if (opts.line && !scene.line2d) scene.line2d = true;\n if ((opts.errorX || opts.errorY) && !scene.error2d) scene.error2d = true;\n if (opts.text && !scene.glText) scene.glText = true;\n if (opts.marker) opts.marker.snap = len;\n scene.lineOptions.push(opts.line);\n scene.errorXOptions.push(opts.errorX);\n scene.errorYOptions.push(opts.errorY);\n scene.fillOptions.push(opts.fill);\n scene.markerOptions.push(opts.marker);\n scene.markerSelectedOptions.push(opts.markerSel);\n scene.markerUnselectedOptions.push(opts.markerUnsel);\n scene.textOptions.push(opts.text);\n scene.textSelectedOptions.push(opts.textSel);\n scene.textUnselectedOptions.push(opts.textUnsel);\n scene.selectBatch.push([]);\n scene.unselectBatch.push([]);\n stash._scene = scene;\n stash.index = scene.count;\n stash.x = x;\n stash.y = y;\n stash.positions = positions;\n scene.count++;\n return [{ x: false, y: false, t: stash, trace }];\n };\n function expandForErrorBars(trace, ax, opts) {\n var extremes = trace._extremes[ax._id];\n var errExt = findExtremes(ax, opts._bnds, { padded: true });\n extremes.min = extremes.min.concat(errExt.min);\n extremes.max = extremes.max.concat(errExt.max);\n }\n function sceneOptions(gd, subplot, trace, positions, x, y) {\n var opts = convert.style(gd, trace);\n if (opts.marker) {\n opts.marker.positions = positions;\n }\n if (opts.line && positions.length > 1) {\n Lib.extendFlat(\n opts.line,\n convert.linePositions(gd, trace, positions)\n );\n }\n if (opts.errorX || opts.errorY) {\n var errors = convert.errorBarPositions(gd, trace, positions, x, y);\n if (opts.errorX) {\n Lib.extendFlat(opts.errorX, errors.x);\n }\n if (opts.errorY) {\n Lib.extendFlat(opts.errorY, errors.y);\n }\n }\n if (opts.text) {\n Lib.extendFlat(\n opts.text,\n { positions },\n convert.textPosition(gd, trace, opts.text, opts.marker)\n );\n Lib.extendFlat(\n opts.textSel,\n { positions },\n convert.textPosition(gd, trace, opts.text, opts.markerSel)\n );\n Lib.extendFlat(\n opts.textUnsel,\n { positions },\n convert.textPosition(gd, trace, opts.text, opts.markerUnsel)\n );\n }\n return opts;\n }\n }\n });\n\n // src/traces/scattergl/edit_style.js\n var require_edit_style = __commonJS({\n \"src/traces/scattergl/edit_style.js\"(exports, module) {\n \"use strict\";\n var Lib = require_lib();\n var Color = require_color();\n var DESELECTDIM = require_interactions().DESELECTDIM;\n function styleTextSelection(cd) {\n var cd0 = cd[0];\n var trace = cd0.trace;\n var stash = cd0.t;\n var scene = stash._scene;\n var index = stash.index;\n var els = scene.selectBatch[index];\n var unels = scene.unselectBatch[index];\n var baseOpts = scene.textOptions[index];\n var selOpts = scene.textSelectedOptions[index] || {};\n var unselOpts = scene.textUnselectedOptions[index] || {};\n var opts = Lib.extendFlat({}, baseOpts);\n var i, j;\n if (els.length || unels.length) {\n var stc = selOpts.color;\n var utc = unselOpts.color;\n var base = baseOpts.color;\n var hasArrayBase = Lib.isArrayOrTypedArray(base);\n opts.color = new Array(trace._length);\n for (i = 0; i < els.length; i++) {\n j = els[i];\n opts.color[j] = stc || (hasArrayBase ? base[j] : base);\n }\n for (i = 0; i < unels.length; i++) {\n j = unels[i];\n var basej = hasArrayBase ? base[j] : base;\n opts.color[j] = utc ? utc : stc ? basej : Color.addOpacity(basej, DESELECTDIM);\n }\n }\n scene.glText[index].update(opts);\n }\n module.exports = {\n styleTextSelection\n };\n }\n });\n\n // src/traces/scattergl/select.js\n var require_select3 = __commonJS({\n \"src/traces/scattergl/select.js\"(exports, module) {\n \"use strict\";\n var subTypes = require_subtypes();\n var styleTextSelection = require_edit_style().styleTextSelection;\n module.exports = function select(searchInfo, selectionTester) {\n var cd = searchInfo.cd;\n var xa = searchInfo.xaxis;\n var ya = searchInfo.yaxis;\n var selection = [];\n var trace = cd[0].trace;\n var stash = cd[0].t;\n var len = trace._length;\n var x = stash.x;\n var y = stash.y;\n var scene = stash._scene;\n var index = stash.index;\n if (!scene) return selection;\n var hasText = subTypes.hasText(trace);\n var hasMarkers = subTypes.hasMarkers(trace);\n var hasOnlyLines = !hasMarkers && !hasText;\n if (trace.visible !== true || hasOnlyLines) return selection;\n var els = [];\n var unels = [];\n if (selectionTester !== false && !selectionTester.degenerate) {\n for (var i = 0; i < len; i++) {\n if (selectionTester.contains([stash.xpx[i], stash.ypx[i]], false, i, searchInfo)) {\n els.push(i);\n selection.push({\n pointNumber: i,\n x: xa.c2d(x[i]),\n y: ya.c2d(y[i])\n });\n } else {\n unels.push(i);\n }\n }\n }\n if (hasMarkers) {\n var scatter2d = scene.scatter2d;\n if (!els.length && !unels.length) {\n var baseOpts = new Array(scene.count);\n baseOpts[index] = scene.markerOptions[index];\n scatter2d.update.apply(scatter2d, baseOpts);\n } else if (!scene.selectBatch[index].length && !scene.unselectBatch[index].length) {\n var unselOpts = new Array(scene.count);\n unselOpts[index] = scene.markerUnselectedOptions[index];\n scatter2d.update.apply(scatter2d, unselOpts);\n }\n }\n scene.selectBatch[index] = els;\n scene.unselectBatch[index] = unels;\n if (hasText) {\n styleTextSelection(cd);\n }\n return selection;\n };\n }\n });\n\n // src/traces/scattergl/base_index.js\n var require_base_index = __commonJS({\n \"src/traces/scattergl/base_index.js\"(exports, module) {\n \"use strict\";\n var hover = require_hover3();\n module.exports = {\n moduleType: \"trace\",\n name: \"scattergl\",\n basePlotModule: require_cartesian(),\n categories: [\"gl\", \"regl\", \"cartesian\", \"symbols\", \"errorBarsOK\", \"showLegend\", \"scatter-like\"],\n attributes: require_attributes23(),\n supplyDefaults: require_defaults19(),\n crossTraceDefaults: require_cross_trace_defaults2(),\n colorbar: require_marker_colorbar(),\n formatLabels: require_format_labels2(),\n calc: require_calc5(),\n hoverPoints: hover.hoverPoints,\n selectPoints: require_select3(),\n meta: {}\n };\n }\n });\n\n // node_modules/color-id/index.js\n var require_color_id = __commonJS({\n \"node_modules/color-id/index.js\"(exports, module) {\n \"use strict\";\n var clamp = require_clamp();\n module.exports = toNumber;\n module.exports.to = toNumber;\n module.exports.from = fromNumber;\n function toNumber(rgba, normalized) {\n if (normalized == null) normalized = true;\n var r = rgba[0], g = rgba[1], b = rgba[2], a = rgba[3];\n if (a == null) a = normalized ? 1 : 255;\n if (normalized) {\n r *= 255;\n g *= 255;\n b *= 255;\n a *= 255;\n }\n r = clamp(r, 0, 255) & 255;\n g = clamp(g, 0, 255) & 255;\n b = clamp(b, 0, 255) & 255;\n a = clamp(a, 0, 255) & 255;\n var n = r * 16777216 + (g << 16) + (b << 8) + a;\n return n;\n }\n function fromNumber(n, normalized) {\n n = +n;\n var r = n >>> 24;\n var g = (n & 16711680) >>> 16;\n var b = (n & 65280) >>> 8;\n var a = n & 255;\n if (normalized === false) return [r, g, b, a];\n return [r / 255, g / 255, b / 255, a / 255];\n }\n }\n });\n\n // node_modules/object-assign/index.js\n var require_object_assign = __commonJS({\n \"node_modules/object-assign/index.js\"(exports, module) {\n \"use strict\";\n var getOwnPropertySymbols = Object.getOwnPropertySymbols;\n var hasOwnProperty2 = Object.prototype.hasOwnProperty;\n var propIsEnumerable = Object.prototype.propertyIsEnumerable;\n function toObject(val) {\n if (val === null || val === void 0) {\n throw new TypeError(\"Object.assign cannot be called with null or undefined\");\n }\n return Object(val);\n }\n function shouldUseNative() {\n try {\n if (!Object.assign) {\n return false;\n }\n var test1 = new String(\"abc\");\n test1[5] = \"de\";\n if (Object.getOwnPropertyNames(test1)[0] === \"5\") {\n return false;\n }\n var test2 = {};\n for (var i = 0; i < 10; i++) {\n test2[\"_\" + String.fromCharCode(i)] = i;\n }\n var order2 = Object.getOwnPropertyNames(test2).map(function(n) {\n return test2[n];\n });\n if (order2.join(\"\") !== \"0123456789\") {\n return false;\n }\n var test3 = {};\n \"abcdefghijklmnopqrst\".split(\"\").forEach(function(letter) {\n test3[letter] = letter;\n });\n if (Object.keys(Object.assign({}, test3)).join(\"\") !== \"abcdefghijklmnopqrst\") {\n return false;\n }\n return true;\n } catch (err) {\n return false;\n }\n }\n module.exports = shouldUseNative() ? Object.assign : function(target, source) {\n var from;\n var to = toObject(target);\n var symbols;\n for (var s = 1; s < arguments.length; s++) {\n from = Object(arguments[s]);\n for (var key in from) {\n if (hasOwnProperty2.call(from, key)) {\n to[key] = from[key];\n }\n }\n if (getOwnPropertySymbols) {\n symbols = getOwnPropertySymbols(from);\n for (var i = 0; i < symbols.length; i++) {\n if (propIsEnumerable.call(from, symbols[i])) {\n to[symbols[i]] = from[symbols[i]];\n }\n }\n }\n }\n return to;\n };\n }\n });\n\n // node_modules/glslify/browser.js\n var require_browser = __commonJS({\n \"node_modules/glslify/browser.js\"(exports, module) {\n module.exports = function(strings) {\n if (typeof strings === \"string\") strings = [strings];\n var exprs = [].slice.call(arguments, 1);\n var parts = [];\n for (var i = 0; i < strings.length - 1; i++) {\n parts.push(strings[i], exprs[i] || \"\");\n }\n parts.push(strings[i]);\n return parts.join(\"\");\n };\n }\n });\n\n // node_modules/update-diff/index.js\n var require_update_diff = __commonJS({\n \"node_modules/update-diff/index.js\"(exports, module) {\n \"use strict\";\n module.exports = function updateDiff(obj, diff, mappers) {\n if (!Array.isArray(mappers)) mappers = [].slice.call(arguments, 2);\n for (var i = 0, l = mappers.length; i < l; i++) {\n var dict = mappers[i];\n for (var prop in dict) {\n if (diff[prop] !== void 0 && !Array.isArray(diff[prop]) && obj[prop] === diff[prop]) continue;\n if (prop in diff) {\n var result;\n if (dict[prop] === true) result = diff[prop];\n else if (dict[prop] === false) continue;\n else if (typeof dict[prop] === \"function\") {\n result = dict[prop](diff[prop], obj, diff);\n if (result === void 0) continue;\n }\n obj[prop] = result;\n }\n }\n }\n return obj;\n };\n }\n });\n\n // node_modules/is-iexplorer/index.js\n var require_is_iexplorer = __commonJS({\n \"node_modules/is-iexplorer/index.js\"(exports, module) {\n \"use strict\";\n module.exports = typeof navigator !== \"undefined\" && (/MSIE/.test(navigator.userAgent) || /Trident\\//.test(navigator.appVersion));\n }\n });\n\n // node_modules/to-float32/index.js\n var require_to_float32 = __commonJS({\n \"node_modules/to-float32/index.js\"(exports, module) {\n \"use strict\";\n module.exports = float32;\n module.exports.float32 = module.exports.float = float32;\n module.exports.fract32 = module.exports.fract = fract32;\n var narr = new Float32Array(1);\n function fract32(arr, fract) {\n if (arr.length) {\n if (arr instanceof Float32Array) return new Float32Array(arr.length);\n if (!(fract instanceof Float32Array)) fract = float32(arr);\n for (var i = 0, l = fract.length; i < l; i++) {\n fract[i] = arr[i] - fract[i];\n }\n return fract;\n }\n return float32(arr - float32(arr));\n }\n function float32(arr) {\n if (arr.length) {\n if (arr instanceof Float32Array) return arr;\n return new Float32Array(arr);\n }\n narr[0] = arr;\n return narr[0];\n }\n }\n });\n\n // node_modules/regl-scatter2d/bundle.js\n var require_bundle = __commonJS({\n \"node_modules/regl-scatter2d/bundle.js\"(exports, module) {\n \"use strict\";\n function _iterableToArrayLimit(arr, i) {\n var _i = null == arr ? null : \"undefined\" != typeof Symbol && arr[Symbol.iterator] || arr[\"@@iterator\"];\n if (null != _i) {\n var _s, _e, _x, _r, _arr = [], _n = true, _d = false;\n try {\n if (_x = (_i = _i.call(arr)).next, 0 === i) {\n if (Object(_i) !== _i) return;\n _n = false;\n } else for (; !(_n = (_s = _x.call(_i)).done) && (_arr.push(_s.value), _arr.length !== i); _n = true) ;\n } catch (err) {\n _d = true, _e = err;\n } finally {\n try {\n if (!_n && null != _i.return && (_r = _i.return(), Object(_r) !== _r)) return;\n } finally {\n if (_d) throw _e;\n }\n }\n return _arr;\n }\n }\n function _slicedToArray(arr, i) {\n return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest();\n }\n function _toConsumableArray(arr) {\n return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread();\n }\n function _arrayWithoutHoles(arr) {\n if (Array.isArray(arr)) return _arrayLikeToArray(arr);\n }\n function _arrayWithHoles(arr) {\n if (Array.isArray(arr)) return arr;\n }\n function _iterableToArray(iter) {\n if (typeof Symbol !== \"undefined\" && iter[Symbol.iterator] != null || iter[\"@@iterator\"] != null) return Array.from(iter);\n }\n function _unsupportedIterableToArray(o, minLen) {\n if (!o) return;\n if (typeof o === \"string\") return _arrayLikeToArray(o, minLen);\n var n = Object.prototype.toString.call(o).slice(8, -1);\n if (n === \"Object\" && o.constructor) n = o.constructor.name;\n if (n === \"Map\" || n === \"Set\") return Array.from(o);\n if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen);\n }\n function _arrayLikeToArray(arr, len) {\n if (len == null || len > arr.length) len = arr.length;\n for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i];\n return arr2;\n }\n function _nonIterableSpread() {\n throw new TypeError(\"Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n }\n function _nonIterableRest() {\n throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n }\n var rgba = require_color_normalize();\n var getBounds = require_array_bounds();\n var colorId = require_color_id();\n var cluster = require_point_cluster();\n var extend = require_object_assign();\n var glslify = require_browser();\n var pick = require_pick_by_alias();\n var updateDiff = require_update_diff();\n var flatten = require_flatten_vertex_data();\n var ie = require_is_iexplorer();\n var f32 = require_to_float32();\n var parseRect = require_parse_rect();\n var scatter = Scatter;\n function Scatter(regl, options) {\n var _this = this;\n if (!(this instanceof Scatter)) return new Scatter(regl, options);\n if (typeof regl === \"function\") {\n if (!options) options = {};\n options.regl = regl;\n } else {\n options = regl;\n regl = null;\n }\n if (options && options.length) options.positions = options;\n regl = options.regl;\n var gl = regl._gl, paletteTexture, palette = [], paletteIds = {}, groups = [], markerTextures = [null], markerCache = [null];\n var maxColors = 255, maxSize = 100;\n this.tooManyColors = ie;\n paletteTexture = regl.texture({\n data: new Uint8Array(maxColors * 4),\n width: maxColors,\n height: 1,\n type: \"uint8\",\n format: \"rgba\",\n wrapS: \"clamp\",\n wrapT: \"clamp\",\n mag: \"nearest\",\n min: \"nearest\"\n });\n extend(this, {\n regl,\n gl,\n groups,\n markerCache,\n markerTextures,\n palette,\n paletteIds,\n paletteTexture,\n maxColors,\n maxSize,\n canvas: gl.canvas\n });\n this.update(options);\n var shaderOptions = {\n uniforms: {\n constPointSize: !!options.constPointSize,\n opacity: regl.prop(\"opacity\"),\n paletteSize: function paletteSize(ctx, prop) {\n return [_this.tooManyColors ? 0 : maxColors, paletteTexture.height];\n },\n pixelRatio: regl.context(\"pixelRatio\"),\n scale: regl.prop(\"scale\"),\n scaleFract: regl.prop(\"scaleFract\"),\n translate: regl.prop(\"translate\"),\n translateFract: regl.prop(\"translateFract\"),\n markerTexture: regl.prop(\"markerTexture\"),\n paletteTexture\n },\n attributes: {\n // FIXME: optimize these parts\n x: function x(ctx, prop) {\n return prop.xAttr || {\n buffer: prop.positionBuffer,\n stride: 8,\n offset: 0\n };\n },\n y: function y(ctx, prop) {\n return prop.yAttr || {\n buffer: prop.positionBuffer,\n stride: 8,\n offset: 4\n };\n },\n xFract: function xFract(ctx, prop) {\n return prop.xAttr ? {\n constant: [0, 0]\n } : {\n buffer: prop.positionFractBuffer,\n stride: 8,\n offset: 0\n };\n },\n yFract: function yFract(ctx, prop) {\n return prop.yAttr ? {\n constant: [0, 0]\n } : {\n buffer: prop.positionFractBuffer,\n stride: 8,\n offset: 4\n };\n },\n size: function size(ctx, prop) {\n return prop.size.length ? {\n buffer: prop.sizeBuffer,\n stride: 2,\n offset: 0\n } : {\n constant: [Math.round(prop.size * 255 / _this.maxSize)]\n };\n },\n borderSize: function borderSize(ctx, prop) {\n return prop.borderSize.length ? {\n buffer: prop.sizeBuffer,\n stride: 2,\n offset: 1\n } : {\n constant: [Math.round(prop.borderSize * 255 / _this.maxSize)]\n };\n },\n colorId: function colorId2(ctx, prop) {\n return prop.color.length ? {\n buffer: prop.colorBuffer,\n stride: _this.tooManyColors ? 8 : 4,\n offset: 0\n } : {\n constant: _this.tooManyColors ? palette.slice(prop.color * 4, prop.color * 4 + 4) : [prop.color]\n };\n },\n borderColorId: function borderColorId(ctx, prop) {\n return prop.borderColor.length ? {\n buffer: prop.colorBuffer,\n stride: _this.tooManyColors ? 8 : 4,\n offset: _this.tooManyColors ? 4 : 2\n } : {\n constant: _this.tooManyColors ? palette.slice(prop.borderColor * 4, prop.borderColor * 4 + 4) : [prop.borderColor]\n };\n },\n isActive: function isActive(ctx, prop) {\n return prop.activation === true ? {\n constant: [1]\n } : prop.activation ? prop.activation : {\n constant: [0]\n };\n }\n },\n blend: {\n enable: true,\n color: [0, 0, 0, 1],\n // photoshop blending\n func: {\n srcRGB: \"src alpha\",\n dstRGB: \"one minus src alpha\",\n srcAlpha: \"one minus dst alpha\",\n dstAlpha: \"one\"\n }\n },\n scissor: {\n enable: true,\n box: regl.prop(\"viewport\")\n },\n viewport: regl.prop(\"viewport\"),\n stencil: {\n enable: false\n },\n depth: {\n enable: false\n },\n elements: regl.prop(\"elements\"),\n count: regl.prop(\"count\"),\n offset: regl.prop(\"offset\"),\n primitive: \"points\"\n };\n var markerOptions = extend({}, shaderOptions);\n markerOptions.frag = glslify([\"precision highp float;\\n#define GLSLIFY 1\\n\\nuniform float opacity;\\nuniform sampler2D markerTexture;\\n\\nvarying vec4 fragColor, fragBorderColor;\\nvarying float fragWidth, fragBorderColorLevel, fragColorLevel;\\n\\nfloat smoothStep(float x, float y) {\\n return 1.0 / (1.0 + exp(50.0*(x - y)));\\n}\\n\\nvoid main() {\\n float dist = texture2D(markerTexture, gl_PointCoord).r, delta = fragWidth;\\n\\n // max-distance alpha\\n if (dist < 0.003) discard;\\n\\n // null-border case\\n if (fragBorderColorLevel == fragColorLevel || fragBorderColor.a == 0.) {\\n float colorAmt = smoothstep(.5 - delta, .5 + delta, dist);\\n gl_FragColor = vec4(fragColor.rgb, colorAmt * fragColor.a * opacity);\\n }\\n else {\\n float borderColorAmt = smoothstep(fragBorderColorLevel - delta, fragBorderColorLevel + delta, dist);\\n float colorAmt = smoothstep(fragColorLevel - delta, fragColorLevel + delta, dist);\\n\\n vec4 color = fragBorderColor;\\n color.a *= borderColorAmt;\\n color = mix(color, fragColor, colorAmt);\\n color.a *= opacity;\\n\\n gl_FragColor = color;\\n }\\n\\n}\\n\"]);\n markerOptions.vert = glslify([\"precision highp float;\\n#define GLSLIFY 1\\n\\nattribute float x, y, xFract, yFract;\\nattribute float size, borderSize;\\nattribute vec4 colorId, borderColorId;\\nattribute float isActive;\\n\\n// `invariant` effectively turns off optimizations for the position.\\n// We need this because -fast-math on M1 Macs is re-ordering\\n// floating point operations in a way that causes floating point\\n// precision limits to put points in the wrong locations.\\ninvariant gl_Position;\\n\\nuniform bool constPointSize;\\nuniform float pixelRatio;\\nuniform vec2 scale, scaleFract, translate, translateFract, paletteSize;\\nuniform sampler2D paletteTexture;\\n\\nconst float maxSize = 100.;\\nconst float borderLevel = .5;\\n\\nvarying vec4 fragColor, fragBorderColor;\\nvarying float fragPointSize, fragBorderRadius, fragWidth, fragBorderColorLevel, fragColorLevel;\\n\\nfloat pointSizeScale = (constPointSize) ? 2. : pixelRatio;\\n\\nbool isDirect = (paletteSize.x < 1.);\\n\\nvec4 getColor(vec4 id) {\\n return isDirect ? id / 255. : texture2D(paletteTexture,\\n vec2(\\n (id.x + .5) / paletteSize.x,\\n (id.y + .5) / paletteSize.y\\n )\\n );\\n}\\n\\nvoid main() {\\n // ignore inactive points\\n if (isActive == 0.) return;\\n\\n vec2 position = vec2(x, y);\\n vec2 positionFract = vec2(xFract, yFract);\\n\\n vec4 color = getColor(colorId);\\n vec4 borderColor = getColor(borderColorId);\\n\\n float size = size * maxSize / 255.;\\n float borderSize = borderSize * maxSize / 255.;\\n\\n gl_PointSize = 2. * size * pointSizeScale;\\n fragPointSize = size * pixelRatio;\\n\\n vec2 pos = (position + translate) * scale\\n + (positionFract + translateFract) * scale\\n + (position + translate) * scaleFract\\n + (positionFract + translateFract) * scaleFract;\\n\\n gl_Position = vec4(pos * 2. - 1., 0., 1.);\\n\\n fragColor = color;\\n fragBorderColor = borderColor;\\n fragWidth = 1. / gl_PointSize;\\n\\n fragBorderColorLevel = clamp(borderLevel - borderLevel * borderSize / size, 0., 1.);\\n fragColorLevel = clamp(borderLevel + (1. - borderLevel) * borderSize / size, 0., 1.);\\n}\\n\"]);\n this.drawMarker = regl(markerOptions);\n var circleOptions = extend({}, shaderOptions);\n circleOptions.frag = glslify([\"precision highp float;\\n#define GLSLIFY 1\\n\\nvarying vec4 fragColor, fragBorderColor;\\nvarying float fragBorderRadius, fragWidth;\\n\\nuniform float opacity;\\n\\nfloat smoothStep(float edge0, float edge1, float x) {\\n\tfloat t;\\n\tt = clamp((x - edge0) / (edge1 - edge0), 0.0, 1.0);\\n\treturn t * t * (3.0 - 2.0 * t);\\n}\\n\\nvoid main() {\\n\tfloat radius, alpha = 1.0, delta = fragWidth;\\n\\n\tradius = length(2.0 * gl_PointCoord.xy - 1.0);\\n\\n\tif (radius > 1.0 + delta) {\\n\t\tdiscard;\\n\t}\\n\\n\talpha -= smoothstep(1.0 - delta, 1.0 + delta, radius);\\n\\n\tfloat borderRadius = fragBorderRadius;\\n\tfloat ratio = smoothstep(borderRadius - delta, borderRadius + delta, radius);\\n\tvec4 color = mix(fragColor, fragBorderColor, ratio);\\n\tcolor.a *= alpha * opacity;\\n\tgl_FragColor = color;\\n}\\n\"]);\n circleOptions.vert = glslify([\"precision highp float;\\n#define GLSLIFY 1\\n\\nattribute float x, y, xFract, yFract;\\nattribute float size, borderSize;\\nattribute vec4 colorId, borderColorId;\\nattribute float isActive;\\n\\n// `invariant` effectively turns off optimizations for the position.\\n// We need this because -fast-math on M1 Macs is re-ordering\\n// floating point operations in a way that causes floating point\\n// precision limits to put points in the wrong locations.\\ninvariant gl_Position;\\n\\nuniform bool constPointSize;\\nuniform float pixelRatio;\\nuniform vec2 paletteSize, scale, scaleFract, translate, translateFract;\\nuniform sampler2D paletteTexture;\\n\\nconst float maxSize = 100.;\\n\\nvarying vec4 fragColor, fragBorderColor;\\nvarying float fragBorderRadius, fragWidth;\\n\\nfloat pointSizeScale = (constPointSize) ? 2. : pixelRatio;\\n\\nbool isDirect = (paletteSize.x < 1.);\\n\\nvec4 getColor(vec4 id) {\\n return isDirect ? id / 255. : texture2D(paletteTexture,\\n vec2(\\n (id.x + .5) / paletteSize.x,\\n (id.y + .5) / paletteSize.y\\n )\\n );\\n}\\n\\nvoid main() {\\n // ignore inactive points\\n if (isActive == 0.) return;\\n\\n vec2 position = vec2(x, y);\\n vec2 positionFract = vec2(xFract, yFract);\\n\\n vec4 color = getColor(colorId);\\n vec4 borderColor = getColor(borderColorId);\\n\\n float size = size * maxSize / 255.;\\n float borderSize = borderSize * maxSize / 255.;\\n\\n gl_PointSize = (size + borderSize) * pointSizeScale;\\n\\n vec2 pos = (position + translate) * scale\\n + (positionFract + translateFract) * scale\\n + (position + translate) * scaleFract\\n + (positionFract + translateFract) * scaleFract;\\n\\n gl_Position = vec4(pos * 2. - 1., 0., 1.);\\n\\n fragBorderRadius = 1. - 2. * borderSize / (size + borderSize);\\n fragColor = color;\\n fragBorderColor = borderColor.a == 0. || borderSize == 0. ? vec4(color.rgb, 0.) : borderColor;\\n fragWidth = 1. / gl_PointSize;\\n}\\n\"]);\n if (ie) {\n circleOptions.frag = circleOptions.frag.replace(\"smoothstep\", \"smoothStep\");\n markerOptions.frag = markerOptions.frag.replace(\"smoothstep\", \"smoothStep\");\n }\n this.drawCircle = regl(circleOptions);\n }\n Scatter.defaults = {\n color: \"black\",\n borderColor: \"transparent\",\n borderSize: 0,\n size: 12,\n opacity: 1,\n marker: void 0,\n viewport: null,\n range: null,\n pixelSize: null,\n count: 0,\n offset: 0,\n bounds: null,\n positions: [],\n snap: 1e4\n };\n Scatter.prototype.render = function() {\n if (arguments.length) {\n this.update.apply(this, arguments);\n }\n this.draw();\n return this;\n };\n Scatter.prototype.draw = function() {\n var _this2 = this;\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n var groups = this.groups;\n if (args.length === 1 && Array.isArray(args[0]) && (args[0][0] === null || Array.isArray(args[0][0]))) {\n args = args[0];\n }\n this.regl._refresh();\n if (args.length) {\n for (var i = 0; i < args.length; i++) {\n this.drawItem(i, args[i]);\n }\n } else {\n groups.forEach(function(group, i2) {\n _this2.drawItem(i2);\n });\n }\n return this;\n };\n Scatter.prototype.drawItem = function(id, els) {\n var groups = this.groups;\n var group = groups[id];\n if (typeof els === \"number\") {\n id = els;\n group = groups[els];\n els = null;\n }\n if (!(group && group.count && group.opacity)) return;\n if (group.activation[0]) {\n this.drawCircle(this.getMarkerDrawOptions(0, group, els));\n }\n var batch = [];\n for (var i = 1; i < group.activation.length; i++) {\n if (!group.activation[i] || group.activation[i] !== true && !group.activation[i].data.length) continue;\n batch.push.apply(batch, _toConsumableArray(this.getMarkerDrawOptions(i, group, els)));\n }\n if (batch.length) {\n this.drawMarker(batch);\n }\n };\n Scatter.prototype.getMarkerDrawOptions = function(markerId, group, elements) {\n var range = group.range, tree = group.tree, viewport = group.viewport, activation = group.activation, selectionBuffer = group.selectionBuffer, count = group.count;\n var regl = this.regl;\n if (!tree) {\n if (elements) {\n return [extend({}, group, {\n markerTexture: this.markerTextures[markerId],\n activation: activation[markerId],\n count: elements.length,\n elements,\n offset: 0\n })];\n }\n return [extend({}, group, {\n markerTexture: this.markerTextures[markerId],\n activation: activation[markerId],\n offset: 0\n })];\n }\n var batch = [];\n var lod = tree.range(range, {\n lod: true,\n px: [(range[2] - range[0]) / viewport.width, (range[3] - range[1]) / viewport.height]\n });\n if (elements) {\n var markerActivation = activation[markerId];\n var mask = markerActivation.data;\n var data = new Uint8Array(count);\n for (var i = 0; i < elements.length; i++) {\n var id = elements[i];\n data[id] = mask ? mask[id] : 1;\n }\n selectionBuffer.subdata(data);\n }\n for (var l = lod.length; l--; ) {\n var _lod$l = _slicedToArray(lod[l], 2), from = _lod$l[0], to = _lod$l[1];\n batch.push(extend({}, group, {\n markerTexture: this.markerTextures[markerId],\n activation: elements ? selectionBuffer : activation[markerId],\n offset: from,\n count: to - from\n }));\n }\n return batch;\n };\n Scatter.prototype.update = function() {\n var _this3 = this;\n for (var _len2 = arguments.length, args = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {\n args[_key2] = arguments[_key2];\n }\n if (!args.length) return;\n if (args.length === 1 && Array.isArray(args[0])) args = args[0];\n var groups = this.groups, gl = this.gl, regl = this.regl, maxSize = this.maxSize, maxColors = this.maxColors, palette = this.palette;\n this.groups = groups = args.map(function(options, i) {\n var group = groups[i];\n if (options === void 0) return group;\n if (options === null) options = {\n positions: null\n };\n else if (typeof options === \"function\") options = {\n ondraw: options\n };\n else if (typeof options[0] === \"number\") options = {\n positions: options\n };\n options = pick(options, {\n positions: \"positions data points\",\n snap: \"snap cluster lod tree\",\n size: \"sizes size radius\",\n borderSize: \"borderSizes borderSize border-size bordersize borderWidth borderWidths border-width borderwidth stroke-width strokeWidth strokewidth outline\",\n color: \"colors color fill fill-color fillColor\",\n borderColor: \"borderColors borderColor stroke stroke-color strokeColor\",\n marker: \"markers marker shape\",\n range: \"range dataBox databox\",\n viewport: \"viewport viewPort viewBox viewbox\",\n opacity: \"opacity alpha transparency\",\n bounds: \"bound bounds boundaries limits\",\n tooManyColors: \"tooManyColors palette paletteMode optimizePalette enablePalette\"\n });\n if (options.positions === null) options.positions = [];\n if (options.tooManyColors != null) _this3.tooManyColors = options.tooManyColors;\n if (!group) {\n groups[i] = group = {\n id: i,\n scale: null,\n translate: null,\n scaleFract: null,\n translateFract: null,\n // buffers for active markers\n activation: [],\n // buffer for filtered markers\n selectionBuffer: regl.buffer({\n data: new Uint8Array(0),\n usage: \"stream\",\n type: \"uint8\"\n }),\n // buffers with data: it is faster to switch them per-pass\n // than provide one congregate buffer\n sizeBuffer: regl.buffer({\n data: new Uint8Array(0),\n usage: \"dynamic\",\n type: \"uint8\"\n }),\n colorBuffer: regl.buffer({\n data: new Uint8Array(0),\n usage: \"dynamic\",\n type: \"uint8\"\n }),\n positionBuffer: regl.buffer({\n data: new Uint8Array(0),\n usage: \"dynamic\",\n type: \"float\"\n }),\n positionFractBuffer: regl.buffer({\n data: new Uint8Array(0),\n usage: \"dynamic\",\n type: \"float\"\n })\n };\n options = extend({}, Scatter.defaults, options);\n }\n if (options.positions && !(\"marker\" in options)) {\n options.marker = group.marker;\n delete group.marker;\n }\n if (options.marker && !(\"positions\" in options)) {\n options.positions = group.positions;\n delete group.positions;\n }\n var hasSize = 0, hasColor = 0;\n updateDiff(group, options, [{\n snap: true,\n size: function size2(s, group2) {\n if (s == null) s = Scatter.defaults.size;\n hasSize += s && s.length ? 1 : 0;\n return s;\n },\n borderSize: function borderSize2(s, group2) {\n if (s == null) s = Scatter.defaults.borderSize;\n hasSize += s && s.length ? 1 : 0;\n return s;\n },\n opacity: parseFloat,\n // add colors to palette, save references\n color: function color2(c, group2) {\n if (c == null) c = Scatter.defaults.color;\n c = _this3.updateColor(c);\n hasColor++;\n return c;\n },\n borderColor: function borderColor2(c, group2) {\n if (c == null) c = Scatter.defaults.borderColor;\n c = _this3.updateColor(c);\n hasColor++;\n return c;\n },\n bounds: function bounds(_bounds, group2, options2) {\n if (!(\"range\" in options2)) options2.range = null;\n return _bounds;\n },\n positions: function positions(_positions, group2, options2) {\n var snap = group2.snap;\n var positionBuffer = group2.positionBuffer, positionFractBuffer = group2.positionFractBuffer, selectionBuffer = group2.selectionBuffer;\n if (_positions.x || _positions.y) {\n if (_positions.x.length) {\n group2.xAttr = {\n buffer: regl.buffer(_positions.x),\n offset: 0,\n stride: 4,\n count: _positions.x.length\n };\n } else {\n group2.xAttr = {\n buffer: _positions.x.buffer,\n offset: _positions.x.offset * 4 || 0,\n stride: (_positions.x.stride || 1) * 4,\n count: _positions.x.count\n };\n }\n if (_positions.y.length) {\n group2.yAttr = {\n buffer: regl.buffer(_positions.y),\n offset: 0,\n stride: 4,\n count: _positions.y.length\n };\n } else {\n group2.yAttr = {\n buffer: _positions.y.buffer,\n offset: _positions.y.offset * 4 || 0,\n stride: (_positions.y.stride || 1) * 4,\n count: _positions.y.count\n };\n }\n group2.count = Math.max(group2.xAttr.count, group2.yAttr.count);\n return _positions;\n }\n _positions = flatten(_positions, \"float64\");\n var count2 = group2.count = Math.floor(_positions.length / 2);\n var bounds = group2.bounds = count2 ? getBounds(_positions, 2) : null;\n if (!options2.range && !group2.range) {\n delete group2.range;\n options2.range = bounds;\n }\n if (!options2.marker && !group2.marker) {\n delete group2.marker;\n options2.marker = null;\n }\n if (snap && (snap === true || count2 > snap)) {\n group2.tree = cluster(_positions, {\n bounds\n });\n } else if (snap && snap.length) {\n group2.tree = snap;\n }\n if (group2.tree) {\n var opts = {\n primitive: \"points\",\n usage: \"static\",\n data: group2.tree,\n type: \"uint32\"\n };\n if (group2.elements) group2.elements(opts);\n else group2.elements = regl.elements(opts);\n }\n var float_data = f32.float32(_positions);\n positionBuffer({\n data: float_data,\n usage: \"dynamic\"\n });\n var frac_data = f32.fract32(_positions, float_data);\n positionFractBuffer({\n data: frac_data,\n usage: \"dynamic\"\n });\n selectionBuffer({\n data: new Uint8Array(count2),\n type: \"uint8\",\n usage: \"stream\"\n });\n return _positions;\n }\n }, {\n // create marker ids corresponding to known marker textures\n marker: function marker(markers, group2, options2) {\n var activation = group2.activation;\n activation.forEach(function(buffer) {\n return buffer && buffer.destroy && buffer.destroy();\n });\n activation.length = 0;\n if (!markers || typeof markers[0] === \"number\") {\n var id = _this3.addMarker(markers);\n activation[id] = true;\n } else {\n var markerMasks = [];\n for (var _i = 0, l = Math.min(markers.length, group2.count); _i < l; _i++) {\n var _id = _this3.addMarker(markers[_i]);\n if (!markerMasks[_id]) markerMasks[_id] = new Uint8Array(group2.count);\n markerMasks[_id][_i] = 1;\n }\n for (var _id2 = 0; _id2 < markerMasks.length; _id2++) {\n if (!markerMasks[_id2]) continue;\n var opts = {\n data: markerMasks[_id2],\n type: \"uint8\",\n usage: \"static\"\n };\n if (!activation[_id2]) {\n activation[_id2] = regl.buffer(opts);\n } else {\n activation[_id2](opts);\n }\n activation[_id2].data = markerMasks[_id2];\n }\n }\n return markers;\n },\n range: function range(_range, group2, options2) {\n var bounds = group2.bounds;\n if (!bounds) return;\n if (!_range) _range = bounds;\n group2.scale = [1 / (_range[2] - _range[0]), 1 / (_range[3] - _range[1])];\n group2.translate = [-_range[0], -_range[1]];\n group2.scaleFract = f32.fract(group2.scale);\n group2.translateFract = f32.fract(group2.translate);\n return _range;\n },\n viewport: function viewport(vp) {\n var rect = parseRect(vp || [gl.drawingBufferWidth, gl.drawingBufferHeight]);\n return rect;\n }\n }]);\n if (hasSize) {\n var _group = group, count = _group.count, size = _group.size, borderSize = _group.borderSize, sizeBuffer = _group.sizeBuffer;\n var sizes = new Uint8Array(count * 2);\n if (size.length || borderSize.length) {\n for (var _i2 = 0; _i2 < count; _i2++) {\n sizes[_i2 * 2] = Math.round((size[_i2] == null ? size : size[_i2]) * 255 / maxSize);\n sizes[_i2 * 2 + 1] = Math.round((borderSize[_i2] == null ? borderSize : borderSize[_i2]) * 255 / maxSize);\n }\n }\n sizeBuffer({\n data: sizes,\n usage: \"dynamic\"\n });\n }\n if (hasColor) {\n var _group2 = group, _count = _group2.count, color = _group2.color, borderColor = _group2.borderColor, colorBuffer = _group2.colorBuffer;\n var colors;\n if (_this3.tooManyColors) {\n if (color.length || borderColor.length) {\n colors = new Uint8Array(_count * 8);\n for (var _i3 = 0; _i3 < _count; _i3++) {\n var _colorId = color[_i3];\n colors[_i3 * 8] = palette[_colorId * 4];\n colors[_i3 * 8 + 1] = palette[_colorId * 4 + 1];\n colors[_i3 * 8 + 2] = palette[_colorId * 4 + 2];\n colors[_i3 * 8 + 3] = palette[_colorId * 4 + 3];\n var borderColorId = borderColor[_i3];\n colors[_i3 * 8 + 4] = palette[borderColorId * 4];\n colors[_i3 * 8 + 5] = palette[borderColorId * 4 + 1];\n colors[_i3 * 8 + 6] = palette[borderColorId * 4 + 2];\n colors[_i3 * 8 + 7] = palette[borderColorId * 4 + 3];\n }\n }\n } else {\n if (color.length || borderColor.length) {\n colors = new Uint8Array(_count * 4 + 2);\n for (var _i4 = 0; _i4 < _count; _i4++) {\n if (color[_i4] != null) {\n colors[_i4 * 4] = color[_i4] % maxColors;\n colors[_i4 * 4 + 1] = Math.floor(color[_i4] / maxColors);\n }\n if (borderColor[_i4] != null) {\n colors[_i4 * 4 + 2] = borderColor[_i4] % maxColors;\n colors[_i4 * 4 + 3] = Math.floor(borderColor[_i4] / maxColors);\n }\n }\n }\n }\n colorBuffer({\n data: colors || new Uint8Array(0),\n type: \"uint8\",\n usage: \"dynamic\"\n });\n }\n return group;\n });\n };\n Scatter.prototype.addMarker = function(sdf) {\n var markerTextures = this.markerTextures, regl = this.regl, markerCache = this.markerCache;\n var pos = sdf == null ? 0 : markerCache.indexOf(sdf);\n if (pos >= 0) return pos;\n var distArr;\n if (sdf instanceof Uint8Array || sdf instanceof Uint8ClampedArray) {\n distArr = sdf;\n } else {\n distArr = new Uint8Array(sdf.length);\n for (var i = 0, l = sdf.length; i < l; i++) {\n distArr[i] = sdf[i] * 255;\n }\n }\n var radius = Math.floor(Math.sqrt(distArr.length));\n pos = markerTextures.length;\n markerCache.push(sdf);\n markerTextures.push(regl.texture({\n channels: 1,\n data: distArr,\n radius,\n mag: \"linear\",\n min: \"linear\"\n }));\n return pos;\n };\n Scatter.prototype.updateColor = function(colors) {\n var paletteIds = this.paletteIds, palette = this.palette, maxColors = this.maxColors;\n if (!Array.isArray(colors)) {\n colors = [colors];\n }\n var idx = [];\n if (typeof colors[0] === \"number\") {\n var grouped = [];\n if (Array.isArray(colors)) {\n for (var i = 0; i < colors.length; i += 4) {\n grouped.push(colors.slice(i, i + 4));\n }\n } else {\n for (var _i5 = 0; _i5 < colors.length; _i5 += 4) {\n grouped.push(colors.subarray(_i5, _i5 + 4));\n }\n }\n colors = grouped;\n }\n for (var _i6 = 0; _i6 < colors.length; _i6++) {\n var color = colors[_i6];\n color = rgba(color, \"uint8\");\n var id = colorId(color, false);\n if (paletteIds[id] == null) {\n var pos = palette.length;\n paletteIds[id] = Math.floor(pos / 4);\n palette[pos] = color[0];\n palette[pos + 1] = color[1];\n palette[pos + 2] = color[2];\n palette[pos + 3] = color[3];\n }\n idx[_i6] = paletteIds[id];\n }\n if (!this.tooManyColors && palette.length > maxColors * 4) this.tooManyColors = true;\n this.updatePalette(palette);\n return idx.length === 1 ? idx[0] : idx;\n };\n Scatter.prototype.updatePalette = function(palette) {\n if (this.tooManyColors) return;\n var maxColors = this.maxColors, paletteTexture = this.paletteTexture;\n var requiredHeight = Math.ceil(palette.length * 0.25 / maxColors);\n if (requiredHeight > 1) {\n palette = palette.slice();\n for (var i = palette.length * 0.25 % maxColors; i < requiredHeight * maxColors; i++) {\n palette.push(0, 0, 0, 0);\n }\n }\n if (paletteTexture.height < requiredHeight) {\n paletteTexture.resize(maxColors, requiredHeight);\n }\n paletteTexture.subimage({\n width: Math.min(palette.length * 0.25, maxColors),\n height: requiredHeight,\n data: palette\n }, 0, 0);\n };\n Scatter.prototype.destroy = function() {\n this.groups.forEach(function(group) {\n group.sizeBuffer.destroy();\n group.positionBuffer.destroy();\n group.positionFractBuffer.destroy();\n group.colorBuffer.destroy();\n group.activation.forEach(function(b) {\n return b && b.destroy && b.destroy();\n });\n group.selectionBuffer.destroy();\n if (group.elements) group.elements.destroy();\n });\n this.groups.length = 0;\n this.paletteTexture.destroy();\n this.markerTextures.forEach(function(txt) {\n return txt && txt.destroy && txt.destroy();\n });\n return this;\n };\n var extend$1 = require_object_assign();\n var reglScatter2d = function reglScatter2d2(regl, options) {\n var scatter$1 = new scatter(regl, options);\n var render = scatter$1.render.bind(scatter$1);\n extend$1(render, {\n render,\n update: scatter$1.update.bind(scatter$1),\n draw: scatter$1.draw.bind(scatter$1),\n destroy: scatter$1.destroy.bind(scatter$1),\n regl: scatter$1.regl,\n gl: scatter$1.gl,\n canvas: scatter$1.gl.canvas,\n groups: scatter$1.groups,\n markers: scatter$1.markerCache,\n palette: scatter$1.palette\n });\n return render;\n };\n module.exports = reglScatter2d;\n }\n });\n\n // node_modules/earcut/src/earcut.js\n var require_earcut = __commonJS({\n \"node_modules/earcut/src/earcut.js\"(exports, module) {\n \"use strict\";\n module.exports = earcut;\n module.exports.default = earcut;\n function earcut(data, holeIndices, dim) {\n dim = dim || 2;\n var hasHoles = holeIndices && holeIndices.length, outerLen = hasHoles ? holeIndices[0] * dim : data.length, outerNode = linkedList(data, 0, outerLen, dim, true), triangles = [];\n if (!outerNode || outerNode.next === outerNode.prev) return triangles;\n var minX, minY, maxX, maxY, x, y, invSize;\n if (hasHoles) outerNode = eliminateHoles(data, holeIndices, outerNode, dim);\n if (data.length > 80 * dim) {\n minX = maxX = data[0];\n minY = maxY = data[1];\n for (var i = dim; i < outerLen; i += dim) {\n x = data[i];\n y = data[i + 1];\n if (x < minX) minX = x;\n if (y < minY) minY = y;\n if (x > maxX) maxX = x;\n if (y > maxY) maxY = y;\n }\n invSize = Math.max(maxX - minX, maxY - minY);\n invSize = invSize !== 0 ? 32767 / invSize : 0;\n }\n earcutLinked(outerNode, triangles, dim, minX, minY, invSize, 0);\n return triangles;\n }\n function linkedList(data, start, end, dim, clockwise) {\n var i, last;\n if (clockwise === signedArea(data, start, end, dim) > 0) {\n for (i = start; i < end; i += dim) last = insertNode(i, data[i], data[i + 1], last);\n } else {\n for (i = end - dim; i >= start; i -= dim) last = insertNode(i, data[i], data[i + 1], last);\n }\n if (last && equals(last, last.next)) {\n removeNode(last);\n last = last.next;\n }\n return last;\n }\n function filterPoints(start, end) {\n if (!start) return start;\n if (!end) end = start;\n var p = start, again;\n do {\n again = false;\n if (!p.steiner && (equals(p, p.next) || area(p.prev, p, p.next) === 0)) {\n removeNode(p);\n p = end = p.prev;\n if (p === p.next) break;\n again = true;\n } else {\n p = p.next;\n }\n } while (again || p !== end);\n return end;\n }\n function earcutLinked(ear, triangles, dim, minX, minY, invSize, pass) {\n if (!ear) return;\n if (!pass && invSize) indexCurve(ear, minX, minY, invSize);\n var stop = ear, prev, next;\n while (ear.prev !== ear.next) {\n prev = ear.prev;\n next = ear.next;\n if (invSize ? isEarHashed(ear, minX, minY, invSize) : isEar(ear)) {\n triangles.push(prev.i / dim | 0);\n triangles.push(ear.i / dim | 0);\n triangles.push(next.i / dim | 0);\n removeNode(ear);\n ear = next.next;\n stop = next.next;\n continue;\n }\n ear = next;\n if (ear === stop) {\n if (!pass) {\n earcutLinked(filterPoints(ear), triangles, dim, minX, minY, invSize, 1);\n } else if (pass === 1) {\n ear = cureLocalIntersections(filterPoints(ear), triangles, dim);\n earcutLinked(ear, triangles, dim, minX, minY, invSize, 2);\n } else if (pass === 2) {\n splitEarcut(ear, triangles, dim, minX, minY, invSize);\n }\n break;\n }\n }\n }\n function isEar(ear) {\n var a = ear.prev, b = ear, c = ear.next;\n if (area(a, b, c) >= 0) return false;\n var ax = a.x, bx = b.x, cx = c.x, ay = a.y, by = b.y, cy = c.y;\n var x0 = ax < bx ? ax < cx ? ax : cx : bx < cx ? bx : cx, y0 = ay < by ? ay < cy ? ay : cy : by < cy ? by : cy, x1 = ax > bx ? ax > cx ? ax : cx : bx > cx ? bx : cx, y1 = ay > by ? ay > cy ? ay : cy : by > cy ? by : cy;\n var p = c.next;\n while (p !== a) {\n if (p.x >= x0 && p.x <= x1 && p.y >= y0 && p.y <= y1 && pointInTriangle(ax, ay, bx, by, cx, cy, p.x, p.y) && area(p.prev, p, p.next) >= 0) return false;\n p = p.next;\n }\n return true;\n }\n function isEarHashed(ear, minX, minY, invSize) {\n var a = ear.prev, b = ear, c = ear.next;\n if (area(a, b, c) >= 0) return false;\n var ax = a.x, bx = b.x, cx = c.x, ay = a.y, by = b.y, cy = c.y;\n var x0 = ax < bx ? ax < cx ? ax : cx : bx < cx ? bx : cx, y0 = ay < by ? ay < cy ? ay : cy : by < cy ? by : cy, x1 = ax > bx ? ax > cx ? ax : cx : bx > cx ? bx : cx, y1 = ay > by ? ay > cy ? ay : cy : by > cy ? by : cy;\n var minZ = zOrder(x0, y0, minX, minY, invSize), maxZ = zOrder(x1, y1, minX, minY, invSize);\n var p = ear.prevZ, n = ear.nextZ;\n while (p && p.z >= minZ && n && n.z <= maxZ) {\n if (p.x >= x0 && p.x <= x1 && p.y >= y0 && p.y <= y1 && p !== a && p !== c && pointInTriangle(ax, ay, bx, by, cx, cy, p.x, p.y) && area(p.prev, p, p.next) >= 0) return false;\n p = p.prevZ;\n if (n.x >= x0 && n.x <= x1 && n.y >= y0 && n.y <= y1 && n !== a && n !== c && pointInTriangle(ax, ay, bx, by, cx, cy, n.x, n.y) && area(n.prev, n, n.next) >= 0) return false;\n n = n.nextZ;\n }\n while (p && p.z >= minZ) {\n if (p.x >= x0 && p.x <= x1 && p.y >= y0 && p.y <= y1 && p !== a && p !== c && pointInTriangle(ax, ay, bx, by, cx, cy, p.x, p.y) && area(p.prev, p, p.next) >= 0) return false;\n p = p.prevZ;\n }\n while (n && n.z <= maxZ) {\n if (n.x >= x0 && n.x <= x1 && n.y >= y0 && n.y <= y1 && n !== a && n !== c && pointInTriangle(ax, ay, bx, by, cx, cy, n.x, n.y) && area(n.prev, n, n.next) >= 0) return false;\n n = n.nextZ;\n }\n return true;\n }\n function cureLocalIntersections(start, triangles, dim) {\n var p = start;\n do {\n var a = p.prev, b = p.next.next;\n if (!equals(a, b) && intersects(a, p, p.next, b) && locallyInside(a, b) && locallyInside(b, a)) {\n triangles.push(a.i / dim | 0);\n triangles.push(p.i / dim | 0);\n triangles.push(b.i / dim | 0);\n removeNode(p);\n removeNode(p.next);\n p = start = b;\n }\n p = p.next;\n } while (p !== start);\n return filterPoints(p);\n }\n function splitEarcut(start, triangles, dim, minX, minY, invSize) {\n var a = start;\n do {\n var b = a.next.next;\n while (b !== a.prev) {\n if (a.i !== b.i && isValidDiagonal(a, b)) {\n var c = splitPolygon(a, b);\n a = filterPoints(a, a.next);\n c = filterPoints(c, c.next);\n earcutLinked(a, triangles, dim, minX, minY, invSize, 0);\n earcutLinked(c, triangles, dim, minX, minY, invSize, 0);\n return;\n }\n b = b.next;\n }\n a = a.next;\n } while (a !== start);\n }\n function eliminateHoles(data, holeIndices, outerNode, dim) {\n var queue = [], i, len, start, end, list;\n for (i = 0, len = holeIndices.length; i < len; i++) {\n start = holeIndices[i] * dim;\n end = i < len - 1 ? holeIndices[i + 1] * dim : data.length;\n list = linkedList(data, start, end, dim, false);\n if (list === list.next) list.steiner = true;\n queue.push(getLeftmost(list));\n }\n queue.sort(compareX);\n for (i = 0; i < queue.length; i++) {\n outerNode = eliminateHole(queue[i], outerNode);\n }\n return outerNode;\n }\n function compareX(a, b) {\n return a.x - b.x;\n }\n function eliminateHole(hole, outerNode) {\n var bridge = findHoleBridge(hole, outerNode);\n if (!bridge) {\n return outerNode;\n }\n var bridgeReverse = splitPolygon(bridge, hole);\n filterPoints(bridgeReverse, bridgeReverse.next);\n return filterPoints(bridge, bridge.next);\n }\n function findHoleBridge(hole, outerNode) {\n var p = outerNode, hx = hole.x, hy = hole.y, qx = -Infinity, m;\n do {\n if (hy <= p.y && hy >= p.next.y && p.next.y !== p.y) {\n var x = p.x + (hy - p.y) * (p.next.x - p.x) / (p.next.y - p.y);\n if (x <= hx && x > qx) {\n qx = x;\n m = p.x < p.next.x ? p : p.next;\n if (x === hx) return m;\n }\n }\n p = p.next;\n } while (p !== outerNode);\n if (!m) return null;\n var stop = m, mx = m.x, my = m.y, tanMin = Infinity, tan;\n p = m;\n do {\n if (hx >= p.x && p.x >= mx && hx !== p.x && pointInTriangle(hy < my ? hx : qx, hy, mx, my, hy < my ? qx : hx, hy, p.x, p.y)) {\n tan = Math.abs(hy - p.y) / (hx - p.x);\n if (locallyInside(p, hole) && (tan < tanMin || tan === tanMin && (p.x > m.x || p.x === m.x && sectorContainsSector(m, p)))) {\n m = p;\n tanMin = tan;\n }\n }\n p = p.next;\n } while (p !== stop);\n return m;\n }\n function sectorContainsSector(m, p) {\n return area(m.prev, m, p.prev) < 0 && area(p.next, m, m.next) < 0;\n }\n function indexCurve(start, minX, minY, invSize) {\n var p = start;\n do {\n if (p.z === 0) p.z = zOrder(p.x, p.y, minX, minY, invSize);\n p.prevZ = p.prev;\n p.nextZ = p.next;\n p = p.next;\n } while (p !== start);\n p.prevZ.nextZ = null;\n p.prevZ = null;\n sortLinked(p);\n }\n function sortLinked(list) {\n var i, p, q, e, tail, numMerges, pSize, qSize, inSize = 1;\n do {\n p = list;\n list = null;\n tail = null;\n numMerges = 0;\n while (p) {\n numMerges++;\n q = p;\n pSize = 0;\n for (i = 0; i < inSize; i++) {\n pSize++;\n q = q.nextZ;\n if (!q) break;\n }\n qSize = inSize;\n while (pSize > 0 || qSize > 0 && q) {\n if (pSize !== 0 && (qSize === 0 || !q || p.z <= q.z)) {\n e = p;\n p = p.nextZ;\n pSize--;\n } else {\n e = q;\n q = q.nextZ;\n qSize--;\n }\n if (tail) tail.nextZ = e;\n else list = e;\n e.prevZ = tail;\n tail = e;\n }\n p = q;\n }\n tail.nextZ = null;\n inSize *= 2;\n } while (numMerges > 1);\n return list;\n }\n function zOrder(x, y, minX, minY, invSize) {\n x = (x - minX) * invSize | 0;\n y = (y - minY) * invSize | 0;\n x = (x | x << 8) & 16711935;\n x = (x | x << 4) & 252645135;\n x = (x | x << 2) & 858993459;\n x = (x | x << 1) & 1431655765;\n y = (y | y << 8) & 16711935;\n y = (y | y << 4) & 252645135;\n y = (y | y << 2) & 858993459;\n y = (y | y << 1) & 1431655765;\n return x | y << 1;\n }\n function getLeftmost(start) {\n var p = start, leftmost = start;\n do {\n if (p.x < leftmost.x || p.x === leftmost.x && p.y < leftmost.y) leftmost = p;\n p = p.next;\n } while (p !== start);\n return leftmost;\n }\n function pointInTriangle(ax, ay, bx, by, cx, cy, px, py) {\n return (cx - px) * (ay - py) >= (ax - px) * (cy - py) && (ax - px) * (by - py) >= (bx - px) * (ay - py) && (bx - px) * (cy - py) >= (cx - px) * (by - py);\n }\n function isValidDiagonal(a, b) {\n return a.next.i !== b.i && a.prev.i !== b.i && !intersectsPolygon(a, b) && // dones't intersect other edges\n (locallyInside(a, b) && locallyInside(b, a) && middleInside(a, b) && // locally visible\n (area(a.prev, a, b.prev) || area(a, b.prev, b)) || // does not create opposite-facing sectors\n equals(a, b) && area(a.prev, a, a.next) > 0 && area(b.prev, b, b.next) > 0);\n }\n function area(p, q, r) {\n return (q.y - p.y) * (r.x - q.x) - (q.x - p.x) * (r.y - q.y);\n }\n function equals(p1, p2) {\n return p1.x === p2.x && p1.y === p2.y;\n }\n function intersects(p1, q1, p2, q2) {\n var o1 = sign(area(p1, q1, p2));\n var o2 = sign(area(p1, q1, q2));\n var o3 = sign(area(p2, q2, p1));\n var o4 = sign(area(p2, q2, q1));\n if (o1 !== o2 && o3 !== o4) return true;\n if (o1 === 0 && onSegment(p1, p2, q1)) return true;\n if (o2 === 0 && onSegment(p1, q2, q1)) return true;\n if (o3 === 0 && onSegment(p2, p1, q2)) return true;\n if (o4 === 0 && onSegment(p2, q1, q2)) return true;\n return false;\n }\n function onSegment(p, q, r) {\n return q.x <= Math.max(p.x, r.x) && q.x >= Math.min(p.x, r.x) && q.y <= Math.max(p.y, r.y) && q.y >= Math.min(p.y, r.y);\n }\n function sign(num) {\n return num > 0 ? 1 : num < 0 ? -1 : 0;\n }\n function intersectsPolygon(a, b) {\n var p = a;\n do {\n if (p.i !== a.i && p.next.i !== a.i && p.i !== b.i && p.next.i !== b.i && intersects(p, p.next, a, b)) return true;\n p = p.next;\n } while (p !== a);\n return false;\n }\n function locallyInside(a, b) {\n return area(a.prev, a, a.next) < 0 ? area(a, b, a.next) >= 0 && area(a, a.prev, b) >= 0 : area(a, b, a.prev) < 0 || area(a, a.next, b) < 0;\n }\n function middleInside(a, b) {\n var p = a, inside = false, px = (a.x + b.x) / 2, py = (a.y + b.y) / 2;\n do {\n if (p.y > py !== p.next.y > py && p.next.y !== p.y && px < (p.next.x - p.x) * (py - p.y) / (p.next.y - p.y) + p.x)\n inside = !inside;\n p = p.next;\n } while (p !== a);\n return inside;\n }\n function splitPolygon(a, b) {\n var a2 = new Node(a.i, a.x, a.y), b2 = new Node(b.i, b.x, b.y), an = a.next, bp = b.prev;\n a.next = b;\n b.prev = a;\n a2.next = an;\n an.prev = a2;\n b2.next = a2;\n a2.prev = b2;\n bp.next = b2;\n b2.prev = bp;\n return b2;\n }\n function insertNode(i, x, y, last) {\n var p = new Node(i, x, y);\n if (!last) {\n p.prev = p;\n p.next = p;\n } else {\n p.next = last.next;\n p.prev = last;\n last.next.prev = p;\n last.next = p;\n }\n return p;\n }\n function removeNode(p) {\n p.next.prev = p.prev;\n p.prev.next = p.next;\n if (p.prevZ) p.prevZ.nextZ = p.nextZ;\n if (p.nextZ) p.nextZ.prevZ = p.prevZ;\n }\n function Node(i, x, y) {\n this.i = i;\n this.x = x;\n this.y = y;\n this.prev = null;\n this.next = null;\n this.z = 0;\n this.prevZ = null;\n this.nextZ = null;\n this.steiner = false;\n }\n earcut.deviation = function(data, holeIndices, dim, triangles) {\n var hasHoles = holeIndices && holeIndices.length;\n var outerLen = hasHoles ? holeIndices[0] * dim : data.length;\n var polygonArea = Math.abs(signedArea(data, 0, outerLen, dim));\n if (hasHoles) {\n for (var i = 0, len = holeIndices.length; i < len; i++) {\n var start = holeIndices[i] * dim;\n var end = i < len - 1 ? holeIndices[i + 1] * dim : data.length;\n polygonArea -= Math.abs(signedArea(data, start, end, dim));\n }\n }\n var trianglesArea = 0;\n for (i = 0; i < triangles.length; i += 3) {\n var a = triangles[i] * dim;\n var b = triangles[i + 1] * dim;\n var c = triangles[i + 2] * dim;\n trianglesArea += Math.abs(\n (data[a] - data[c]) * (data[b + 1] - data[a + 1]) - (data[a] - data[b]) * (data[c + 1] - data[a + 1])\n );\n }\n return polygonArea === 0 && trianglesArea === 0 ? 0 : Math.abs((trianglesArea - polygonArea) / polygonArea);\n };\n function signedArea(data, start, end, dim) {\n var sum = 0;\n for (var i = start, j = end - dim; i < end; i += dim) {\n sum += (data[j] - data[i]) * (data[i + 1] + data[j + 1]);\n j = i;\n }\n return sum;\n }\n earcut.flatten = function(data) {\n var dim = data[0][0].length, result = { vertices: [], holes: [], dimensions: dim }, holeIndex = 0;\n for (var i = 0; i < data.length; i++) {\n for (var j = 0; j < data[i].length; j++) {\n for (var d = 0; d < dim; d++) result.vertices.push(data[i][j][d]);\n }\n if (i > 0) {\n holeIndex += data[i - 1].length;\n result.holes.push(holeIndex);\n }\n }\n return result;\n };\n }\n });\n\n // node_modules/array-normalize/index.js\n var require_array_normalize = __commonJS({\n \"node_modules/array-normalize/index.js\"(exports, module) {\n \"use strict\";\n var getBounds = require_array_bounds();\n module.exports = normalize;\n function normalize(arr, dim, bounds) {\n if (!arr || arr.length == null) throw Error(\"Argument should be an array\");\n if (dim == null) dim = 1;\n if (bounds == null) bounds = getBounds(arr, dim);\n for (var offset = 0; offset < dim; offset++) {\n var max = bounds[dim + offset], min = bounds[offset], i = offset, l = arr.length;\n if (max === Infinity && min === -Infinity) {\n for (i = offset; i < l; i += dim) {\n arr[i] = arr[i] === max ? 1 : arr[i] === min ? 0 : 0.5;\n }\n } else if (max === Infinity) {\n for (i = offset; i < l; i += dim) {\n arr[i] = arr[i] === max ? 1 : 0;\n }\n } else if (min === -Infinity) {\n for (i = offset; i < l; i += dim) {\n arr[i] = arr[i] === min ? 0 : 1;\n }\n } else {\n var range = max - min;\n for (i = offset; i < l; i += dim) {\n if (!isNaN(arr[i])) {\n arr[i] = range === 0 ? 0.5 : (arr[i] - min) / range;\n }\n }\n }\n }\n return arr;\n }\n }\n });\n\n // node_modules/es6-weak-map/is-implemented.js\n var require_is_implemented = __commonJS({\n \"node_modules/es6-weak-map/is-implemented.js\"(exports, module) {\n \"use strict\";\n module.exports = function() {\n var weakMap, obj;\n if (typeof WeakMap !== \"function\") return false;\n try {\n weakMap = new WeakMap([[obj = {}, \"one\"], [{}, \"two\"], [{}, \"three\"]]);\n } catch (e) {\n return false;\n }\n if (String(weakMap) !== \"[object WeakMap]\") return false;\n if (typeof weakMap.set !== \"function\") return false;\n if (weakMap.set({}, 1) !== weakMap) return false;\n if (typeof weakMap.delete !== \"function\") return false;\n if (typeof weakMap.has !== \"function\") return false;\n if (weakMap.get(obj) !== \"one\") return false;\n return true;\n };\n }\n });\n\n // node_modules/es5-ext/function/noop.js\n var require_noop2 = __commonJS({\n \"node_modules/es5-ext/function/noop.js\"(exports, module) {\n \"use strict\";\n module.exports = function() {\n };\n }\n });\n\n // node_modules/es5-ext/object/is-value.js\n var require_is_value = __commonJS({\n \"node_modules/es5-ext/object/is-value.js\"(exports, module) {\n \"use strict\";\n var _undefined = require_noop2()();\n module.exports = function(val) {\n return val !== _undefined && val !== null;\n };\n }\n });\n\n // node_modules/es5-ext/object/set-prototype-of/is-implemented.js\n var require_is_implemented2 = __commonJS({\n \"node_modules/es5-ext/object/set-prototype-of/is-implemented.js\"(exports, module) {\n \"use strict\";\n var create = Object.create;\n var getPrototypeOf = Object.getPrototypeOf;\n var plainObject = {};\n module.exports = function() {\n var setPrototypeOf = Object.setPrototypeOf, customCreate = arguments[0] || create;\n if (typeof setPrototypeOf !== \"function\") return false;\n return getPrototypeOf(setPrototypeOf(customCreate(null), plainObject)) === plainObject;\n };\n }\n });\n\n // node_modules/es5-ext/object/is-object.js\n var require_is_object = __commonJS({\n \"node_modules/es5-ext/object/is-object.js\"(exports, module) {\n \"use strict\";\n var isValue = require_is_value();\n var map = { function: true, object: true };\n module.exports = function(value) {\n return isValue(value) && map[typeof value] || false;\n };\n }\n });\n\n // node_modules/es5-ext/object/valid-value.js\n var require_valid_value = __commonJS({\n \"node_modules/es5-ext/object/valid-value.js\"(exports, module) {\n \"use strict\";\n var isValue = require_is_value();\n module.exports = function(value) {\n if (!isValue(value)) throw new TypeError(\"Cannot use null or undefined\");\n return value;\n };\n }\n });\n\n // node_modules/es5-ext/object/create.js\n var require_create2 = __commonJS({\n \"node_modules/es5-ext/object/create.js\"(exports, module) {\n \"use strict\";\n var create = Object.create;\n var shim;\n if (!require_is_implemented2()()) {\n shim = require_shim3();\n }\n module.exports = function() {\n var nullObject, polyProps, desc;\n if (!shim) return create;\n if (shim.level !== 1) return create;\n nullObject = {};\n polyProps = {};\n desc = { configurable: false, enumerable: false, writable: true, value: void 0 };\n Object.getOwnPropertyNames(Object.prototype).forEach(function(name) {\n if (name === \"__proto__\") {\n polyProps[name] = {\n configurable: true,\n enumerable: false,\n writable: true,\n value: void 0\n };\n return;\n }\n polyProps[name] = desc;\n });\n Object.defineProperties(nullObject, polyProps);\n Object.defineProperty(shim, \"nullPolyfill\", {\n configurable: false,\n enumerable: false,\n writable: false,\n value: nullObject\n });\n return function(prototype, props) {\n return create(prototype === null ? nullObject : prototype, props);\n };\n }();\n }\n });\n\n // node_modules/es5-ext/object/set-prototype-of/shim.js\n var require_shim3 = __commonJS({\n \"node_modules/es5-ext/object/set-prototype-of/shim.js\"(exports, module) {\n \"use strict\";\n var isObject = require_is_object();\n var value = require_valid_value();\n var objIsPrototypeOf = Object.prototype.isPrototypeOf;\n var defineProperty = Object.defineProperty;\n var nullDesc = { configurable: true, enumerable: false, writable: true, value: void 0 };\n var validate;\n validate = function(obj, prototype) {\n value(obj);\n if (prototype === null || isObject(prototype)) return obj;\n throw new TypeError(\"Prototype must be null or an object\");\n };\n module.exports = function(status) {\n var fn, set;\n if (!status) return null;\n if (status.level === 2) {\n if (status.set) {\n set = status.set;\n fn = function(obj, prototype) {\n set.call(validate(obj, prototype), prototype);\n return obj;\n };\n } else {\n fn = function(obj, prototype) {\n validate(obj, prototype).__proto__ = prototype;\n return obj;\n };\n }\n } else {\n fn = function self2(obj, prototype) {\n var isNullBase;\n validate(obj, prototype);\n isNullBase = objIsPrototypeOf.call(self2.nullPolyfill, obj);\n if (isNullBase) delete self2.nullPolyfill.__proto__;\n if (prototype === null) prototype = self2.nullPolyfill;\n obj.__proto__ = prototype;\n if (isNullBase) defineProperty(self2.nullPolyfill, \"__proto__\", nullDesc);\n return obj;\n };\n }\n return Object.defineProperty(fn, \"level\", {\n configurable: false,\n enumerable: false,\n writable: false,\n value: status.level\n });\n }(\n function() {\n var tmpObj1 = /* @__PURE__ */ Object.create(null), tmpObj2 = {}, set, desc = Object.getOwnPropertyDescriptor(Object.prototype, \"__proto__\");\n if (desc) {\n try {\n set = desc.set;\n set.call(tmpObj1, tmpObj2);\n } catch (ignore) {\n }\n if (Object.getPrototypeOf(tmpObj1) === tmpObj2) return { set, level: 2 };\n }\n tmpObj1.__proto__ = tmpObj2;\n if (Object.getPrototypeOf(tmpObj1) === tmpObj2) return { level: 2 };\n tmpObj1 = {};\n tmpObj1.__proto__ = tmpObj2;\n if (Object.getPrototypeOf(tmpObj1) === tmpObj2) return { level: 1 };\n return false;\n }()\n );\n require_create2();\n }\n });\n\n // node_modules/es5-ext/object/set-prototype-of/index.js\n var require_set_prototype_of = __commonJS({\n \"node_modules/es5-ext/object/set-prototype-of/index.js\"(exports, module) {\n \"use strict\";\n module.exports = require_is_implemented2()() ? Object.setPrototypeOf : require_shim3();\n }\n });\n\n // node_modules/es5-ext/object/valid-object.js\n var require_valid_object = __commonJS({\n \"node_modules/es5-ext/object/valid-object.js\"(exports, module) {\n \"use strict\";\n var isObject = require_is_object();\n module.exports = function(value) {\n if (!isObject(value)) throw new TypeError(value + \" is not an Object\");\n return value;\n };\n }\n });\n\n // node_modules/es5-ext/string/random-uniq.js\n var require_random_uniq = __commonJS({\n \"node_modules/es5-ext/string/random-uniq.js\"(exports, module) {\n \"use strict\";\n var generated = /* @__PURE__ */ Object.create(null);\n var random = Math.random;\n module.exports = function() {\n var str;\n do {\n str = random().toString(36).slice(2);\n } while (generated[str]);\n return str;\n };\n }\n });\n\n // node_modules/type/value/is.js\n var require_is = __commonJS({\n \"node_modules/type/value/is.js\"(exports, module) {\n \"use strict\";\n var _undefined = void 0;\n module.exports = function(value) {\n return value !== _undefined && value !== null;\n };\n }\n });\n\n // node_modules/type/object/is.js\n var require_is2 = __commonJS({\n \"node_modules/type/object/is.js\"(exports, module) {\n \"use strict\";\n var isValue = require_is();\n var possibleTypes = {\n \"object\": true,\n \"function\": true,\n \"undefined\": true\n /* document.all */\n };\n module.exports = function(value) {\n if (!isValue(value)) return false;\n return hasOwnProperty.call(possibleTypes, typeof value);\n };\n }\n });\n\n // node_modules/type/prototype/is.js\n var require_is3 = __commonJS({\n \"node_modules/type/prototype/is.js\"(exports, module) {\n \"use strict\";\n var isObject = require_is2();\n module.exports = function(value) {\n if (!isObject(value)) return false;\n try {\n if (!value.constructor) return false;\n return value.constructor.prototype === value;\n } catch (error) {\n return false;\n }\n };\n }\n });\n\n // node_modules/type/function/is.js\n var require_is4 = __commonJS({\n \"node_modules/type/function/is.js\"(exports, module) {\n \"use strict\";\n var isPrototype = require_is3();\n module.exports = function(value) {\n if (typeof value !== \"function\") return false;\n if (!hasOwnProperty.call(value, \"length\")) return false;\n try {\n if (typeof value.length !== \"number\") return false;\n if (typeof value.call !== \"function\") return false;\n if (typeof value.apply !== \"function\") return false;\n } catch (error) {\n return false;\n }\n return !isPrototype(value);\n };\n }\n });\n\n // node_modules/type/plain-function/is.js\n var require_is5 = __commonJS({\n \"node_modules/type/plain-function/is.js\"(exports, module) {\n \"use strict\";\n var isFunction = require_is4();\n var classRe = /^\\s*class[\\s{/}]/;\n var functionToString = Function.prototype.toString;\n module.exports = function(value) {\n if (!isFunction(value)) return false;\n if (classRe.test(functionToString.call(value))) return false;\n return true;\n };\n }\n });\n\n // node_modules/es5-ext/object/assign/is-implemented.js\n var require_is_implemented3 = __commonJS({\n \"node_modules/es5-ext/object/assign/is-implemented.js\"(exports, module) {\n \"use strict\";\n module.exports = function() {\n var assign = Object.assign, obj;\n if (typeof assign !== \"function\") return false;\n obj = { foo: \"raz\" };\n assign(obj, { bar: \"dwa\" }, { trzy: \"trzy\" });\n return obj.foo + obj.bar + obj.trzy === \"razdwatrzy\";\n };\n }\n });\n\n // node_modules/es5-ext/object/keys/is-implemented.js\n var require_is_implemented4 = __commonJS({\n \"node_modules/es5-ext/object/keys/is-implemented.js\"(exports, module) {\n \"use strict\";\n module.exports = function() {\n try {\n Object.keys(\"primitive\");\n return true;\n } catch (e) {\n return false;\n }\n };\n }\n });\n\n // node_modules/es5-ext/object/keys/shim.js\n var require_shim4 = __commonJS({\n \"node_modules/es5-ext/object/keys/shim.js\"(exports, module) {\n \"use strict\";\n var isValue = require_is_value();\n var keys = Object.keys;\n module.exports = function(object) {\n return keys(isValue(object) ? Object(object) : object);\n };\n }\n });\n\n // node_modules/es5-ext/object/keys/index.js\n var require_keys = __commonJS({\n \"node_modules/es5-ext/object/keys/index.js\"(exports, module) {\n \"use strict\";\n module.exports = require_is_implemented4()() ? Object.keys : require_shim4();\n }\n });\n\n // node_modules/es5-ext/object/assign/shim.js\n var require_shim5 = __commonJS({\n \"node_modules/es5-ext/object/assign/shim.js\"(exports, module) {\n \"use strict\";\n var keys = require_keys();\n var value = require_valid_value();\n var max = Math.max;\n module.exports = function(dest, src) {\n var error, i, length = max(arguments.length, 2), assign;\n dest = Object(value(dest));\n assign = function(key) {\n try {\n dest[key] = src[key];\n } catch (e) {\n if (!error) error = e;\n }\n };\n for (i = 1; i < length; ++i) {\n src = arguments[i];\n keys(src).forEach(assign);\n }\n if (error !== void 0) throw error;\n return dest;\n };\n }\n });\n\n // node_modules/es5-ext/object/assign/index.js\n var require_assign = __commonJS({\n \"node_modules/es5-ext/object/assign/index.js\"(exports, module) {\n \"use strict\";\n module.exports = require_is_implemented3()() ? Object.assign : require_shim5();\n }\n });\n\n // node_modules/es5-ext/object/normalize-options.js\n var require_normalize_options = __commonJS({\n \"node_modules/es5-ext/object/normalize-options.js\"(exports, module) {\n \"use strict\";\n var isValue = require_is_value();\n var forEach = Array.prototype.forEach;\n var create = Object.create;\n var process2 = function(src, obj) {\n var key;\n for (key in src) obj[key] = src[key];\n };\n module.exports = function(opts1) {\n var result = create(null);\n forEach.call(arguments, function(options) {\n if (!isValue(options)) return;\n process2(Object(options), result);\n });\n return result;\n };\n }\n });\n\n // node_modules/es5-ext/string/#/contains/is-implemented.js\n var require_is_implemented5 = __commonJS({\n \"node_modules/es5-ext/string/#/contains/is-implemented.js\"(exports, module) {\n \"use strict\";\n var str = \"razdwatrzy\";\n module.exports = function() {\n if (typeof str.contains !== \"function\") return false;\n return str.contains(\"dwa\") === true && str.contains(\"foo\") === false;\n };\n }\n });\n\n // node_modules/es5-ext/string/#/contains/shim.js\n var require_shim6 = __commonJS({\n \"node_modules/es5-ext/string/#/contains/shim.js\"(exports, module) {\n \"use strict\";\n var indexOf = String.prototype.indexOf;\n module.exports = function(searchString) {\n return indexOf.call(this, searchString, arguments[1]) > -1;\n };\n }\n });\n\n // node_modules/es5-ext/string/#/contains/index.js\n var require_contains = __commonJS({\n \"node_modules/es5-ext/string/#/contains/index.js\"(exports, module) {\n \"use strict\";\n module.exports = require_is_implemented5()() ? String.prototype.contains : require_shim6();\n }\n });\n\n // node_modules/d/index.js\n var require_d = __commonJS({\n \"node_modules/d/index.js\"(exports, module) {\n \"use strict\";\n var isValue = require_is();\n var isPlainFunction = require_is5();\n var assign = require_assign();\n var normalizeOpts = require_normalize_options();\n var contains = require_contains();\n var d = module.exports = function(dscr, value) {\n var c, e, w, options, desc;\n if (arguments.length < 2 || typeof dscr !== \"string\") {\n options = value;\n value = dscr;\n dscr = null;\n } else {\n options = arguments[2];\n }\n if (isValue(dscr)) {\n c = contains.call(dscr, \"c\");\n e = contains.call(dscr, \"e\");\n w = contains.call(dscr, \"w\");\n } else {\n c = w = true;\n e = false;\n }\n desc = { value, configurable: c, enumerable: e, writable: w };\n return !options ? desc : assign(normalizeOpts(options), desc);\n };\n d.gs = function(dscr, get, set) {\n var c, e, options, desc;\n if (typeof dscr !== \"string\") {\n options = set;\n set = get;\n get = dscr;\n dscr = null;\n } else {\n options = arguments[3];\n }\n if (!isValue(get)) {\n get = void 0;\n } else if (!isPlainFunction(get)) {\n options = get;\n get = set = void 0;\n } else if (!isValue(set)) {\n set = void 0;\n } else if (!isPlainFunction(set)) {\n options = set;\n set = void 0;\n }\n if (isValue(dscr)) {\n c = contains.call(dscr, \"c\");\n e = contains.call(dscr, \"e\");\n } else {\n c = true;\n e = false;\n }\n desc = { get, set, configurable: c, enumerable: e };\n return !options ? desc : assign(normalizeOpts(options), desc);\n };\n }\n });\n\n // node_modules/es5-ext/function/is-arguments.js\n var require_is_arguments2 = __commonJS({\n \"node_modules/es5-ext/function/is-arguments.js\"(exports, module) {\n \"use strict\";\n var objToString = Object.prototype.toString;\n var id = objToString.call(/* @__PURE__ */ function() {\n return arguments;\n }());\n module.exports = function(value) {\n return objToString.call(value) === id;\n };\n }\n });\n\n // node_modules/es5-ext/string/is-string.js\n var require_is_string = __commonJS({\n \"node_modules/es5-ext/string/is-string.js\"(exports, module) {\n \"use strict\";\n var objToString = Object.prototype.toString;\n var id = objToString.call(\"\");\n module.exports = function(value) {\n return typeof value === \"string\" || value && typeof value === \"object\" && (value instanceof String || objToString.call(value) === id) || false;\n };\n }\n });\n\n // node_modules/ext/global-this/is-implemented.js\n var require_is_implemented6 = __commonJS({\n \"node_modules/ext/global-this/is-implemented.js\"(exports, module) {\n \"use strict\";\n module.exports = function() {\n if (typeof globalThis !== \"object\") return false;\n if (!globalThis) return false;\n return globalThis.Array === Array;\n };\n }\n });\n\n // node_modules/ext/global-this/implementation.js\n var require_implementation6 = __commonJS({\n \"node_modules/ext/global-this/implementation.js\"(exports, module) {\n var naiveFallback = function() {\n if (typeof self === \"object\" && self) return self;\n if (typeof window === \"object\" && window) return window;\n throw new Error(\"Unable to resolve global `this`\");\n };\n module.exports = function() {\n if (this) return this;\n try {\n Object.defineProperty(Object.prototype, \"__global__\", {\n get: function() {\n return this;\n },\n configurable: true\n });\n } catch (error) {\n return naiveFallback();\n }\n try {\n if (!__global__) return naiveFallback();\n return __global__;\n } finally {\n delete Object.prototype.__global__;\n }\n }();\n }\n });\n\n // node_modules/ext/global-this/index.js\n var require_global_this = __commonJS({\n \"node_modules/ext/global-this/index.js\"(exports, module) {\n \"use strict\";\n module.exports = require_is_implemented6()() ? globalThis : require_implementation6();\n }\n });\n\n // node_modules/es6-symbol/is-implemented.js\n var require_is_implemented7 = __commonJS({\n \"node_modules/es6-symbol/is-implemented.js\"(exports, module) {\n \"use strict\";\n var global2 = require_global_this();\n var validTypes = { object: true, symbol: true };\n module.exports = function() {\n var Symbol2 = global2.Symbol;\n var symbol;\n if (typeof Symbol2 !== \"function\") return false;\n symbol = Symbol2(\"test symbol\");\n try {\n String(symbol);\n } catch (e) {\n return false;\n }\n if (!validTypes[typeof Symbol2.iterator]) return false;\n if (!validTypes[typeof Symbol2.toPrimitive]) return false;\n if (!validTypes[typeof Symbol2.toStringTag]) return false;\n return true;\n };\n }\n });\n\n // node_modules/es6-symbol/is-symbol.js\n var require_is_symbol = __commonJS({\n \"node_modules/es6-symbol/is-symbol.js\"(exports, module) {\n \"use strict\";\n module.exports = function(value) {\n if (!value) return false;\n if (typeof value === \"symbol\") return true;\n if (!value.constructor) return false;\n if (value.constructor.name !== \"Symbol\") return false;\n return value[value.constructor.toStringTag] === \"Symbol\";\n };\n }\n });\n\n // node_modules/es6-symbol/validate-symbol.js\n var require_validate_symbol = __commonJS({\n \"node_modules/es6-symbol/validate-symbol.js\"(exports, module) {\n \"use strict\";\n var isSymbol = require_is_symbol();\n module.exports = function(value) {\n if (!isSymbol(value)) throw new TypeError(value + \" is not a symbol\");\n return value;\n };\n }\n });\n\n // node_modules/es6-symbol/lib/private/generate-name.js\n var require_generate_name = __commonJS({\n \"node_modules/es6-symbol/lib/private/generate-name.js\"(exports, module) {\n \"use strict\";\n var d = require_d();\n var create = Object.create;\n var defineProperty = Object.defineProperty;\n var objPrototype = Object.prototype;\n var created = create(null);\n module.exports = function(desc) {\n var postfix = 0, name, ie11BugWorkaround;\n while (created[desc + (postfix || \"\")]) ++postfix;\n desc += postfix || \"\";\n created[desc] = true;\n name = \"@@\" + desc;\n defineProperty(\n objPrototype,\n name,\n d.gs(null, function(value) {\n if (ie11BugWorkaround) return;\n ie11BugWorkaround = true;\n defineProperty(this, name, d(value));\n ie11BugWorkaround = false;\n })\n );\n return name;\n };\n }\n });\n\n // node_modules/es6-symbol/lib/private/setup/standard-symbols.js\n var require_standard_symbols = __commonJS({\n \"node_modules/es6-symbol/lib/private/setup/standard-symbols.js\"(exports, module) {\n \"use strict\";\n var d = require_d();\n var NativeSymbol = require_global_this().Symbol;\n module.exports = function(SymbolPolyfill) {\n return Object.defineProperties(SymbolPolyfill, {\n // To ensure proper interoperability with other native functions (e.g. Array.from)\n // fallback to eventual native implementation of given symbol\n hasInstance: d(\n \"\",\n NativeSymbol && NativeSymbol.hasInstance || SymbolPolyfill(\"hasInstance\")\n ),\n isConcatSpreadable: d(\n \"\",\n NativeSymbol && NativeSymbol.isConcatSpreadable || SymbolPolyfill(\"isConcatSpreadable\")\n ),\n iterator: d(\"\", NativeSymbol && NativeSymbol.iterator || SymbolPolyfill(\"iterator\")),\n match: d(\"\", NativeSymbol && NativeSymbol.match || SymbolPolyfill(\"match\")),\n replace: d(\"\", NativeSymbol && NativeSymbol.replace || SymbolPolyfill(\"replace\")),\n search: d(\"\", NativeSymbol && NativeSymbol.search || SymbolPolyfill(\"search\")),\n species: d(\"\", NativeSymbol && NativeSymbol.species || SymbolPolyfill(\"species\")),\n split: d(\"\", NativeSymbol && NativeSymbol.split || SymbolPolyfill(\"split\")),\n toPrimitive: d(\n \"\",\n NativeSymbol && NativeSymbol.toPrimitive || SymbolPolyfill(\"toPrimitive\")\n ),\n toStringTag: d(\n \"\",\n NativeSymbol && NativeSymbol.toStringTag || SymbolPolyfill(\"toStringTag\")\n ),\n unscopables: d(\n \"\",\n NativeSymbol && NativeSymbol.unscopables || SymbolPolyfill(\"unscopables\")\n )\n });\n };\n }\n });\n\n // node_modules/es6-symbol/lib/private/setup/symbol-registry.js\n var require_symbol_registry = __commonJS({\n \"node_modules/es6-symbol/lib/private/setup/symbol-registry.js\"(exports, module) {\n \"use strict\";\n var d = require_d();\n var validateSymbol = require_validate_symbol();\n var registry = /* @__PURE__ */ Object.create(null);\n module.exports = function(SymbolPolyfill) {\n return Object.defineProperties(SymbolPolyfill, {\n for: d(function(key) {\n if (registry[key]) return registry[key];\n return registry[key] = SymbolPolyfill(String(key));\n }),\n keyFor: d(function(symbol) {\n var key;\n validateSymbol(symbol);\n for (key in registry) {\n if (registry[key] === symbol) return key;\n }\n return void 0;\n })\n });\n };\n }\n });\n\n // node_modules/es6-symbol/polyfill.js\n var require_polyfill4 = __commonJS({\n \"node_modules/es6-symbol/polyfill.js\"(exports, module) {\n \"use strict\";\n var d = require_d();\n var validateSymbol = require_validate_symbol();\n var NativeSymbol = require_global_this().Symbol;\n var generateName = require_generate_name();\n var setupStandardSymbols = require_standard_symbols();\n var setupSymbolRegistry = require_symbol_registry();\n var create = Object.create;\n var defineProperties = Object.defineProperties;\n var defineProperty = Object.defineProperty;\n var SymbolPolyfill;\n var HiddenSymbol;\n var isNativeSafe;\n if (typeof NativeSymbol === \"function\") {\n try {\n String(NativeSymbol());\n isNativeSafe = true;\n } catch (ignore) {\n }\n } else {\n NativeSymbol = null;\n }\n HiddenSymbol = function Symbol2(description) {\n if (this instanceof HiddenSymbol) throw new TypeError(\"Symbol is not a constructor\");\n return SymbolPolyfill(description);\n };\n module.exports = SymbolPolyfill = function Symbol2(description) {\n var symbol;\n if (this instanceof Symbol2) throw new TypeError(\"Symbol is not a constructor\");\n if (isNativeSafe) return NativeSymbol(description);\n symbol = create(HiddenSymbol.prototype);\n description = description === void 0 ? \"\" : String(description);\n return defineProperties(symbol, {\n __description__: d(\"\", description),\n __name__: d(\"\", generateName(description))\n });\n };\n setupStandardSymbols(SymbolPolyfill);\n setupSymbolRegistry(SymbolPolyfill);\n defineProperties(HiddenSymbol.prototype, {\n constructor: d(SymbolPolyfill),\n toString: d(\"\", function() {\n return this.__name__;\n })\n });\n defineProperties(SymbolPolyfill.prototype, {\n toString: d(function() {\n return \"Symbol (\" + validateSymbol(this).__description__ + \")\";\n }),\n valueOf: d(function() {\n return validateSymbol(this);\n })\n });\n defineProperty(\n SymbolPolyfill.prototype,\n SymbolPolyfill.toPrimitive,\n d(\"\", function() {\n var symbol = validateSymbol(this);\n if (typeof symbol === \"symbol\") return symbol;\n return symbol.toString();\n })\n );\n defineProperty(SymbolPolyfill.prototype, SymbolPolyfill.toStringTag, d(\"c\", \"Symbol\"));\n defineProperty(\n HiddenSymbol.prototype,\n SymbolPolyfill.toStringTag,\n d(\"c\", SymbolPolyfill.prototype[SymbolPolyfill.toStringTag])\n );\n defineProperty(\n HiddenSymbol.prototype,\n SymbolPolyfill.toPrimitive,\n d(\"c\", SymbolPolyfill.prototype[SymbolPolyfill.toPrimitive])\n );\n }\n });\n\n // node_modules/es6-symbol/index.js\n var require_es6_symbol = __commonJS({\n \"node_modules/es6-symbol/index.js\"(exports, module) {\n \"use strict\";\n module.exports = require_is_implemented7()() ? require_global_this().Symbol : require_polyfill4();\n }\n });\n\n // node_modules/es5-ext/array/#/clear.js\n var require_clear = __commonJS({\n \"node_modules/es5-ext/array/#/clear.js\"(exports, module) {\n \"use strict\";\n var value = require_valid_value();\n module.exports = function() {\n value(this).length = 0;\n return this;\n };\n }\n });\n\n // node_modules/es5-ext/object/valid-callable.js\n var require_valid_callable = __commonJS({\n \"node_modules/es5-ext/object/valid-callable.js\"(exports, module) {\n \"use strict\";\n module.exports = function(fn) {\n if (typeof fn !== \"function\") throw new TypeError(fn + \" is not a function\");\n return fn;\n };\n }\n });\n\n // node_modules/type/string/coerce.js\n var require_coerce2 = __commonJS({\n \"node_modules/type/string/coerce.js\"(exports, module) {\n \"use strict\";\n var isValue = require_is();\n var isObject = require_is2();\n var objectToString = Object.prototype.toString;\n module.exports = function(value) {\n if (!isValue(value)) return null;\n if (isObject(value)) {\n var valueToString = value.toString;\n if (typeof valueToString !== \"function\") return null;\n if (valueToString === objectToString) return null;\n }\n try {\n return \"\" + value;\n } catch (error) {\n return null;\n }\n };\n }\n });\n\n // node_modules/type/lib/safe-to-string.js\n var require_safe_to_string = __commonJS({\n \"node_modules/type/lib/safe-to-string.js\"(exports, module) {\n \"use strict\";\n module.exports = function(value) {\n try {\n return value.toString();\n } catch (error) {\n try {\n return String(value);\n } catch (error2) {\n return null;\n }\n }\n };\n }\n });\n\n // node_modules/type/lib/to-short-string.js\n var require_to_short_string = __commonJS({\n \"node_modules/type/lib/to-short-string.js\"(exports, module) {\n \"use strict\";\n var safeToString = require_safe_to_string();\n var reNewLine = /[\\n\\r\\u2028\\u2029]/g;\n module.exports = function(value) {\n var string = safeToString(value);\n if (string === null) return \"\";\n if (string.length > 100) string = string.slice(0, 99) + \"\\u2026\";\n string = string.replace(reNewLine, function(char) {\n switch (char) {\n case \"\\n\":\n return \"\\\\n\";\n case \"\\r\":\n return \"\\\\r\";\n case \"\\u2028\":\n return \"\\\\u2028\";\n case \"\\u2029\":\n return \"\\\\u2029\";\n /* istanbul ignore next */\n default:\n throw new Error(\"Unexpected character\");\n }\n });\n return string;\n };\n }\n });\n\n // node_modules/type/lib/resolve-exception.js\n var require_resolve_exception = __commonJS({\n \"node_modules/type/lib/resolve-exception.js\"(exports, module) {\n \"use strict\";\n var isValue = require_is();\n var isObject = require_is2();\n var stringCoerce = require_coerce2();\n var toShortString = require_to_short_string();\n var resolveMessage = function(message, value) {\n return message.replace(\"%v\", toShortString(value));\n };\n module.exports = function(value, defaultMessage, inputOptions) {\n if (!isObject(inputOptions)) throw new TypeError(resolveMessage(defaultMessage, value));\n if (!isValue(value)) {\n if (\"default\" in inputOptions) return inputOptions[\"default\"];\n if (inputOptions.isOptional) return null;\n }\n var errorMessage = stringCoerce(inputOptions.errorMessage);\n if (!isValue(errorMessage)) errorMessage = defaultMessage;\n throw new TypeError(resolveMessage(errorMessage, value));\n };\n }\n });\n\n // node_modules/type/value/ensure.js\n var require_ensure = __commonJS({\n \"node_modules/type/value/ensure.js\"(exports, module) {\n \"use strict\";\n var resolveException = require_resolve_exception();\n var is = require_is();\n module.exports = function(value) {\n if (is(value)) return value;\n return resolveException(value, \"Cannot use %v\", arguments[1]);\n };\n }\n });\n\n // node_modules/type/plain-function/ensure.js\n var require_ensure2 = __commonJS({\n \"node_modules/type/plain-function/ensure.js\"(exports, module) {\n \"use strict\";\n var resolveException = require_resolve_exception();\n var is = require_is5();\n module.exports = function(value) {\n if (is(value)) return value;\n return resolveException(value, \"%v is not a plain function\", arguments[1]);\n };\n }\n });\n\n // node_modules/es5-ext/array/from/is-implemented.js\n var require_is_implemented8 = __commonJS({\n \"node_modules/es5-ext/array/from/is-implemented.js\"(exports, module) {\n \"use strict\";\n module.exports = function() {\n var from = Array.from, arr, result;\n if (typeof from !== \"function\") return false;\n arr = [\"raz\", \"dwa\"];\n result = from(arr);\n return Boolean(result && result !== arr && result[1] === \"dwa\");\n };\n }\n });\n\n // node_modules/es5-ext/function/is-function.js\n var require_is_function = __commonJS({\n \"node_modules/es5-ext/function/is-function.js\"(exports, module) {\n \"use strict\";\n var objToString = Object.prototype.toString;\n var isFunctionStringTag = RegExp.prototype.test.bind(/^[object [A-Za-z0-9]*Function]$/);\n module.exports = function(value) {\n return typeof value === \"function\" && isFunctionStringTag(objToString.call(value));\n };\n }\n });\n\n // node_modules/es5-ext/math/sign/is-implemented.js\n var require_is_implemented9 = __commonJS({\n \"node_modules/es5-ext/math/sign/is-implemented.js\"(exports, module) {\n \"use strict\";\n module.exports = function() {\n var sign = Math.sign;\n if (typeof sign !== \"function\") return false;\n return sign(10) === 1 && sign(-20) === -1;\n };\n }\n });\n\n // node_modules/es5-ext/math/sign/shim.js\n var require_shim7 = __commonJS({\n \"node_modules/es5-ext/math/sign/shim.js\"(exports, module) {\n \"use strict\";\n module.exports = function(value) {\n value = Number(value);\n if (isNaN(value) || value === 0) return value;\n return value > 0 ? 1 : -1;\n };\n }\n });\n\n // node_modules/es5-ext/math/sign/index.js\n var require_sign = __commonJS({\n \"node_modules/es5-ext/math/sign/index.js\"(exports, module) {\n \"use strict\";\n module.exports = require_is_implemented9()() ? Math.sign : require_shim7();\n }\n });\n\n // node_modules/es5-ext/number/to-integer.js\n var require_to_integer = __commonJS({\n \"node_modules/es5-ext/number/to-integer.js\"(exports, module) {\n \"use strict\";\n var sign = require_sign();\n var abs = Math.abs;\n var floor = Math.floor;\n module.exports = function(value) {\n if (isNaN(value)) return 0;\n value = Number(value);\n if (value === 0 || !isFinite(value)) return value;\n return sign(value) * floor(abs(value));\n };\n }\n });\n\n // node_modules/es5-ext/number/to-pos-integer.js\n var require_to_pos_integer = __commonJS({\n \"node_modules/es5-ext/number/to-pos-integer.js\"(exports, module) {\n \"use strict\";\n var toInteger = require_to_integer();\n var max = Math.max;\n module.exports = function(value) {\n return max(0, toInteger(value));\n };\n }\n });\n\n // node_modules/es5-ext/array/from/shim.js\n var require_shim8 = __commonJS({\n \"node_modules/es5-ext/array/from/shim.js\"(exports, module) {\n \"use strict\";\n var iteratorSymbol = require_es6_symbol().iterator;\n var isArguments = require_is_arguments2();\n var isFunction = require_is_function();\n var toPosInt = require_to_pos_integer();\n var callable = require_valid_callable();\n var validValue = require_valid_value();\n var isValue = require_is_value();\n var isString = require_is_string();\n var isArray = Array.isArray;\n var call = Function.prototype.call;\n var desc = { configurable: true, enumerable: true, writable: true, value: null };\n var defineProperty = Object.defineProperty;\n module.exports = function(arrayLike) {\n var mapFn = arguments[1], thisArg = arguments[2], Context, i, j, arr, length, code, iterator, result, getIterator, value;\n arrayLike = Object(validValue(arrayLike));\n if (isValue(mapFn)) callable(mapFn);\n if (!this || this === Array || !isFunction(this)) {\n if (!mapFn) {\n if (isArguments(arrayLike)) {\n length = arrayLike.length;\n if (length !== 1) return Array.apply(null, arrayLike);\n arr = new Array(1);\n arr[0] = arrayLike[0];\n return arr;\n }\n if (isArray(arrayLike)) {\n arr = new Array(length = arrayLike.length);\n for (i = 0; i < length; ++i) arr[i] = arrayLike[i];\n return arr;\n }\n }\n arr = [];\n } else {\n Context = this;\n }\n if (!isArray(arrayLike)) {\n if ((getIterator = arrayLike[iteratorSymbol]) !== void 0) {\n iterator = callable(getIterator).call(arrayLike);\n if (Context) arr = new Context();\n result = iterator.next();\n i = 0;\n while (!result.done) {\n value = mapFn ? call.call(mapFn, thisArg, result.value, i) : result.value;\n if (Context) {\n desc.value = value;\n defineProperty(arr, i, desc);\n } else {\n arr[i] = value;\n }\n result = iterator.next();\n ++i;\n }\n length = i;\n } else if (isString(arrayLike)) {\n length = arrayLike.length;\n if (Context) arr = new Context();\n for (i = 0, j = 0; i < length; ++i) {\n value = arrayLike[i];\n if (i + 1 < length) {\n code = value.charCodeAt(0);\n if (code >= 55296 && code <= 56319) value += arrayLike[++i];\n }\n value = mapFn ? call.call(mapFn, thisArg, value, j) : value;\n if (Context) {\n desc.value = value;\n defineProperty(arr, j, desc);\n } else {\n arr[j] = value;\n }\n ++j;\n }\n length = j;\n }\n }\n if (length === void 0) {\n length = toPosInt(arrayLike.length);\n if (Context) arr = new Context(length);\n for (i = 0; i < length; ++i) {\n value = mapFn ? call.call(mapFn, thisArg, arrayLike[i], i) : arrayLike[i];\n if (Context) {\n desc.value = value;\n defineProperty(arr, i, desc);\n } else {\n arr[i] = value;\n }\n }\n }\n if (Context) {\n desc.value = null;\n arr.length = length;\n }\n return arr;\n };\n }\n });\n\n // node_modules/es5-ext/array/from/index.js\n var require_from = __commonJS({\n \"node_modules/es5-ext/array/from/index.js\"(exports, module) {\n \"use strict\";\n module.exports = require_is_implemented8()() ? Array.from : require_shim8();\n }\n });\n\n // node_modules/es5-ext/object/copy.js\n var require_copy2 = __commonJS({\n \"node_modules/es5-ext/object/copy.js\"(exports, module) {\n \"use strict\";\n var aFrom = require_from();\n var assign = require_assign();\n var value = require_valid_value();\n module.exports = function(obj) {\n var copy = Object(value(obj)), propertyNames = arguments[1], options = Object(arguments[2]);\n if (copy !== obj && !propertyNames) return copy;\n var result = {};\n if (propertyNames) {\n aFrom(propertyNames, function(propertyName) {\n if (options.ensure || propertyName in obj) result[propertyName] = obj[propertyName];\n });\n } else {\n assign(result, obj);\n }\n return result;\n };\n }\n });\n\n // node_modules/es5-ext/object/_iterate.js\n var require_iterate = __commonJS({\n \"node_modules/es5-ext/object/_iterate.js\"(exports, module) {\n \"use strict\";\n var callable = require_valid_callable();\n var value = require_valid_value();\n var bind = Function.prototype.bind;\n var call = Function.prototype.call;\n var keys = Object.keys;\n var objPropertyIsEnumerable = Object.prototype.propertyIsEnumerable;\n module.exports = function(method, defVal) {\n return function(obj, cb) {\n var list, thisArg = arguments[2], compareFn = arguments[3];\n obj = Object(value(obj));\n callable(cb);\n list = keys(obj);\n if (compareFn) {\n list.sort(typeof compareFn === \"function\" ? bind.call(compareFn, obj) : void 0);\n }\n if (typeof method !== \"function\") method = list[method];\n return call.call(method, list, function(key, index) {\n if (!objPropertyIsEnumerable.call(obj, key)) return defVal;\n return call.call(cb, thisArg, obj[key], key, obj, index);\n });\n };\n };\n }\n });\n\n // node_modules/es5-ext/object/for-each.js\n var require_for_each2 = __commonJS({\n \"node_modules/es5-ext/object/for-each.js\"(exports, module) {\n \"use strict\";\n module.exports = require_iterate()(\"forEach\");\n }\n });\n\n // node_modules/es5-ext/object/map.js\n var require_map = __commonJS({\n \"node_modules/es5-ext/object/map.js\"(exports, module) {\n \"use strict\";\n var callable = require_valid_callable();\n var forEach = require_for_each2();\n var call = Function.prototype.call;\n module.exports = function(obj, cb) {\n var result = {}, thisArg = arguments[2];\n callable(cb);\n forEach(obj, function(value, key, targetObj, index) {\n result[key] = call.call(cb, thisArg, value, key, targetObj, index);\n });\n return result;\n };\n }\n });\n\n // node_modules/d/auto-bind.js\n var require_auto_bind = __commonJS({\n \"node_modules/d/auto-bind.js\"(exports, module) {\n \"use strict\";\n var isValue = require_is();\n var ensureValue = require_ensure();\n var ensurePlainFunction = require_ensure2();\n var copy = require_copy2();\n var normalizeOptions = require_normalize_options();\n var map = require_map();\n var bind = Function.prototype.bind;\n var defineProperty = Object.defineProperty;\n var hasOwnProperty2 = Object.prototype.hasOwnProperty;\n var define2;\n define2 = function(name, desc, options) {\n var value = ensureValue(desc) && ensurePlainFunction(desc.value), dgs;\n dgs = copy(desc);\n delete dgs.writable;\n delete dgs.value;\n dgs.get = function() {\n if (!options.overwriteDefinition && hasOwnProperty2.call(this, name)) return value;\n desc.value = bind.call(value, options.resolveContext ? options.resolveContext(this) : this);\n defineProperty(this, name, desc);\n return this[name];\n };\n return dgs;\n };\n module.exports = function(props) {\n var options = normalizeOptions(arguments[1]);\n if (isValue(options.resolveContext)) ensurePlainFunction(options.resolveContext);\n return map(props, function(desc, name) {\n return define2(name, desc, options);\n });\n };\n }\n });\n\n // node_modules/es6-iterator/index.js\n var require_es6_iterator = __commonJS({\n \"node_modules/es6-iterator/index.js\"(exports, module) {\n \"use strict\";\n var clear = require_clear();\n var assign = require_assign();\n var callable = require_valid_callable();\n var value = require_valid_value();\n var d = require_d();\n var autoBind = require_auto_bind();\n var Symbol2 = require_es6_symbol();\n var defineProperty = Object.defineProperty;\n var defineProperties = Object.defineProperties;\n var Iterator;\n module.exports = Iterator = function(list, context) {\n if (!(this instanceof Iterator)) throw new TypeError(\"Constructor requires 'new'\");\n defineProperties(this, {\n __list__: d(\"w\", value(list)),\n __context__: d(\"w\", context),\n __nextIndex__: d(\"w\", 0)\n });\n if (!context) return;\n callable(context.on);\n context.on(\"_add\", this._onAdd);\n context.on(\"_delete\", this._onDelete);\n context.on(\"_clear\", this._onClear);\n };\n delete Iterator.prototype.constructor;\n defineProperties(\n Iterator.prototype,\n assign(\n {\n _next: d(function() {\n var i;\n if (!this.__list__) return void 0;\n if (this.__redo__) {\n i = this.__redo__.shift();\n if (i !== void 0) return i;\n }\n if (this.__nextIndex__ < this.__list__.length) return this.__nextIndex__++;\n this._unBind();\n return void 0;\n }),\n next: d(function() {\n return this._createResult(this._next());\n }),\n _createResult: d(function(i) {\n if (i === void 0) return { done: true, value: void 0 };\n return { done: false, value: this._resolve(i) };\n }),\n _resolve: d(function(i) {\n return this.__list__[i];\n }),\n _unBind: d(function() {\n this.__list__ = null;\n delete this.__redo__;\n if (!this.__context__) return;\n this.__context__.off(\"_add\", this._onAdd);\n this.__context__.off(\"_delete\", this._onDelete);\n this.__context__.off(\"_clear\", this._onClear);\n this.__context__ = null;\n }),\n toString: d(function() {\n return \"[object \" + (this[Symbol2.toStringTag] || \"Object\") + \"]\";\n })\n },\n autoBind({\n _onAdd: d(function(index) {\n if (index >= this.__nextIndex__) return;\n ++this.__nextIndex__;\n if (!this.__redo__) {\n defineProperty(this, \"__redo__\", d(\"c\", [index]));\n return;\n }\n this.__redo__.forEach(function(redo, i) {\n if (redo >= index) this.__redo__[i] = ++redo;\n }, this);\n this.__redo__.push(index);\n }),\n _onDelete: d(function(index) {\n var i;\n if (index >= this.__nextIndex__) return;\n --this.__nextIndex__;\n if (!this.__redo__) return;\n i = this.__redo__.indexOf(index);\n if (i !== -1) this.__redo__.splice(i, 1);\n this.__redo__.forEach(function(redo, j) {\n if (redo > index) this.__redo__[j] = --redo;\n }, this);\n }),\n _onClear: d(function() {\n if (this.__redo__) clear.call(this.__redo__);\n this.__nextIndex__ = 0;\n })\n })\n )\n );\n defineProperty(\n Iterator.prototype,\n Symbol2.iterator,\n d(function() {\n return this;\n })\n );\n }\n });\n\n // node_modules/es6-iterator/array.js\n var require_array2 = __commonJS({\n \"node_modules/es6-iterator/array.js\"(exports, module) {\n \"use strict\";\n var setPrototypeOf = require_set_prototype_of();\n var contains = require_contains();\n var d = require_d();\n var Symbol2 = require_es6_symbol();\n var Iterator = require_es6_iterator();\n var defineProperty = Object.defineProperty;\n var ArrayIterator;\n ArrayIterator = module.exports = function(arr, kind) {\n if (!(this instanceof ArrayIterator)) throw new TypeError(\"Constructor requires 'new'\");\n Iterator.call(this, arr);\n if (!kind) kind = \"value\";\n else if (contains.call(kind, \"key+value\")) kind = \"key+value\";\n else if (contains.call(kind, \"key\")) kind = \"key\";\n else kind = \"value\";\n defineProperty(this, \"__kind__\", d(\"\", kind));\n };\n if (setPrototypeOf) setPrototypeOf(ArrayIterator, Iterator);\n delete ArrayIterator.prototype.constructor;\n ArrayIterator.prototype = Object.create(Iterator.prototype, {\n _resolve: d(function(i) {\n if (this.__kind__ === \"value\") return this.__list__[i];\n if (this.__kind__ === \"key+value\") return [i, this.__list__[i]];\n return i;\n })\n });\n defineProperty(ArrayIterator.prototype, Symbol2.toStringTag, d(\"c\", \"Array Iterator\"));\n }\n });\n\n // node_modules/es6-iterator/string.js\n var require_string = __commonJS({\n \"node_modules/es6-iterator/string.js\"(exports, module) {\n \"use strict\";\n var setPrototypeOf = require_set_prototype_of();\n var d = require_d();\n var Symbol2 = require_es6_symbol();\n var Iterator = require_es6_iterator();\n var defineProperty = Object.defineProperty;\n var StringIterator;\n StringIterator = module.exports = function(str) {\n if (!(this instanceof StringIterator)) throw new TypeError(\"Constructor requires 'new'\");\n str = String(str);\n Iterator.call(this, str);\n defineProperty(this, \"__length__\", d(\"\", str.length));\n };\n if (setPrototypeOf) setPrototypeOf(StringIterator, Iterator);\n delete StringIterator.prototype.constructor;\n StringIterator.prototype = Object.create(Iterator.prototype, {\n _next: d(function() {\n if (!this.__list__) return void 0;\n if (this.__nextIndex__ < this.__length__) return this.__nextIndex__++;\n this._unBind();\n return void 0;\n }),\n _resolve: d(function(i) {\n var char = this.__list__[i], code;\n if (this.__nextIndex__ === this.__length__) return char;\n code = char.charCodeAt(0);\n if (code >= 55296 && code <= 56319) return char + this.__list__[this.__nextIndex__++];\n return char;\n })\n });\n defineProperty(StringIterator.prototype, Symbol2.toStringTag, d(\"c\", \"String Iterator\"));\n }\n });\n\n // node_modules/es6-iterator/is-iterable.js\n var require_is_iterable = __commonJS({\n \"node_modules/es6-iterator/is-iterable.js\"(exports, module) {\n \"use strict\";\n var isArguments = require_is_arguments2();\n var isValue = require_is_value();\n var isString = require_is_string();\n var iteratorSymbol = require_es6_symbol().iterator;\n var isArray = Array.isArray;\n module.exports = function(value) {\n if (!isValue(value)) return false;\n if (isArray(value)) return true;\n if (isString(value)) return true;\n if (isArguments(value)) return true;\n return typeof value[iteratorSymbol] === \"function\";\n };\n }\n });\n\n // node_modules/es6-iterator/valid-iterable.js\n var require_valid_iterable = __commonJS({\n \"node_modules/es6-iterator/valid-iterable.js\"(exports, module) {\n \"use strict\";\n var isIterable = require_is_iterable();\n module.exports = function(value) {\n if (!isIterable(value)) throw new TypeError(value + \" is not iterable\");\n return value;\n };\n }\n });\n\n // node_modules/es6-iterator/get.js\n var require_get = __commonJS({\n \"node_modules/es6-iterator/get.js\"(exports, module) {\n \"use strict\";\n var isArguments = require_is_arguments2();\n var isString = require_is_string();\n var ArrayIterator = require_array2();\n var StringIterator = require_string();\n var iterable = require_valid_iterable();\n var iteratorSymbol = require_es6_symbol().iterator;\n module.exports = function(obj) {\n if (typeof iterable(obj)[iteratorSymbol] === \"function\") return obj[iteratorSymbol]();\n if (isArguments(obj)) return new ArrayIterator(obj);\n if (isString(obj)) return new StringIterator(obj);\n return new ArrayIterator(obj);\n };\n }\n });\n\n // node_modules/es6-iterator/for-of.js\n var require_for_of = __commonJS({\n \"node_modules/es6-iterator/for-of.js\"(exports, module) {\n \"use strict\";\n var isArguments = require_is_arguments2();\n var callable = require_valid_callable();\n var isString = require_is_string();\n var get = require_get();\n var isArray = Array.isArray;\n var call = Function.prototype.call;\n var some = Array.prototype.some;\n module.exports = function(iterable, cb) {\n var mode, thisArg = arguments[2], result, doBreak, broken, i, length, char, code;\n if (isArray(iterable) || isArguments(iterable)) mode = \"array\";\n else if (isString(iterable)) mode = \"string\";\n else iterable = get(iterable);\n callable(cb);\n doBreak = function() {\n broken = true;\n };\n if (mode === \"array\") {\n some.call(iterable, function(value) {\n call.call(cb, thisArg, value, doBreak);\n return broken;\n });\n return;\n }\n if (mode === \"string\") {\n length = iterable.length;\n for (i = 0; i < length; ++i) {\n char = iterable[i];\n if (i + 1 < length) {\n code = char.charCodeAt(0);\n if (code >= 55296 && code <= 56319) char += iterable[++i];\n }\n call.call(cb, thisArg, char, doBreak);\n if (broken) break;\n }\n return;\n }\n result = iterable.next();\n while (!result.done) {\n call.call(cb, thisArg, result.value, doBreak);\n if (broken) return;\n result = iterable.next();\n }\n };\n }\n });\n\n // node_modules/es6-weak-map/is-native-implemented.js\n var require_is_native_implemented = __commonJS({\n \"node_modules/es6-weak-map/is-native-implemented.js\"(exports, module) {\n \"use strict\";\n module.exports = function() {\n if (typeof WeakMap !== \"function\") return false;\n return Object.prototype.toString.call(/* @__PURE__ */ new WeakMap()) === \"[object WeakMap]\";\n }();\n }\n });\n\n // node_modules/es6-weak-map/polyfill.js\n var require_polyfill5 = __commonJS({\n \"node_modules/es6-weak-map/polyfill.js\"(exports, module) {\n \"use strict\";\n var isValue = require_is_value();\n var setPrototypeOf = require_set_prototype_of();\n var object = require_valid_object();\n var ensureValue = require_valid_value();\n var randomUniq = require_random_uniq();\n var d = require_d();\n var getIterator = require_get();\n var forOf = require_for_of();\n var toStringTagSymbol = require_es6_symbol().toStringTag;\n var isNative = require_is_native_implemented();\n var isArray = Array.isArray;\n var defineProperty = Object.defineProperty;\n var objHasOwnProperty = Object.prototype.hasOwnProperty;\n var getPrototypeOf = Object.getPrototypeOf;\n var WeakMapPoly;\n module.exports = WeakMapPoly = function() {\n var iterable = arguments[0], self2;\n if (!(this instanceof WeakMapPoly)) throw new TypeError(\"Constructor requires 'new'\");\n self2 = isNative && setPrototypeOf && WeakMap !== WeakMapPoly ? setPrototypeOf(/* @__PURE__ */ new WeakMap(), getPrototypeOf(this)) : this;\n if (isValue(iterable)) {\n if (!isArray(iterable)) iterable = getIterator(iterable);\n }\n defineProperty(self2, \"__weakMapData__\", d(\"c\", \"$weakMap$\" + randomUniq()));\n if (!iterable) return self2;\n forOf(iterable, function(val) {\n ensureValue(val);\n self2.set(val[0], val[1]);\n });\n return self2;\n };\n if (isNative) {\n if (setPrototypeOf) setPrototypeOf(WeakMapPoly, WeakMap);\n WeakMapPoly.prototype = Object.create(WeakMap.prototype, { constructor: d(WeakMapPoly) });\n }\n Object.defineProperties(WeakMapPoly.prototype, {\n delete: d(function(key) {\n if (objHasOwnProperty.call(object(key), this.__weakMapData__)) {\n delete key[this.__weakMapData__];\n return true;\n }\n return false;\n }),\n get: d(function(key) {\n if (!objHasOwnProperty.call(object(key), this.__weakMapData__)) return void 0;\n return key[this.__weakMapData__];\n }),\n has: d(function(key) {\n return objHasOwnProperty.call(object(key), this.__weakMapData__);\n }),\n set: d(function(key, value) {\n defineProperty(object(key), this.__weakMapData__, d(\"c\", value));\n return this;\n }),\n toString: d(function() {\n return \"[object WeakMap]\";\n })\n });\n defineProperty(WeakMapPoly.prototype, toStringTagSymbol, d(\"c\", \"WeakMap\"));\n }\n });\n\n // node_modules/es6-weak-map/index.js\n var require_es6_weak_map = __commonJS({\n \"node_modules/es6-weak-map/index.js\"(exports, module) {\n \"use strict\";\n module.exports = require_is_implemented()() ? WeakMap : require_polyfill5();\n }\n });\n\n // node_modules/array-find-index/index.js\n var require_array_find_index = __commonJS({\n \"node_modules/array-find-index/index.js\"(exports, module) {\n \"use strict\";\n module.exports = function(arr, predicate, ctx) {\n if (typeof Array.prototype.findIndex === \"function\") {\n return arr.findIndex(predicate, ctx);\n }\n if (typeof predicate !== \"function\") {\n throw new TypeError(\"predicate must be a function\");\n }\n var list = Object(arr);\n var len = list.length;\n if (len === 0) {\n return -1;\n }\n for (var i = 0; i < len; i++) {\n if (predicate.call(ctx, list[i], i, list)) {\n return i;\n }\n }\n return -1;\n };\n }\n });\n\n // node_modules/regl-line2d/index.js\n var require_regl_line2d = __commonJS({\n \"node_modules/regl-line2d/index.js\"(exports, module) {\n \"use strict\";\n var rgba = require_color_normalize();\n var getBounds = require_array_bounds();\n var extend = require_object_assign();\n var pick = require_pick_by_alias();\n var flatten = require_flatten_vertex_data();\n var triangulate = require_earcut();\n var normalize = require_array_normalize();\n var { float32, fract32 } = require_to_float32();\n var WeakMap2 = require_es6_weak_map();\n var parseRect = require_parse_rect();\n var findIndex = require_array_find_index();\n var rectVert = `\nprecision highp float;\n\nattribute vec2 aCoord, bCoord, aCoordFract, bCoordFract;\nattribute vec4 color;\nattribute float lineEnd, lineTop;\n\nuniform vec2 scale, scaleFract, translate, translateFract;\nuniform float thickness, pixelRatio, id, depth;\nuniform vec4 viewport;\n\nvarying vec4 fragColor;\nvarying vec2 tangent;\n\nvec2 project(vec2 position, vec2 positionFract, vec2 scale, vec2 scaleFract, vec2 translate, vec2 translateFract) {\n\t// the order is important\n\treturn position * scale + translate\n + positionFract * scale + translateFract\n + position * scaleFract\n + positionFract * scaleFract;\n}\n\nvoid main() {\n\tfloat lineStart = 1. - lineEnd;\n\tfloat lineOffset = lineTop * 2. - 1.;\n\n\tvec2 diff = (bCoord + bCoordFract - aCoord - aCoordFract);\n\ttangent = normalize(diff * scale * viewport.zw);\n\tvec2 normal = vec2(-tangent.y, tangent.x);\n\n\tvec2 position = project(aCoord, aCoordFract, scale, scaleFract, translate, translateFract) * lineStart\n\t\t+ project(bCoord, bCoordFract, scale, scaleFract, translate, translateFract) * lineEnd\n\n\t\t+ thickness * normal * .5 * lineOffset / viewport.zw;\n\n\tgl_Position = vec4(position * 2.0 - 1.0, depth, 1);\n\n\tfragColor = color / 255.;\n}\n`;\n var rectFrag = `\nprecision highp float;\n\nuniform float dashLength, pixelRatio, thickness, opacity, id;\nuniform sampler2D dashTexture;\n\nvarying vec4 fragColor;\nvarying vec2 tangent;\n\nvoid main() {\n\tfloat alpha = 1.;\n\n\tfloat t = fract(dot(tangent, gl_FragCoord.xy) / dashLength) * .5 + .25;\n\tfloat dash = texture2D(dashTexture, vec2(t, .5)).r;\n\n\tgl_FragColor = fragColor;\n\tgl_FragColor.a *= alpha * opacity * dash;\n}\n`;\n var fillVert = `\nprecision highp float;\n\nattribute vec2 position, positionFract;\n\nuniform vec4 color;\nuniform vec2 scale, scaleFract, translate, translateFract;\nuniform float pixelRatio, id;\nuniform vec4 viewport;\nuniform float opacity;\n\nvarying vec4 fragColor;\n\nconst float MAX_LINES = 256.;\n\nvoid main() {\n\tfloat depth = (MAX_LINES - 4. - id) / (MAX_LINES);\n\n\tvec2 position = position * scale + translate\n + positionFract * scale + translateFract\n + position * scaleFract\n + positionFract * scaleFract;\n\n\tgl_Position = vec4(position * 2.0 - 1.0, depth, 1);\n\n\tfragColor = color / 255.;\n\tfragColor.a *= opacity;\n}\n`;\n var fillFrag = `\nprecision highp float;\nvarying vec4 fragColor;\n\nvoid main() {\n\tgl_FragColor = fragColor;\n}\n`;\n var milterVert = `\nprecision highp float;\n\nattribute vec2 aCoord, bCoord, nextCoord, prevCoord;\nattribute vec4 aColor, bColor;\nattribute float lineEnd, lineTop;\n\nuniform vec2 scale, translate;\nuniform float thickness, pixelRatio, id, depth;\nuniform vec4 viewport;\nuniform float miterLimit, miterMode;\n\nvarying vec4 fragColor;\nvarying vec4 startCutoff, endCutoff;\nvarying vec2 tangent;\nvarying vec2 startCoord, endCoord;\nvarying float enableStartMiter, enableEndMiter;\n\nconst float REVERSE_THRESHOLD = -.875;\nconst float MIN_DIFF = 1e-6;\n\n// TODO: possible optimizations: avoid overcalculating all for vertices and calc just one instead\n// TODO: precalculate dot products, normalize things beforehead etc.\n// TODO: refactor to rectangular algorithm\n\nfloat distToLine(vec2 p, vec2 a, vec2 b) {\n\tvec2 diff = b - a;\n\tvec2 perp = normalize(vec2(-diff.y, diff.x));\n\treturn dot(p - a, perp);\n}\n\nbool isNaN( float val ){\n return ( val < 0.0 || 0.0 < val || val == 0.0 ) ? false : true;\n}\n\nvoid main() {\n\tvec2 aCoord = aCoord, bCoord = bCoord, prevCoord = prevCoord, nextCoord = nextCoord;\n\n vec2 adjustedScale;\n adjustedScale.x = (abs(scale.x) < MIN_DIFF) ? MIN_DIFF : scale.x;\n adjustedScale.y = (abs(scale.y) < MIN_DIFF) ? MIN_DIFF : scale.y;\n\n vec2 scaleRatio = adjustedScale * viewport.zw;\n\tvec2 normalWidth = thickness / scaleRatio;\n\n\tfloat lineStart = 1. - lineEnd;\n\tfloat lineBot = 1. - lineTop;\n\n\tfragColor = (lineStart * aColor + lineEnd * bColor) / 255.;\n\n\tif (isNaN(aCoord.x) || isNaN(aCoord.y) || isNaN(bCoord.x) || isNaN(bCoord.y)) return;\n\n\tif (aCoord == prevCoord) prevCoord = aCoord + normalize(bCoord - aCoord);\n\tif (bCoord == nextCoord) nextCoord = bCoord - normalize(bCoord - aCoord);\n\n\n\tvec2 prevDiff = aCoord - prevCoord;\n\tvec2 currDiff = bCoord - aCoord;\n\tvec2 nextDiff = nextCoord - bCoord;\n\n\tvec2 prevTangent = normalize(prevDiff * scaleRatio);\n\tvec2 currTangent = normalize(currDiff * scaleRatio);\n\tvec2 nextTangent = normalize(nextDiff * scaleRatio);\n\n\tvec2 prevNormal = vec2(-prevTangent.y, prevTangent.x);\n\tvec2 currNormal = vec2(-currTangent.y, currTangent.x);\n\tvec2 nextNormal = vec2(-nextTangent.y, nextTangent.x);\n\n\tvec2 startJoinDirection = normalize(prevTangent - currTangent);\n\tvec2 endJoinDirection = normalize(currTangent - nextTangent);\n\n\t// collapsed/unidirectional segment cases\n\t// FIXME: there should be more elegant solution\n\tvec2 prevTanDiff = abs(prevTangent - currTangent);\n\tvec2 nextTanDiff = abs(nextTangent - currTangent);\n\tif (max(prevTanDiff.x, prevTanDiff.y) < MIN_DIFF) {\n\t\tstartJoinDirection = currNormal;\n\t}\n\tif (max(nextTanDiff.x, nextTanDiff.y) < MIN_DIFF) {\n\t\tendJoinDirection = currNormal;\n\t}\n\tif (aCoord == bCoord) {\n\t\tendJoinDirection = startJoinDirection;\n\t\tcurrNormal = prevNormal;\n\t\tcurrTangent = prevTangent;\n\t}\n\n\ttangent = currTangent;\n\n\t//calculate join shifts relative to normals\n\tfloat startJoinShift = dot(currNormal, startJoinDirection);\n\tfloat endJoinShift = dot(currNormal, endJoinDirection);\n\n\tfloat startMiterRatio = abs(1. / startJoinShift);\n\tfloat endMiterRatio = abs(1. / endJoinShift);\n\n\tvec2 startJoin = startJoinDirection * startMiterRatio;\n\tvec2 endJoin = endJoinDirection * endMiterRatio;\n\n\tvec2 startTopJoin, startBotJoin, endTopJoin, endBotJoin;\n\tstartTopJoin = sign(startJoinShift) * startJoin * .5;\n\tstartBotJoin = -startTopJoin;\n\n\tendTopJoin = sign(endJoinShift) * endJoin * .5;\n\tendBotJoin = -endTopJoin;\n\n\tvec2 aTopCoord = aCoord + normalWidth * startTopJoin;\n\tvec2 bTopCoord = bCoord + normalWidth * endTopJoin;\n\tvec2 aBotCoord = aCoord + normalWidth * startBotJoin;\n\tvec2 bBotCoord = bCoord + normalWidth * endBotJoin;\n\n\t//miter anti-clipping\n\tfloat baClipping = distToLine(bCoord, aCoord, aBotCoord) / dot(normalize(normalWidth * endBotJoin), normalize(normalWidth.yx * vec2(-startBotJoin.y, startBotJoin.x)));\n\tfloat abClipping = distToLine(aCoord, bCoord, bTopCoord) / dot(normalize(normalWidth * startBotJoin), normalize(normalWidth.yx * vec2(-endBotJoin.y, endBotJoin.x)));\n\n\t//prevent close to reverse direction switch\n\tbool prevReverse = dot(currTangent, prevTangent) <= REVERSE_THRESHOLD && abs(dot(currTangent, prevNormal)) * min(length(prevDiff), length(currDiff)) < length(normalWidth * currNormal);\n\tbool nextReverse = dot(currTangent, nextTangent) <= REVERSE_THRESHOLD && abs(dot(currTangent, nextNormal)) * min(length(nextDiff), length(currDiff)) < length(normalWidth * currNormal);\n\n\tif (prevReverse) {\n\t\t//make join rectangular\n\t\tvec2 miterShift = normalWidth * startJoinDirection * miterLimit * .5;\n\t\tfloat normalAdjust = 1. - min(miterLimit / startMiterRatio, 1.);\n\t\taBotCoord = aCoord + miterShift - normalAdjust * normalWidth * currNormal * .5;\n\t\taTopCoord = aCoord + miterShift + normalAdjust * normalWidth * currNormal * .5;\n\t}\n\telse if (!nextReverse && baClipping > 0. && baClipping < length(normalWidth * endBotJoin)) {\n\t\t//handle miter clipping\n\t\tbTopCoord -= normalWidth * endTopJoin;\n\t\tbTopCoord += normalize(endTopJoin * normalWidth) * baClipping;\n\t}\n\n\tif (nextReverse) {\n\t\t//make join rectangular\n\t\tvec2 miterShift = normalWidth * endJoinDirection * miterLimit * .5;\n\t\tfloat normalAdjust = 1. - min(miterLimit / endMiterRatio, 1.);\n\t\tbBotCoord = bCoord + miterShift - normalAdjust * normalWidth * currNormal * .5;\n\t\tbTopCoord = bCoord + miterShift + normalAdjust * normalWidth * currNormal * .5;\n\t}\n\telse if (!prevReverse && abClipping > 0. && abClipping < length(normalWidth * startBotJoin)) {\n\t\t//handle miter clipping\n\t\taBotCoord -= normalWidth * startBotJoin;\n\t\taBotCoord += normalize(startBotJoin * normalWidth) * abClipping;\n\t}\n\n\tvec2 aTopPosition = (aTopCoord) * adjustedScale + translate;\n\tvec2 aBotPosition = (aBotCoord) * adjustedScale + translate;\n\n\tvec2 bTopPosition = (bTopCoord) * adjustedScale + translate;\n\tvec2 bBotPosition = (bBotCoord) * adjustedScale + translate;\n\n\t//position is normalized 0..1 coord on the screen\n\tvec2 position = (aTopPosition * lineTop + aBotPosition * lineBot) * lineStart + (bTopPosition * lineTop + bBotPosition * lineBot) * lineEnd;\n\n\tstartCoord = aCoord * scaleRatio + translate * viewport.zw + viewport.xy;\n\tendCoord = bCoord * scaleRatio + translate * viewport.zw + viewport.xy;\n\n\tgl_Position = vec4(position * 2.0 - 1.0, depth, 1);\n\n\tenableStartMiter = step(dot(currTangent, prevTangent), .5);\n\tenableEndMiter = step(dot(currTangent, nextTangent), .5);\n\n\t//bevel miter cutoffs\n\tif (miterMode == 1.) {\n\t\tif (enableStartMiter == 1.) {\n\t\t\tvec2 startMiterWidth = vec2(startJoinDirection) * thickness * miterLimit * .5;\n\t\t\tstartCutoff = vec4(aCoord, aCoord);\n\t\t\tstartCutoff.zw += vec2(-startJoinDirection.y, startJoinDirection.x) / scaleRatio;\n\t\t\tstartCutoff = startCutoff * scaleRatio.xyxy + translate.xyxy * viewport.zwzw;\n\t\t\tstartCutoff += viewport.xyxy;\n\t\t\tstartCutoff += startMiterWidth.xyxy;\n\t\t}\n\n\t\tif (enableEndMiter == 1.) {\n\t\t\tvec2 endMiterWidth = vec2(endJoinDirection) * thickness * miterLimit * .5;\n\t\t\tendCutoff = vec4(bCoord, bCoord);\n\t\t\tendCutoff.zw += vec2(-endJoinDirection.y, endJoinDirection.x) / scaleRatio;\n\t\t\tendCutoff = endCutoff * scaleRatio.xyxy + translate.xyxy * viewport.zwzw;\n\t\t\tendCutoff += viewport.xyxy;\n\t\t\tendCutoff += endMiterWidth.xyxy;\n\t\t}\n\t}\n\n\t//round miter cutoffs\n\telse if (miterMode == 2.) {\n\t\tif (enableStartMiter == 1.) {\n\t\t\tvec2 startMiterWidth = vec2(startJoinDirection) * thickness * abs(dot(startJoinDirection, currNormal)) * .5;\n\t\t\tstartCutoff = vec4(aCoord, aCoord);\n\t\t\tstartCutoff.zw += vec2(-startJoinDirection.y, startJoinDirection.x) / scaleRatio;\n\t\t\tstartCutoff = startCutoff * scaleRatio.xyxy + translate.xyxy * viewport.zwzw;\n\t\t\tstartCutoff += viewport.xyxy;\n\t\t\tstartCutoff += startMiterWidth.xyxy;\n\t\t}\n\n\t\tif (enableEndMiter == 1.) {\n\t\t\tvec2 endMiterWidth = vec2(endJoinDirection) * thickness * abs(dot(endJoinDirection, currNormal)) * .5;\n\t\t\tendCutoff = vec4(bCoord, bCoord);\n\t\t\tendCutoff.zw += vec2(-endJoinDirection.y, endJoinDirection.x) / scaleRatio;\n\t\t\tendCutoff = endCutoff * scaleRatio.xyxy + translate.xyxy * viewport.zwzw;\n\t\t\tendCutoff += viewport.xyxy;\n\t\t\tendCutoff += endMiterWidth.xyxy;\n\t\t}\n\t}\n}\n`;\n var milterFrag = `\nprecision highp float;\n\nuniform float dashLength, pixelRatio, thickness, opacity, id, miterMode;\nuniform sampler2D dashTexture;\n\nvarying vec4 fragColor;\nvarying vec2 tangent;\nvarying vec4 startCutoff, endCutoff;\nvarying vec2 startCoord, endCoord;\nvarying float enableStartMiter, enableEndMiter;\n\nfloat distToLine(vec2 p, vec2 a, vec2 b) {\n\tvec2 diff = b - a;\n\tvec2 perp = normalize(vec2(-diff.y, diff.x));\n\treturn dot(p - a, perp);\n}\n\nvoid main() {\n\tfloat alpha = 1., distToStart, distToEnd;\n\tfloat cutoff = thickness * .5;\n\n\t//bevel miter\n\tif (miterMode == 1.) {\n\t\tif (enableStartMiter == 1.) {\n\t\t\tdistToStart = distToLine(gl_FragCoord.xy, startCutoff.xy, startCutoff.zw);\n\t\t\tif (distToStart < -1.) {\n\t\t\t\tdiscard;\n\t\t\t\treturn;\n\t\t\t}\n\t\t\talpha *= min(max(distToStart + 1., 0.), 1.);\n\t\t}\n\n\t\tif (enableEndMiter == 1.) {\n\t\t\tdistToEnd = distToLine(gl_FragCoord.xy, endCutoff.xy, endCutoff.zw);\n\t\t\tif (distToEnd < -1.) {\n\t\t\t\tdiscard;\n\t\t\t\treturn;\n\t\t\t}\n\t\t\talpha *= min(max(distToEnd + 1., 0.), 1.);\n\t\t}\n\t}\n\n\t// round miter\n\telse if (miterMode == 2.) {\n\t\tif (enableStartMiter == 1.) {\n\t\t\tdistToStart = distToLine(gl_FragCoord.xy, startCutoff.xy, startCutoff.zw);\n\t\t\tif (distToStart < 0.) {\n\t\t\t\tfloat radius = length(gl_FragCoord.xy - startCoord);\n\n\t\t\t\tif(radius > cutoff + .5) {\n\t\t\t\t\tdiscard;\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\talpha -= smoothstep(cutoff - .5, cutoff + .5, radius);\n\t\t\t}\n\t\t}\n\n\t\tif (enableEndMiter == 1.) {\n\t\t\tdistToEnd = distToLine(gl_FragCoord.xy, endCutoff.xy, endCutoff.zw);\n\t\t\tif (distToEnd < 0.) {\n\t\t\t\tfloat radius = length(gl_FragCoord.xy - endCoord);\n\n\t\t\t\tif(radius > cutoff + .5) {\n\t\t\t\t\tdiscard;\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\talpha -= smoothstep(cutoff - .5, cutoff + .5, radius);\n\t\t\t}\n\t\t}\n\t}\n\n\tfloat t = fract(dot(tangent, gl_FragCoord.xy) / dashLength) * .5 + .25;\n\tfloat dash = texture2D(dashTexture, vec2(t, .5)).r;\n\n\tgl_FragColor = fragColor;\n\tgl_FragColor.a *= alpha * opacity * dash;\n}\n`;\n module.exports = Line2D;\n function Line2D(regl, options) {\n if (!(this instanceof Line2D)) return new Line2D(regl, options);\n if (typeof regl === \"function\") {\n if (!options) options = {};\n options.regl = regl;\n } else {\n options = regl;\n }\n if (options.length) options.positions = options;\n regl = options.regl;\n if (!regl.hasExtension(\"ANGLE_instanced_arrays\")) {\n throw Error(\"regl-error2d: `ANGLE_instanced_arrays` extension should be enabled\");\n }\n this.gl = regl._gl;\n this.regl = regl;\n this.passes = [];\n this.shaders = Line2D.shaders.has(regl) ? Line2D.shaders.get(regl) : Line2D.shaders.set(regl, Line2D.createShaders(regl)).get(regl);\n this.update(options);\n }\n Line2D.dashMult = 2;\n Line2D.maxPatternLength = 256;\n Line2D.precisionThreshold = 3e6;\n Line2D.maxPoints = 1e4;\n Line2D.maxLines = 2048;\n Line2D.shaders = new WeakMap2();\n Line2D.createShaders = function(regl) {\n let offsetBuffer = regl.buffer({\n usage: \"static\",\n type: \"float\",\n data: [0, 1, 0, 0, 1, 1, 1, 0]\n });\n let shaderOptions = {\n primitive: \"triangle strip\",\n instances: regl.prop(\"count\"),\n count: 4,\n offset: 0,\n uniforms: {\n miterMode: (ctx, prop) => prop.join === \"round\" ? 2 : 1,\n miterLimit: regl.prop(\"miterLimit\"),\n scale: regl.prop(\"scale\"),\n scaleFract: regl.prop(\"scaleFract\"),\n translateFract: regl.prop(\"translateFract\"),\n translate: regl.prop(\"translate\"),\n thickness: regl.prop(\"thickness\"),\n dashTexture: regl.prop(\"dashTexture\"),\n opacity: regl.prop(\"opacity\"),\n pixelRatio: regl.context(\"pixelRatio\"),\n id: regl.prop(\"id\"),\n dashLength: regl.prop(\"dashLength\"),\n viewport: (c, p) => [p.viewport.x, p.viewport.y, c.viewportWidth, c.viewportHeight],\n depth: regl.prop(\"depth\")\n },\n blend: {\n enable: true,\n color: [0, 0, 0, 0],\n equation: {\n rgb: \"add\",\n alpha: \"add\"\n },\n func: {\n srcRGB: \"src alpha\",\n dstRGB: \"one minus src alpha\",\n srcAlpha: \"one minus dst alpha\",\n dstAlpha: \"one\"\n }\n },\n depth: {\n enable: (c, p) => {\n return !p.overlay;\n }\n },\n stencil: { enable: false },\n scissor: {\n enable: true,\n box: regl.prop(\"viewport\")\n },\n viewport: regl.prop(\"viewport\")\n };\n let drawRectLine = regl(extend({\n vert: rectVert,\n frag: rectFrag,\n attributes: {\n // if point is at the end of segment\n lineEnd: {\n buffer: offsetBuffer,\n divisor: 0,\n stride: 8,\n offset: 0\n },\n // if point is at the top of segment\n lineTop: {\n buffer: offsetBuffer,\n divisor: 0,\n stride: 8,\n offset: 4\n },\n // beginning of line coordinate\n aCoord: {\n buffer: regl.prop(\"positionBuffer\"),\n stride: 8,\n offset: 8,\n divisor: 1\n },\n // end of line coordinate\n bCoord: {\n buffer: regl.prop(\"positionBuffer\"),\n stride: 8,\n offset: 16,\n divisor: 1\n },\n aCoordFract: {\n buffer: regl.prop(\"positionFractBuffer\"),\n stride: 8,\n offset: 8,\n divisor: 1\n },\n bCoordFract: {\n buffer: regl.prop(\"positionFractBuffer\"),\n stride: 8,\n offset: 16,\n divisor: 1\n },\n color: {\n buffer: regl.prop(\"colorBuffer\"),\n stride: 4,\n offset: 0,\n divisor: 1\n }\n }\n }, shaderOptions));\n let drawMiterLine;\n try {\n drawMiterLine = regl(extend({\n // culling removes polygon creasing\n cull: {\n enable: true,\n face: \"back\"\n },\n vert: milterVert,\n frag: milterFrag,\n attributes: {\n // is line end\n lineEnd: {\n buffer: offsetBuffer,\n divisor: 0,\n stride: 8,\n offset: 0\n },\n // is line top\n lineTop: {\n buffer: offsetBuffer,\n divisor: 0,\n stride: 8,\n offset: 4\n },\n // left color\n aColor: {\n buffer: regl.prop(\"colorBuffer\"),\n stride: 4,\n offset: 0,\n divisor: 1\n },\n // right color\n bColor: {\n buffer: regl.prop(\"colorBuffer\"),\n stride: 4,\n offset: 4,\n divisor: 1\n },\n prevCoord: {\n buffer: regl.prop(\"positionBuffer\"),\n stride: 8,\n offset: 0,\n divisor: 1\n },\n aCoord: {\n buffer: regl.prop(\"positionBuffer\"),\n stride: 8,\n offset: 8,\n divisor: 1\n },\n bCoord: {\n buffer: regl.prop(\"positionBuffer\"),\n stride: 8,\n offset: 16,\n divisor: 1\n },\n nextCoord: {\n buffer: regl.prop(\"positionBuffer\"),\n stride: 8,\n offset: 24,\n divisor: 1\n }\n }\n }, shaderOptions));\n } catch (e) {\n drawMiterLine = drawRectLine;\n }\n let drawFill = regl({\n primitive: \"triangle\",\n elements: (ctx, prop) => prop.triangles,\n offset: 0,\n vert: fillVert,\n frag: fillFrag,\n uniforms: {\n scale: regl.prop(\"scale\"),\n color: regl.prop(\"fill\"),\n scaleFract: regl.prop(\"scaleFract\"),\n translateFract: regl.prop(\"translateFract\"),\n translate: regl.prop(\"translate\"),\n opacity: regl.prop(\"opacity\"),\n pixelRatio: regl.context(\"pixelRatio\"),\n id: regl.prop(\"id\"),\n viewport: (ctx, prop) => [prop.viewport.x, prop.viewport.y, ctx.viewportWidth, ctx.viewportHeight]\n },\n attributes: {\n position: {\n buffer: regl.prop(\"positionBuffer\"),\n stride: 8,\n offset: 8\n },\n positionFract: {\n buffer: regl.prop(\"positionFractBuffer\"),\n stride: 8,\n offset: 8\n }\n },\n blend: shaderOptions.blend,\n depth: { enable: false },\n scissor: shaderOptions.scissor,\n stencil: shaderOptions.stencil,\n viewport: shaderOptions.viewport\n });\n return {\n fill: drawFill,\n rect: drawRectLine,\n miter: drawMiterLine\n };\n };\n Line2D.defaults = {\n dashes: null,\n join: \"miter\",\n miterLimit: 1,\n thickness: 10,\n cap: \"square\",\n color: \"black\",\n opacity: 1,\n overlay: false,\n viewport: null,\n range: null,\n close: false,\n fill: null\n };\n Line2D.prototype.render = function(...args) {\n if (args.length) {\n this.update(...args);\n }\n this.draw();\n };\n Line2D.prototype.draw = function(...args) {\n (args.length ? args : this.passes).forEach((s, i) => {\n if (s && Array.isArray(s)) return this.draw(...s);\n if (typeof s === \"number\") s = this.passes[s];\n if (!(s && s.count > 1 && s.opacity)) return;\n this.regl._refresh();\n if (s.fill && s.triangles && s.triangles.length > 2) {\n this.shaders.fill(s);\n }\n if (!s.thickness) return;\n if (s.scale[0] * s.viewport.width > Line2D.precisionThreshold || s.scale[1] * s.viewport.height > Line2D.precisionThreshold) {\n this.shaders.rect(s);\n } else if (s.join === \"rect\" || !s.join && (s.thickness <= 2 || s.count >= Line2D.maxPoints)) {\n this.shaders.rect(s);\n } else {\n this.shaders.miter(s);\n }\n });\n return this;\n };\n Line2D.prototype.update = function(options) {\n if (!options) return;\n if (options.length != null) {\n if (typeof options[0] === \"number\") options = [{ positions: options }];\n } else if (!Array.isArray(options)) options = [options];\n let { regl, gl } = this;\n options.forEach((o, i) => {\n let state = this.passes[i];\n if (o === void 0) return;\n if (o === null) {\n this.passes[i] = null;\n return;\n }\n if (typeof o[0] === \"number\") o = { positions: o };\n o = pick(o, {\n positions: \"positions points data coords\",\n thickness: \"thickness lineWidth lineWidths line-width linewidth width stroke-width strokewidth strokeWidth\",\n join: \"lineJoin linejoin join type mode\",\n miterLimit: \"miterlimit miterLimit\",\n dashes: \"dash dashes dasharray dash-array dashArray\",\n color: \"color colour stroke colors colours stroke-color strokeColor\",\n fill: \"fill fill-color fillColor\",\n opacity: \"alpha opacity\",\n overlay: \"overlay crease overlap intersect\",\n close: \"closed close closed-path closePath\",\n range: \"range dataBox\",\n viewport: \"viewport viewBox\",\n hole: \"holes hole hollow\",\n splitNull: \"splitNull\"\n });\n if (!state) {\n this.passes[i] = state = {\n id: i,\n scale: null,\n scaleFract: null,\n translate: null,\n translateFract: null,\n count: 0,\n hole: [],\n depth: 0,\n dashLength: 1,\n dashTexture: regl.texture({\n channels: 1,\n data: new Uint8Array([255]),\n width: 1,\n height: 1,\n mag: \"linear\",\n min: \"linear\"\n }),\n colorBuffer: regl.buffer({\n usage: \"dynamic\",\n type: \"uint8\",\n data: new Uint8Array()\n }),\n positionBuffer: regl.buffer({\n usage: \"dynamic\",\n type: \"float\",\n data: new Uint8Array()\n }),\n positionFractBuffer: regl.buffer({\n usage: \"dynamic\",\n type: \"float\",\n data: new Uint8Array()\n })\n };\n o = extend({}, Line2D.defaults, o);\n }\n if (o.thickness != null) state.thickness = parseFloat(o.thickness);\n if (o.opacity != null) state.opacity = parseFloat(o.opacity);\n if (o.miterLimit != null) state.miterLimit = parseFloat(o.miterLimit);\n if (o.overlay != null) {\n state.overlay = !!o.overlay;\n if (i < Line2D.maxLines) {\n state.depth = 2 * (Line2D.maxLines - 1 - i % Line2D.maxLines) / Line2D.maxLines - 1;\n }\n }\n if (o.join != null) state.join = o.join;\n if (o.hole != null) state.hole = o.hole;\n if (o.fill != null) state.fill = !o.fill ? null : rgba(o.fill, \"uint8\");\n if (o.viewport != null) state.viewport = parseRect(o.viewport);\n if (!state.viewport) {\n state.viewport = parseRect([\n gl.drawingBufferWidth,\n gl.drawingBufferHeight\n ]);\n }\n if (o.close != null) state.close = o.close;\n if (o.positions === null) o.positions = [];\n if (o.positions) {\n let positions, count;\n if (o.positions.x && o.positions.y) {\n let xPos = o.positions.x;\n let yPos = o.positions.y;\n count = state.count = Math.max(\n xPos.length,\n yPos.length\n );\n positions = new Float64Array(count * 2);\n for (let i2 = 0; i2 < count; i2++) {\n positions[i2 * 2] = xPos[i2];\n positions[i2 * 2 + 1] = yPos[i2];\n }\n } else {\n positions = flatten(o.positions, \"float64\");\n count = state.count = Math.floor(positions.length / 2);\n }\n let bounds = state.bounds = getBounds(positions, 2);\n if (state.fill) {\n let pos = [];\n let ids = {};\n let lastId = 0;\n for (let i2 = 0, ptr = 0, l = state.count; i2 < l; i2++) {\n let x = positions[i2 * 2];\n let y = positions[i2 * 2 + 1];\n if (isNaN(x) || isNaN(y) || x == null || y == null) {\n x = positions[lastId * 2];\n y = positions[lastId * 2 + 1];\n ids[i2] = lastId;\n } else {\n lastId = i2;\n }\n pos[ptr++] = x;\n pos[ptr++] = y;\n }\n if (o.splitNull) {\n if (!(state.count - 1 in ids)) ids[state.count] = state.count - 1;\n let splits = Object.keys(ids).map(Number).sort((a, b) => a - b);\n let split_triangles = [];\n let base = 0;\n let hole_base = state.hole != null ? state.hole[0] : null;\n if (hole_base != null) {\n let last_id = findIndex(splits, (e) => e >= hole_base);\n splits = splits.slice(0, last_id);\n splits.push(hole_base);\n }\n for (let i2 = 0; i2 < splits.length; i2++) {\n let seg_pos = pos.slice(base * 2, splits[i2] * 2).concat(\n hole_base ? pos.slice(hole_base * 2) : []\n );\n let hole = (state.hole || []).map((e) => e - hole_base + (splits[i2] - base));\n let triangles = triangulate(seg_pos, hole);\n triangles = triangles.map(\n (e) => e + base + (e + base < splits[i2] ? 0 : hole_base - splits[i2])\n );\n split_triangles.push(...triangles);\n base = splits[i2] + 1;\n }\n for (let i2 = 0, l = split_triangles.length; i2 < l; i2++) {\n if (ids[split_triangles[i2]] != null) split_triangles[i2] = ids[split_triangles[i2]];\n }\n state.triangles = split_triangles;\n } else {\n let triangles = triangulate(pos, state.hole || []);\n for (let i2 = 0, l = triangles.length; i2 < l; i2++) {\n if (ids[triangles[i2]] != null) triangles[i2] = ids[triangles[i2]];\n }\n state.triangles = triangles;\n }\n }\n let npos = new Float64Array(positions);\n normalize(npos, 2, bounds);\n let positionData = new Float64Array(count * 2 + 6);\n if (state.close) {\n if (positions[0] === positions[count * 2 - 2] && positions[1] === positions[count * 2 - 1]) {\n positionData[0] = npos[count * 2 - 4];\n positionData[1] = npos[count * 2 - 3];\n } else {\n positionData[0] = npos[count * 2 - 2];\n positionData[1] = npos[count * 2 - 1];\n }\n } else {\n positionData[0] = npos[0];\n positionData[1] = npos[1];\n }\n positionData.set(npos, 2);\n if (state.close) {\n if (positions[0] === positions[count * 2 - 2] && positions[1] === positions[count * 2 - 1]) {\n positionData[count * 2 + 2] = npos[2];\n positionData[count * 2 + 3] = npos[3];\n state.count -= 1;\n } else {\n positionData[count * 2 + 2] = npos[0];\n positionData[count * 2 + 3] = npos[1];\n positionData[count * 2 + 4] = npos[2];\n positionData[count * 2 + 5] = npos[3];\n }\n } else {\n positionData[count * 2 + 2] = npos[count * 2 - 2];\n positionData[count * 2 + 3] = npos[count * 2 - 1];\n positionData[count * 2 + 4] = npos[count * 2 - 2];\n positionData[count * 2 + 5] = npos[count * 2 - 1];\n }\n var float_data = float32(positionData);\n state.positionBuffer(float_data);\n var frac_data = fract32(positionData, float_data);\n state.positionFractBuffer(frac_data);\n }\n if (o.range) {\n state.range = o.range;\n } else if (!state.range) {\n state.range = state.bounds;\n }\n if ((o.range || o.positions) && state.count) {\n let bounds = state.bounds;\n let boundsW = bounds[2] - bounds[0], boundsH = bounds[3] - bounds[1];\n let rangeW = state.range[2] - state.range[0], rangeH = state.range[3] - state.range[1];\n state.scale = [\n boundsW / rangeW,\n boundsH / rangeH\n ];\n state.translate = [\n -state.range[0] / rangeW + bounds[0] / rangeW || 0,\n -state.range[1] / rangeH + bounds[1] / rangeH || 0\n ];\n state.scaleFract = fract32(state.scale);\n state.translateFract = fract32(state.translate);\n }\n if (o.dashes) {\n let dashLength = 0, dashData;\n if (!o.dashes || o.dashes.length < 2) {\n dashLength = 1;\n dashData = new Uint8Array([255, 255, 255, 255, 255, 255, 255, 255]);\n } else {\n dashLength = 0;\n for (let i2 = 0; i2 < o.dashes.length; ++i2) {\n dashLength += o.dashes[i2];\n }\n dashData = new Uint8Array(dashLength * Line2D.dashMult);\n let ptr = 0;\n let fillColor = 255;\n for (let k = 0; k < 2; k++) {\n for (let i2 = 0; i2 < o.dashes.length; ++i2) {\n for (let j = 0, l = o.dashes[i2] * Line2D.dashMult * 0.5; j < l; ++j) {\n dashData[ptr++] = fillColor;\n }\n fillColor ^= 255;\n }\n }\n }\n state.dashLength = dashLength;\n state.dashTexture({\n channels: 1,\n data: dashData,\n width: dashData.length,\n height: 1,\n mag: \"linear\",\n min: \"linear\"\n }, 0, 0);\n }\n if (o.color) {\n let count = state.count;\n let colors = o.color;\n if (!colors) colors = \"transparent\";\n let colorData = new Uint8Array(count * 4 + 4);\n if (!Array.isArray(colors) || typeof colors[0] === \"number\") {\n let c = rgba(colors, \"uint8\");\n for (let i2 = 0; i2 < count + 1; i2++) {\n colorData.set(c, i2 * 4);\n }\n } else {\n for (let i2 = 0; i2 < count; i2++) {\n let c = rgba(colors[i2], \"uint8\");\n colorData.set(c, i2 * 4);\n }\n colorData.set(rgba(colors[0], \"uint8\"), count * 4);\n }\n state.colorBuffer({\n usage: \"dynamic\",\n type: \"uint8\",\n data: colorData\n });\n }\n });\n if (options.length < this.passes.length) {\n for (let i = options.length; i < this.passes.length; i++) {\n let pass = this.passes[i];\n if (!pass) continue;\n pass.colorBuffer.destroy();\n pass.positionBuffer.destroy();\n pass.dashTexture.destroy();\n }\n this.passes.length = options.length;\n }\n let passes = [];\n for (let i = 0; i < this.passes.length; i++) {\n if (this.passes[i] !== null) passes.push(this.passes[i]);\n }\n this.passes = passes;\n return this;\n };\n Line2D.prototype.destroy = function() {\n this.passes.forEach((pass) => {\n pass.colorBuffer.destroy();\n pass.positionBuffer.destroy();\n pass.dashTexture.destroy();\n });\n this.passes.length = 0;\n return this;\n };\n }\n });\n\n // node_modules/regl-error2d/index.js\n var require_regl_error2d = __commonJS({\n \"node_modules/regl-error2d/index.js\"(exports, module) {\n \"use strict\";\n var getBounds = require_array_bounds();\n var rgba = require_color_normalize();\n var updateDiff = require_update_diff();\n var pick = require_pick_by_alias();\n var extend = require_object_assign();\n var flatten = require_flatten_vertex_data();\n var { float32, fract32 } = require_to_float32();\n module.exports = Error2D;\n var WEIGHTS = [\n //direction, lineWidth shift, capSize shift\n // x-error bar\n [1, 0, 0, 1, 0, 0],\n [1, 0, 0, -1, 0, 0],\n [-1, 0, 0, -1, 0, 0],\n [-1, 0, 0, -1, 0, 0],\n [-1, 0, 0, 1, 0, 0],\n [1, 0, 0, 1, 0, 0],\n // x-error right cap\n [1, 0, -1, 0, 0, 1],\n [1, 0, -1, 0, 0, -1],\n [1, 0, 1, 0, 0, -1],\n [1, 0, 1, 0, 0, -1],\n [1, 0, 1, 0, 0, 1],\n [1, 0, -1, 0, 0, 1],\n // x-error left cap\n [-1, 0, -1, 0, 0, 1],\n [-1, 0, -1, 0, 0, -1],\n [-1, 0, 1, 0, 0, -1],\n [-1, 0, 1, 0, 0, -1],\n [-1, 0, 1, 0, 0, 1],\n [-1, 0, -1, 0, 0, 1],\n // y-error bar\n [0, 1, 1, 0, 0, 0],\n [0, 1, -1, 0, 0, 0],\n [0, -1, -1, 0, 0, 0],\n [0, -1, -1, 0, 0, 0],\n [0, 1, 1, 0, 0, 0],\n [0, -1, 1, 0, 0, 0],\n // y-error top cap\n [0, 1, 0, -1, 1, 0],\n [0, 1, 0, -1, -1, 0],\n [0, 1, 0, 1, -1, 0],\n [0, 1, 0, 1, 1, 0],\n [0, 1, 0, -1, 1, 0],\n [0, 1, 0, 1, -1, 0],\n // y-error bottom cap\n [0, -1, 0, -1, 1, 0],\n [0, -1, 0, -1, -1, 0],\n [0, -1, 0, 1, -1, 0],\n [0, -1, 0, 1, 1, 0],\n [0, -1, 0, -1, 1, 0],\n [0, -1, 0, 1, -1, 0]\n ];\n function Error2D(regl, options) {\n if (typeof regl === \"function\") {\n if (!options) options = {};\n options.regl = regl;\n } else {\n options = regl;\n }\n if (options.length) options.positions = options;\n regl = options.regl;\n if (!regl.hasExtension(\"ANGLE_instanced_arrays\")) {\n throw Error(\"regl-error2d: `ANGLE_instanced_arrays` extension should be enabled\");\n }\n let gl = regl._gl, drawErrors, positionBuffer, positionFractBuffer, colorBuffer, errorBuffer, meshBuffer, defaults = {\n color: \"black\",\n capSize: 5,\n lineWidth: 1,\n opacity: 1,\n viewport: null,\n range: null,\n offset: 0,\n count: 0,\n bounds: null,\n positions: [],\n errors: []\n }, groups = [];\n colorBuffer = regl.buffer({\n usage: \"dynamic\",\n type: \"uint8\",\n data: new Uint8Array(0)\n });\n positionBuffer = regl.buffer({\n usage: \"dynamic\",\n type: \"float\",\n data: new Uint8Array(0)\n });\n positionFractBuffer = regl.buffer({\n usage: \"dynamic\",\n type: \"float\",\n data: new Uint8Array(0)\n });\n errorBuffer = regl.buffer({\n usage: \"dynamic\",\n type: \"float\",\n data: new Uint8Array(0)\n });\n meshBuffer = regl.buffer({\n usage: \"static\",\n type: \"float\",\n data: WEIGHTS\n });\n update(options);\n drawErrors = regl({\n vert: `\n\t\tprecision highp float;\n\n\t\tattribute vec2 position, positionFract;\n\t\tattribute vec4 error;\n\t\tattribute vec4 color;\n\n\t\tattribute vec2 direction, lineOffset, capOffset;\n\n\t\tuniform vec4 viewport;\n\t\tuniform float lineWidth, capSize;\n\t\tuniform vec2 scale, scaleFract, translate, translateFract;\n\n\t\tvarying vec4 fragColor;\n\n\t\tvoid main() {\n\t\t\tfragColor = color / 255.;\n\n\t\t\tvec2 pixelOffset = lineWidth * lineOffset + (capSize + lineWidth) * capOffset;\n\n\t\t\tvec2 dxy = -step(.5, direction.xy) * error.xz + step(direction.xy, vec2(-.5)) * error.yw;\n\n\t\t\tvec2 position = position + dxy;\n\n\t\t\tvec2 pos = (position + translate) * scale\n\t\t\t\t+ (positionFract + translateFract) * scale\n\t\t\t\t+ (position + translate) * scaleFract\n\t\t\t\t+ (positionFract + translateFract) * scaleFract;\n\n\t\t\tpos += pixelOffset / viewport.zw;\n\n\t\t\tgl_Position = vec4(pos * 2. - 1., 0, 1);\n\t\t}\n\t\t`,\n frag: `\n\t\tprecision highp float;\n\n\t\tvarying vec4 fragColor;\n\n\t\tuniform float opacity;\n\n\t\tvoid main() {\n\t\t\tgl_FragColor = fragColor;\n\t\t\tgl_FragColor.a *= opacity;\n\t\t}\n\t\t`,\n uniforms: {\n range: regl.prop(\"range\"),\n lineWidth: regl.prop(\"lineWidth\"),\n capSize: regl.prop(\"capSize\"),\n opacity: regl.prop(\"opacity\"),\n scale: regl.prop(\"scale\"),\n translate: regl.prop(\"translate\"),\n scaleFract: regl.prop(\"scaleFract\"),\n translateFract: regl.prop(\"translateFract\"),\n viewport: (ctx, prop) => [prop.viewport.x, prop.viewport.y, ctx.viewportWidth, ctx.viewportHeight]\n },\n attributes: {\n //dynamic attributes\n color: {\n buffer: colorBuffer,\n offset: (ctx, prop) => prop.offset * 4,\n divisor: 1\n },\n position: {\n buffer: positionBuffer,\n offset: (ctx, prop) => prop.offset * 8,\n divisor: 1\n },\n positionFract: {\n buffer: positionFractBuffer,\n offset: (ctx, prop) => prop.offset * 8,\n divisor: 1\n },\n error: {\n buffer: errorBuffer,\n offset: (ctx, prop) => prop.offset * 16,\n divisor: 1\n },\n //static attributes\n direction: {\n buffer: meshBuffer,\n stride: 24,\n offset: 0\n },\n lineOffset: {\n buffer: meshBuffer,\n stride: 24,\n offset: 8\n },\n capOffset: {\n buffer: meshBuffer,\n stride: 24,\n offset: 16\n }\n },\n primitive: \"triangles\",\n blend: {\n enable: true,\n color: [0, 0, 0, 0],\n equation: {\n rgb: \"add\",\n alpha: \"add\"\n },\n func: {\n srcRGB: \"src alpha\",\n dstRGB: \"one minus src alpha\",\n srcAlpha: \"one minus dst alpha\",\n dstAlpha: \"one\"\n }\n },\n depth: {\n enable: false\n },\n scissor: {\n enable: true,\n box: regl.prop(\"viewport\")\n },\n viewport: regl.prop(\"viewport\"),\n stencil: false,\n instances: regl.prop(\"count\"),\n count: WEIGHTS.length\n });\n extend(error2d, {\n update,\n draw,\n destroy,\n regl,\n gl,\n canvas: gl.canvas,\n groups\n });\n return error2d;\n function error2d(opts) {\n if (opts) {\n update(opts);\n } else if (opts === null) {\n destroy();\n }\n draw();\n }\n function draw(options2) {\n if (typeof options2 === \"number\") return drawGroup(options2);\n if (options2 && !Array.isArray(options2)) options2 = [options2];\n regl._refresh();\n groups.forEach((s, i) => {\n if (!s) return;\n if (options2) {\n if (!options2[i]) s.draw = false;\n else s.draw = true;\n }\n if (!s.draw) {\n s.draw = true;\n return;\n }\n drawGroup(i);\n });\n }\n function drawGroup(s) {\n if (typeof s === \"number\") s = groups[s];\n if (s == null) return;\n if (!(s && s.count && s.color && s.opacity && s.positions && s.positions.length > 1)) return;\n s.scaleRatio = [\n s.scale[0] * s.viewport.width,\n s.scale[1] * s.viewport.height\n ];\n drawErrors(s);\n if (s.after) s.after(s);\n }\n function update(options2) {\n if (!options2) return;\n if (options2.length != null) {\n if (typeof options2[0] === \"number\") options2 = [{ positions: options2 }];\n } else if (!Array.isArray(options2)) options2 = [options2];\n let pointCount = 0, errorCount = 0;\n error2d.groups = groups = options2.map((options3, i) => {\n let group = groups[i];\n if (!options3) return group;\n else if (typeof options3 === \"function\") options3 = { after: options3 };\n else if (typeof options3[0] === \"number\") options3 = { positions: options3 };\n options3 = pick(options3, {\n color: \"color colors fill\",\n capSize: \"capSize cap capsize cap-size\",\n lineWidth: \"lineWidth line-width width line thickness\",\n opacity: \"opacity alpha\",\n range: \"range dataBox\",\n viewport: \"viewport viewBox\",\n errors: \"errors error\",\n positions: \"positions position data points\"\n });\n if (!group) {\n groups[i] = group = {\n id: i,\n scale: null,\n translate: null,\n scaleFract: null,\n translateFract: null,\n draw: true\n };\n options3 = extend({}, defaults, options3);\n }\n updateDiff(group, options3, [{\n lineWidth: (v) => +v * 0.5,\n capSize: (v) => +v * 0.5,\n opacity: parseFloat,\n errors: (errors) => {\n errors = flatten(errors);\n errorCount += errors.length;\n return errors;\n },\n positions: (positions, state) => {\n positions = flatten(positions, \"float64\");\n state.count = Math.floor(positions.length / 2);\n state.bounds = getBounds(positions, 2);\n state.offset = pointCount;\n pointCount += state.count;\n return positions;\n }\n }, {\n color: (colors, state) => {\n let count = state.count;\n if (!colors) colors = \"transparent\";\n if (!Array.isArray(colors) || typeof colors[0] === \"number\") {\n let color = colors;\n colors = Array(count);\n for (let i2 = 0; i2 < count; i2++) {\n colors[i2] = color;\n }\n }\n if (colors.length < count) throw Error(\"Not enough colors\");\n let colorData = new Uint8Array(count * 4);\n for (let i2 = 0; i2 < count; i2++) {\n let c = rgba(colors[i2], \"uint8\");\n colorData.set(c, i2 * 4);\n }\n return colorData;\n },\n range: (range, state, options4) => {\n let bounds = state.bounds;\n if (!range) range = bounds;\n state.scale = [1 / (range[2] - range[0]), 1 / (range[3] - range[1])];\n state.translate = [-range[0], -range[1]];\n state.scaleFract = fract32(state.scale);\n state.translateFract = fract32(state.translate);\n return range;\n },\n viewport: (vp) => {\n let viewport;\n if (Array.isArray(vp)) {\n viewport = {\n x: vp[0],\n y: vp[1],\n width: vp[2] - vp[0],\n height: vp[3] - vp[1]\n };\n } else if (vp) {\n viewport = {\n x: vp.x || vp.left || 0,\n y: vp.y || vp.top || 0\n };\n if (vp.right) viewport.width = vp.right - viewport.x;\n else viewport.width = vp.w || vp.width || 0;\n if (vp.bottom) viewport.height = vp.bottom - viewport.y;\n else viewport.height = vp.h || vp.height || 0;\n } else {\n viewport = {\n x: 0,\n y: 0,\n width: gl.drawingBufferWidth,\n height: gl.drawingBufferHeight\n };\n }\n return viewport;\n }\n }]);\n return group;\n });\n if (pointCount || errorCount) {\n let len = groups.reduce((acc, group, i) => {\n return acc + (group ? group.count : 0);\n }, 0);\n let positionData = new Float64Array(len * 2);\n let colorData = new Uint8Array(len * 4);\n let errorData = new Float32Array(len * 4);\n groups.forEach((group, i) => {\n if (!group) return;\n let { positions, count, offset, color, errors } = group;\n if (!count) return;\n colorData.set(color, offset * 4);\n errorData.set(errors, offset * 4);\n positionData.set(positions, offset * 2);\n });\n var float_data = float32(positionData);\n positionBuffer(float_data);\n var frac_data = fract32(positionData, float_data);\n positionFractBuffer(frac_data);\n colorBuffer(colorData);\n errorBuffer(errorData);\n }\n }\n function destroy() {\n positionBuffer.destroy();\n positionFractBuffer.destroy();\n colorBuffer.destroy();\n errorBuffer.destroy();\n meshBuffer.destroy();\n }\n }\n }\n });\n\n // node_modules/unquote/index.js\n var require_unquote = __commonJS({\n \"node_modules/unquote/index.js\"(exports, module) {\n var reg = /[\\'\\\"]/;\n module.exports = function unquote(str) {\n if (!str) {\n return \"\";\n }\n if (reg.test(str.charAt(0))) {\n str = str.substr(1);\n }\n if (reg.test(str.charAt(str.length - 1))) {\n str = str.substr(0, str.length - 1);\n }\n return str;\n };\n }\n });\n\n // node_modules/css-global-keywords/index.json\n var require_css_global_keywords = __commonJS({\n \"node_modules/css-global-keywords/index.json\"() {\n }\n });\n\n // node_modules/css-system-font-keywords/index.json\n var require_css_system_font_keywords = __commonJS({\n \"node_modules/css-system-font-keywords/index.json\"() {\n }\n });\n\n // node_modules/css-font-weight-keywords/index.json\n var require_css_font_weight_keywords = __commonJS({\n \"node_modules/css-font-weight-keywords/index.json\"() {\n }\n });\n\n // node_modules/css-font-style-keywords/index.json\n var require_css_font_style_keywords = __commonJS({\n \"node_modules/css-font-style-keywords/index.json\"() {\n }\n });\n\n // node_modules/css-font-stretch-keywords/index.json\n var require_css_font_stretch_keywords = __commonJS({\n \"node_modules/css-font-stretch-keywords/index.json\"() {\n }\n });\n\n // node_modules/parenthesis/index.js\n var require_parenthesis = __commonJS({\n \"node_modules/parenthesis/index.js\"(exports, module) {\n \"use strict\";\n function parse(str, opts) {\n if (typeof str !== \"string\") return [str];\n var res = [str];\n if (typeof opts === \"string\" || Array.isArray(opts)) {\n opts = { brackets: opts };\n } else if (!opts) opts = {};\n var brackets = opts.brackets ? Array.isArray(opts.brackets) ? opts.brackets : [opts.brackets] : [\"{}\", \"[]\", \"()\"];\n var escape = opts.escape || \"___\";\n var flat = !!opts.flat;\n brackets.forEach(function(bracket) {\n var pRE = new RegExp([\"\\\\\", bracket[0], \"[^\\\\\", bracket[0], \"\\\\\", bracket[1], \"]*\\\\\", bracket[1]].join(\"\"));\n var ids = [];\n function replaceToken(token, idx, str2) {\n var refId = res.push(token.slice(bracket[0].length, -bracket[1].length)) - 1;\n ids.push(refId);\n return escape + refId + escape;\n }\n res.forEach(function(str2, i) {\n var prevStr;\n var a = 0;\n while (str2 != prevStr) {\n prevStr = str2;\n str2 = str2.replace(pRE, replaceToken);\n if (a++ > 1e4) throw Error(\"References have circular dependency. Please, check them.\");\n }\n res[i] = str2;\n });\n ids = ids.reverse();\n res = res.map(function(str2) {\n ids.forEach(function(id) {\n str2 = str2.replace(new RegExp(\"(\\\\\" + escape + id + \"\\\\\" + escape + \")\", \"g\"), bracket[0] + \"$1\" + bracket[1]);\n });\n return str2;\n });\n });\n var re = new RegExp(\"\\\\\" + escape + \"([0-9]+)\\\\\" + escape);\n function nest(str2, refs, escape2) {\n var res2 = [], match;\n var a = 0;\n while (match = re.exec(str2)) {\n if (a++ > 1e4) throw Error(\"Circular references in parenthesis\");\n res2.push(str2.slice(0, match.index));\n res2.push(nest(refs[match[1]], refs));\n str2 = str2.slice(match.index + match[0].length);\n }\n res2.push(str2);\n return res2;\n }\n return flat ? res : nest(res[0], res);\n }\n function stringify(arg, opts) {\n if (opts && opts.flat) {\n var escape = opts && opts.escape || \"___\";\n var str = arg[0], prevStr;\n if (!str) return \"\";\n var re = new RegExp(\"\\\\\" + escape + \"([0-9]+)\\\\\" + escape);\n var a = 0;\n while (str != prevStr) {\n if (a++ > 1e4) throw Error(\"Circular references in \" + arg);\n prevStr = str;\n str = str.replace(re, replaceRef);\n }\n return str;\n }\n return arg.reduce(function f(prev, curr) {\n if (Array.isArray(curr)) {\n curr = curr.reduce(f, \"\");\n }\n return prev + curr;\n }, \"\");\n function replaceRef(match, idx) {\n if (arg[idx] == null) throw Error(\"Reference \" + idx + \"is undefined\");\n return arg[idx];\n }\n }\n function parenthesis(arg, opts) {\n if (Array.isArray(arg)) {\n return stringify(arg, opts);\n } else {\n return parse(arg, opts);\n }\n }\n parenthesis.parse = parse;\n parenthesis.stringify = stringify;\n module.exports = parenthesis;\n }\n });\n\n // node_modules/string-split-by/index.js\n var require_string_split_by = __commonJS({\n \"node_modules/string-split-by/index.js\"(exports, module) {\n \"use strict\";\n var paren = require_parenthesis();\n module.exports = function splitBy(string, separator, o) {\n if (string == null) throw Error(\"First argument should be a string\");\n if (separator == null) throw Error(\"Separator should be a string or a RegExp\");\n if (!o) o = {};\n else if (typeof o === \"string\" || Array.isArray(o)) {\n o = { ignore: o };\n }\n if (o.escape == null) o.escape = true;\n if (o.ignore == null) o.ignore = [\"[]\", \"()\", \"{}\", \"<>\", '\"\"', \"''\", \"``\", \"\\u201C\\u201D\", \"\\xAB\\xBB\"];\n else {\n if (typeof o.ignore === \"string\") {\n o.ignore = [o.ignore];\n }\n o.ignore = o.ignore.map(function(pair) {\n if (pair.length === 1) pair = pair + pair;\n return pair;\n });\n }\n var tokens = paren.parse(string, { flat: true, brackets: o.ignore });\n var str = tokens[0];\n var parts = str.split(separator);\n if (o.escape) {\n var cleanParts = [];\n for (var i = 0; i < parts.length; i++) {\n var prev = parts[i];\n var part = parts[i + 1];\n if (prev[prev.length - 1] === \"\\\\\" && prev[prev.length - 2] !== \"\\\\\") {\n cleanParts.push(prev + separator + part);\n i++;\n } else {\n cleanParts.push(prev);\n }\n }\n parts = cleanParts;\n }\n for (var i = 0; i < parts.length; i++) {\n tokens[0] = parts[i];\n parts[i] = paren.stringify(tokens, { flat: true });\n }\n return parts;\n };\n }\n });\n\n // node_modules/css-font-size-keywords/index.json\n var require_css_font_size_keywords = __commonJS({\n \"node_modules/css-font-size-keywords/index.json\"() {\n }\n });\n\n // node_modules/css-font/lib/util.js\n var require_util2 = __commonJS({\n \"node_modules/css-font/lib/util.js\"(exports, module) {\n \"use strict\";\n var sizes = require_css_font_size_keywords();\n module.exports = {\n isSize: function isSize(value) {\n return /^[\\d\\.]/.test(value) || value.indexOf(\"/\") !== -1 || sizes.indexOf(value) !== -1;\n }\n };\n }\n });\n\n // node_modules/css-font/parse.js\n var require_parse = __commonJS({\n \"node_modules/css-font/parse.js\"(exports, module) {\n \"use strict\";\n var unquote = require_unquote();\n var globalKeywords = require_css_global_keywords();\n var systemFontKeywords = require_css_system_font_keywords();\n var fontWeightKeywords = require_css_font_weight_keywords();\n var fontStyleKeywords = require_css_font_style_keywords();\n var fontStretchKeywords = require_css_font_stretch_keywords();\n var splitBy = require_string_split_by();\n var isSize = require_util2().isSize;\n module.exports = parseFont;\n var cache = parseFont.cache = {};\n function parseFont(value) {\n if (typeof value !== \"string\") throw new Error(\"Font argument must be a string.\");\n if (cache[value]) return cache[value];\n if (value === \"\") {\n throw new Error(\"Cannot parse an empty string.\");\n }\n if (systemFontKeywords.indexOf(value) !== -1) {\n return cache[value] = { system: value };\n }\n var font = {\n style: \"normal\",\n variant: \"normal\",\n weight: \"normal\",\n stretch: \"normal\",\n lineHeight: \"normal\",\n size: \"1rem\",\n family: [\"serif\"]\n };\n var tokens = splitBy(value, /\\s+/);\n var token;\n while (token = tokens.shift()) {\n if (globalKeywords.indexOf(token) !== -1) {\n [\"style\", \"variant\", \"weight\", \"stretch\"].forEach(function(prop) {\n font[prop] = token;\n });\n return cache[value] = font;\n }\n if (fontStyleKeywords.indexOf(token) !== -1) {\n font.style = token;\n continue;\n }\n if (token === \"normal\" || token === \"small-caps\") {\n font.variant = token;\n continue;\n }\n if (fontStretchKeywords.indexOf(token) !== -1) {\n font.stretch = token;\n continue;\n }\n if (fontWeightKeywords.indexOf(token) !== -1) {\n font.weight = token;\n continue;\n }\n if (isSize(token)) {\n var parts = splitBy(token, \"/\");\n font.size = parts[0];\n if (parts[1] != null) {\n font.lineHeight = parseLineHeight(parts[1]);\n } else if (tokens[0] === \"/\") {\n tokens.shift();\n font.lineHeight = parseLineHeight(tokens.shift());\n }\n if (!tokens.length) {\n throw new Error(\"Missing required font-family.\");\n }\n font.family = splitBy(tokens.join(\" \"), /\\s*,\\s*/).map(unquote);\n return cache[value] = font;\n }\n throw new Error(\"Unknown or unsupported font token: \" + token);\n }\n throw new Error(\"Missing required font-size.\");\n }\n function parseLineHeight(value) {\n var parsed = parseFloat(value);\n if (parsed.toString() === value) {\n return parsed;\n }\n return value;\n }\n }\n });\n\n // node_modules/css-font/stringify.js\n var require_stringify = __commonJS({\n \"node_modules/css-font/stringify.js\"(exports, module) {\n \"use strict\";\n var pick = require_pick_by_alias();\n var isSize = require_util2().isSize;\n var globals = a2o(require_css_global_keywords());\n var systems = a2o(require_css_system_font_keywords());\n var weights = a2o(require_css_font_weight_keywords());\n var styles = a2o(require_css_font_style_keywords());\n var stretches = a2o(require_css_font_stretch_keywords());\n var variants = { \"normal\": 1, \"small-caps\": 1 };\n var fams = {\n \"serif\": 1,\n \"sans-serif\": 1,\n \"monospace\": 1,\n \"cursive\": 1,\n \"fantasy\": 1,\n \"system-ui\": 1\n };\n var defaults = {\n style: \"normal\",\n variant: \"normal\",\n weight: \"normal\",\n stretch: \"normal\",\n size: \"1rem\",\n lineHeight: \"normal\",\n family: \"serif\"\n };\n module.exports = function stringifyFont(o) {\n o = pick(o, {\n style: \"style fontstyle fontStyle font-style slope distinction\",\n variant: \"variant font-variant fontVariant fontvariant var capitalization\",\n weight: \"weight w font-weight fontWeight fontweight\",\n stretch: \"stretch font-stretch fontStretch fontstretch width\",\n size: \"size s font-size fontSize fontsize height em emSize\",\n lineHeight: \"lh line-height lineHeight lineheight leading\",\n family: \"font family fontFamily font-family fontfamily type typeface face\",\n system: \"system reserved default global\"\n });\n if (o.system) {\n if (o.system) verify(o.system, systems);\n return o.system;\n }\n verify(o.style, styles);\n verify(o.variant, variants);\n verify(o.weight, weights);\n verify(o.stretch, stretches);\n if (o.size == null) o.size = defaults.size;\n if (typeof o.size === \"number\") o.size += \"px\";\n if (!isSize) throw Error(\"Bad size value `\" + o.size + \"`\");\n if (!o.family) o.family = defaults.family;\n if (Array.isArray(o.family)) {\n if (!o.family.length) o.family = [defaults.family];\n o.family = o.family.map(function(f) {\n return fams[f] ? f : '\"' + f + '\"';\n }).join(\", \");\n }\n var result = [];\n result.push(o.style);\n if (o.variant !== o.style) result.push(o.variant);\n if (o.weight !== o.variant && o.weight !== o.style) result.push(o.weight);\n if (o.stretch !== o.weight && o.stretch !== o.variant && o.stretch !== o.style) result.push(o.stretch);\n result.push(o.size + (o.lineHeight == null || o.lineHeight === \"normal\" || o.lineHeight + \"\" === \"1\" ? \"\" : \"/\" + o.lineHeight));\n result.push(o.family);\n return result.filter(Boolean).join(\" \");\n };\n function verify(value, values) {\n if (value && !values[value] && !globals[value]) throw Error(\"Unknown keyword `\" + value + \"`\");\n return value;\n }\n function a2o(a) {\n var o = {};\n for (var i = 0; i < a.length; i++) {\n o[a[i]] = 1;\n }\n return o;\n }\n }\n });\n\n // node_modules/css-font/index.js\n var require_css_font = __commonJS({\n \"node_modules/css-font/index.js\"(exports, module) {\n \"use strict\";\n module.exports = {\n parse: require_parse(),\n stringify: require_stringify()\n };\n }\n });\n\n // node_modules/regl/dist/regl.unchecked.js\n var require_regl_unchecked = __commonJS({\n \"node_modules/regl/dist/regl.unchecked.js\"(exports, module) {\n (function(global2, factory) {\n typeof exports === \"object\" && typeof module !== \"undefined\" ? module.exports = factory() : typeof define === \"function\" && define.amd ? define(factory) : global2.createREGL = factory();\n })(exports, function() {\n \"use strict\";\n var extend = function(base, opts) {\n var keys = Object.keys(opts);\n for (var i = 0; i < keys.length; ++i) {\n base[keys[i]] = opts[keys[i]];\n }\n return base;\n };\n var VARIABLE_COUNTER = 0;\n var DYN_FUNC = 0;\n var DYN_CONSTANT = 5;\n var DYN_ARRAY = 6;\n function DynamicVariable(type, data) {\n this.id = VARIABLE_COUNTER++;\n this.type = type;\n this.data = data;\n }\n function escapeStr(str) {\n return str.replace(/\\\\/g, \"\\\\\\\\\").replace(/\"/g, '\\\\\"');\n }\n function splitParts(str) {\n if (str.length === 0) {\n return [];\n }\n var firstChar = str.charAt(0);\n var lastChar = str.charAt(str.length - 1);\n if (str.length > 1 && firstChar === lastChar && (firstChar === '\"' || firstChar === \"'\")) {\n return ['\"' + escapeStr(str.substr(1, str.length - 2)) + '\"'];\n }\n var parts = /\\[(false|true|null|\\d+|'[^']*'|\"[^\"]*\")\\]/.exec(str);\n if (parts) {\n return splitParts(str.substr(0, parts.index)).concat(splitParts(parts[1])).concat(splitParts(str.substr(parts.index + parts[0].length)));\n }\n var subparts = str.split(\".\");\n if (subparts.length === 1) {\n return ['\"' + escapeStr(str) + '\"'];\n }\n var result = [];\n for (var i = 0; i < subparts.length; ++i) {\n result = result.concat(splitParts(subparts[i]));\n }\n return result;\n }\n function toAccessorString(str) {\n return \"[\" + splitParts(str).join(\"][\") + \"]\";\n }\n function defineDynamic(type, data) {\n return new DynamicVariable(type, toAccessorString(data + \"\"));\n }\n function isDynamic(x) {\n return typeof x === \"function\" && !x._reglType || x instanceof DynamicVariable;\n }\n function unbox(x, path) {\n if (typeof x === \"function\") {\n return new DynamicVariable(DYN_FUNC, x);\n } else if (typeof x === \"number\" || typeof x === \"boolean\") {\n return new DynamicVariable(DYN_CONSTANT, x);\n } else if (Array.isArray(x)) {\n return new DynamicVariable(DYN_ARRAY, x.map(function(y, i) {\n return unbox(y, path + \"[\" + i + \"]\");\n }));\n } else if (x instanceof DynamicVariable) {\n return x;\n }\n }\n var dynamic = {\n DynamicVariable,\n define: defineDynamic,\n isDynamic,\n unbox,\n accessor: toAccessorString\n };\n var raf = {\n next: typeof requestAnimationFrame === \"function\" ? function(cb) {\n return requestAnimationFrame(cb);\n } : function(cb) {\n return setTimeout(cb, 16);\n },\n cancel: typeof cancelAnimationFrame === \"function\" ? function(raf2) {\n return cancelAnimationFrame(raf2);\n } : clearTimeout\n };\n var clock = typeof performance !== \"undefined\" && performance.now ? function() {\n return performance.now();\n } : function() {\n return +/* @__PURE__ */ new Date();\n };\n function createStringStore() {\n var stringIds = { \"\": 0 };\n var stringValues = [\"\"];\n return {\n id: function(str) {\n var result = stringIds[str];\n if (result) {\n return result;\n }\n result = stringIds[str] = stringValues.length;\n stringValues.push(str);\n return result;\n },\n str: function(id) {\n return stringValues[id];\n }\n };\n }\n function createCanvas(element, onDone, pixelRatio) {\n var canvas = document.createElement(\"canvas\");\n extend(canvas.style, {\n border: 0,\n margin: 0,\n padding: 0,\n top: 0,\n left: 0,\n width: \"100%\",\n height: \"100%\"\n });\n element.appendChild(canvas);\n if (element === document.body) {\n canvas.style.position = \"absolute\";\n extend(element.style, {\n margin: 0,\n padding: 0\n });\n }\n function resize() {\n var w = window.innerWidth;\n var h = window.innerHeight;\n if (element !== document.body) {\n var bounds = canvas.getBoundingClientRect();\n w = bounds.right - bounds.left;\n h = bounds.bottom - bounds.top;\n }\n canvas.width = pixelRatio * w;\n canvas.height = pixelRatio * h;\n }\n var resizeObserver;\n if (element !== document.body && typeof ResizeObserver === \"function\") {\n resizeObserver = new ResizeObserver(function() {\n setTimeout(resize);\n });\n resizeObserver.observe(element);\n } else {\n window.addEventListener(\"resize\", resize, false);\n }\n function onDestroy() {\n if (resizeObserver) {\n resizeObserver.disconnect();\n } else {\n window.removeEventListener(\"resize\", resize);\n }\n element.removeChild(canvas);\n }\n resize();\n return {\n canvas,\n onDestroy\n };\n }\n function createContext(canvas, contextAttributes) {\n function get(name) {\n try {\n return canvas.getContext(name, contextAttributes);\n } catch (e) {\n return null;\n }\n }\n return get(\"webgl\") || get(\"experimental-webgl\") || get(\"webgl-experimental\");\n }\n function isHTMLElement(obj) {\n return typeof obj.nodeName === \"string\" && typeof obj.appendChild === \"function\" && typeof obj.getBoundingClientRect === \"function\";\n }\n function isWebGLContext(obj) {\n return typeof obj.drawArrays === \"function\" || typeof obj.drawElements === \"function\";\n }\n function parseExtensions(input) {\n if (typeof input === \"string\") {\n return input.split();\n }\n return input;\n }\n function getElement(desc) {\n if (typeof desc === \"string\") {\n return document.querySelector(desc);\n }\n return desc;\n }\n function parseArgs(args_) {\n var args = args_ || {};\n var element, container, canvas, gl;\n var contextAttributes = {};\n var extensions = [];\n var optionalExtensions = [];\n var pixelRatio = typeof window === \"undefined\" ? 1 : window.devicePixelRatio;\n var profile = false;\n var cachedCode = {};\n var onDone = function(err) {\n if (err) {\n }\n };\n var onDestroy = function() {\n };\n if (typeof args === \"string\") {\n element = document.querySelector(args);\n } else if (typeof args === \"object\") {\n if (isHTMLElement(args)) {\n element = args;\n } else if (isWebGLContext(args)) {\n gl = args;\n canvas = gl.canvas;\n } else {\n if (\"gl\" in args) {\n gl = args.gl;\n } else if (\"canvas\" in args) {\n canvas = getElement(args.canvas);\n } else if (\"container\" in args) {\n container = getElement(args.container);\n }\n if (\"attributes\" in args) {\n contextAttributes = args.attributes;\n }\n if (\"extensions\" in args) {\n extensions = parseExtensions(args.extensions);\n }\n if (\"optionalExtensions\" in args) {\n optionalExtensions = parseExtensions(args.optionalExtensions);\n }\n if (\"onDone\" in args) {\n onDone = args.onDone;\n }\n if (\"profile\" in args) {\n profile = !!args.profile;\n }\n if (\"pixelRatio\" in args) {\n pixelRatio = +args.pixelRatio;\n }\n if (\"cachedCode\" in args) {\n cachedCode = args.cachedCode;\n }\n }\n } else {\n }\n if (element) {\n if (element.nodeName.toLowerCase() === \"canvas\") {\n canvas = element;\n } else {\n container = element;\n }\n }\n if (!gl) {\n if (!canvas) {\n var result = createCanvas(container || document.body, onDone, pixelRatio);\n if (!result) {\n return null;\n }\n canvas = result.canvas;\n onDestroy = result.onDestroy;\n }\n if (contextAttributes.premultipliedAlpha === void 0) contextAttributes.premultipliedAlpha = true;\n gl = createContext(canvas, contextAttributes);\n }\n if (!gl) {\n onDestroy();\n onDone(\"webgl not supported, try upgrading your browser or graphics drivers http://get.webgl.org\");\n return null;\n }\n return {\n gl,\n canvas,\n container,\n extensions,\n optionalExtensions,\n pixelRatio,\n profile,\n cachedCode,\n onDone,\n onDestroy\n };\n }\n function createExtensionCache(gl, config) {\n var extensions = {};\n function tryLoadExtension(name_) {\n var name2 = name_.toLowerCase();\n var ext;\n try {\n ext = extensions[name2] = gl.getExtension(name2);\n } catch (e) {\n }\n return !!ext;\n }\n for (var i = 0; i < config.extensions.length; ++i) {\n var name = config.extensions[i];\n if (!tryLoadExtension(name)) {\n config.onDestroy();\n config.onDone('\"' + name + '\" extension is not supported by the current WebGL context, try upgrading your system or a different browser');\n return null;\n }\n }\n config.optionalExtensions.forEach(tryLoadExtension);\n return {\n extensions,\n restore: function() {\n Object.keys(extensions).forEach(function(name2) {\n if (extensions[name2] && !tryLoadExtension(name2)) {\n throw new Error(\"(regl): error restoring extension \" + name2);\n }\n });\n }\n };\n }\n function loop(n, f) {\n var result = Array(n);\n for (var i = 0; i < n; ++i) {\n result[i] = f(i);\n }\n return result;\n }\n var GL_BYTE = 5120;\n var GL_UNSIGNED_BYTE$1 = 5121;\n var GL_SHORT = 5122;\n var GL_UNSIGNED_SHORT = 5123;\n var GL_INT = 5124;\n var GL_UNSIGNED_INT = 5125;\n var GL_FLOAT$1 = 5126;\n function nextPow16(v) {\n for (var i = 16; i <= 1 << 28; i *= 16) {\n if (v <= i) {\n return i;\n }\n }\n return 0;\n }\n function log2(v) {\n var r, shift;\n r = (v > 65535) << 4;\n v >>>= r;\n shift = (v > 255) << 3;\n v >>>= shift;\n r |= shift;\n shift = (v > 15) << 2;\n v >>>= shift;\n r |= shift;\n shift = (v > 3) << 1;\n v >>>= shift;\n r |= shift;\n return r | v >> 1;\n }\n function createPool() {\n var bufferPool = loop(8, function() {\n return [];\n });\n function alloc(n) {\n var sz = nextPow16(n);\n var bin = bufferPool[log2(sz) >> 2];\n if (bin.length > 0) {\n return bin.pop();\n }\n return new ArrayBuffer(sz);\n }\n function free(buf) {\n bufferPool[log2(buf.byteLength) >> 2].push(buf);\n }\n function allocType(type, n) {\n var result = null;\n switch (type) {\n case GL_BYTE:\n result = new Int8Array(alloc(n), 0, n);\n break;\n case GL_UNSIGNED_BYTE$1:\n result = new Uint8Array(alloc(n), 0, n);\n break;\n case GL_SHORT:\n result = new Int16Array(alloc(2 * n), 0, n);\n break;\n case GL_UNSIGNED_SHORT:\n result = new Uint16Array(alloc(2 * n), 0, n);\n break;\n case GL_INT:\n result = new Int32Array(alloc(4 * n), 0, n);\n break;\n case GL_UNSIGNED_INT:\n result = new Uint32Array(alloc(4 * n), 0, n);\n break;\n case GL_FLOAT$1:\n result = new Float32Array(alloc(4 * n), 0, n);\n break;\n default:\n return null;\n }\n if (result.length !== n) {\n return result.subarray(0, n);\n }\n return result;\n }\n function freeType(array) {\n free(array.buffer);\n }\n return {\n alloc,\n free,\n allocType,\n freeType\n };\n }\n var pool = createPool();\n pool.zero = createPool();\n var GL_SUBPIXEL_BITS = 3408;\n var GL_RED_BITS = 3410;\n var GL_GREEN_BITS = 3411;\n var GL_BLUE_BITS = 3412;\n var GL_ALPHA_BITS = 3413;\n var GL_DEPTH_BITS = 3414;\n var GL_STENCIL_BITS = 3415;\n var GL_ALIASED_POINT_SIZE_RANGE = 33901;\n var GL_ALIASED_LINE_WIDTH_RANGE = 33902;\n var GL_MAX_TEXTURE_SIZE = 3379;\n var GL_MAX_VIEWPORT_DIMS = 3386;\n var GL_MAX_VERTEX_ATTRIBS = 34921;\n var GL_MAX_VERTEX_UNIFORM_VECTORS = 36347;\n var GL_MAX_VARYING_VECTORS = 36348;\n var GL_MAX_COMBINED_TEXTURE_IMAGE_UNITS = 35661;\n var GL_MAX_VERTEX_TEXTURE_IMAGE_UNITS = 35660;\n var GL_MAX_TEXTURE_IMAGE_UNITS = 34930;\n var GL_MAX_FRAGMENT_UNIFORM_VECTORS = 36349;\n var GL_MAX_CUBE_MAP_TEXTURE_SIZE = 34076;\n var GL_MAX_RENDERBUFFER_SIZE = 34024;\n var GL_VENDOR = 7936;\n var GL_RENDERER = 7937;\n var GL_VERSION = 7938;\n var GL_SHADING_LANGUAGE_VERSION = 35724;\n var GL_MAX_TEXTURE_MAX_ANISOTROPY_EXT = 34047;\n var GL_MAX_COLOR_ATTACHMENTS_WEBGL = 36063;\n var GL_MAX_DRAW_BUFFERS_WEBGL = 34852;\n var GL_TEXTURE_2D = 3553;\n var GL_TEXTURE_CUBE_MAP = 34067;\n var GL_TEXTURE_CUBE_MAP_POSITIVE_X = 34069;\n var GL_TEXTURE0 = 33984;\n var GL_RGBA = 6408;\n var GL_FLOAT = 5126;\n var GL_UNSIGNED_BYTE = 5121;\n var GL_FRAMEBUFFER = 36160;\n var GL_FRAMEBUFFER_COMPLETE = 36053;\n var GL_COLOR_ATTACHMENT0 = 36064;\n var GL_COLOR_BUFFER_BIT$1 = 16384;\n var wrapLimits = function(gl, extensions) {\n var maxAnisotropic = 1;\n if (extensions.ext_texture_filter_anisotropic) {\n maxAnisotropic = gl.getParameter(GL_MAX_TEXTURE_MAX_ANISOTROPY_EXT);\n }\n var maxDrawbuffers = 1;\n var maxColorAttachments = 1;\n if (extensions.webgl_draw_buffers) {\n maxDrawbuffers = gl.getParameter(GL_MAX_DRAW_BUFFERS_WEBGL);\n maxColorAttachments = gl.getParameter(GL_MAX_COLOR_ATTACHMENTS_WEBGL);\n }\n var readFloat = !!extensions.oes_texture_float;\n if (readFloat) {\n var readFloatTexture = gl.createTexture();\n gl.bindTexture(GL_TEXTURE_2D, readFloatTexture);\n gl.texImage2D(GL_TEXTURE_2D, 0, GL_RGBA, 1, 1, 0, GL_RGBA, GL_FLOAT, null);\n var fbo = gl.createFramebuffer();\n gl.bindFramebuffer(GL_FRAMEBUFFER, fbo);\n gl.framebufferTexture2D(GL_FRAMEBUFFER, GL_COLOR_ATTACHMENT0, GL_TEXTURE_2D, readFloatTexture, 0);\n gl.bindTexture(GL_TEXTURE_2D, null);\n if (gl.checkFramebufferStatus(GL_FRAMEBUFFER) !== GL_FRAMEBUFFER_COMPLETE) readFloat = false;\n else {\n gl.viewport(0, 0, 1, 1);\n gl.clearColor(1, 0, 0, 1);\n gl.clear(GL_COLOR_BUFFER_BIT$1);\n var pixels = pool.allocType(GL_FLOAT, 4);\n gl.readPixels(0, 0, 1, 1, GL_RGBA, GL_FLOAT, pixels);\n if (gl.getError()) readFloat = false;\n else {\n gl.deleteFramebuffer(fbo);\n gl.deleteTexture(readFloatTexture);\n readFloat = pixels[0] === 1;\n }\n pool.freeType(pixels);\n }\n }\n var isIE = typeof navigator !== \"undefined\" && (/MSIE/.test(navigator.userAgent) || /Trident\\//.test(navigator.appVersion) || /Edge/.test(navigator.userAgent));\n var npotTextureCube = true;\n if (!isIE) {\n var cubeTexture = gl.createTexture();\n var data = pool.allocType(GL_UNSIGNED_BYTE, 36);\n gl.activeTexture(GL_TEXTURE0);\n gl.bindTexture(GL_TEXTURE_CUBE_MAP, cubeTexture);\n gl.texImage2D(GL_TEXTURE_CUBE_MAP_POSITIVE_X, 0, GL_RGBA, 3, 3, 0, GL_RGBA, GL_UNSIGNED_BYTE, data);\n pool.freeType(data);\n gl.bindTexture(GL_TEXTURE_CUBE_MAP, null);\n gl.deleteTexture(cubeTexture);\n npotTextureCube = !gl.getError();\n }\n return {\n // drawing buffer bit depth\n colorBits: [\n gl.getParameter(GL_RED_BITS),\n gl.getParameter(GL_GREEN_BITS),\n gl.getParameter(GL_BLUE_BITS),\n gl.getParameter(GL_ALPHA_BITS)\n ],\n depthBits: gl.getParameter(GL_DEPTH_BITS),\n stencilBits: gl.getParameter(GL_STENCIL_BITS),\n subpixelBits: gl.getParameter(GL_SUBPIXEL_BITS),\n // supported extensions\n extensions: Object.keys(extensions).filter(function(ext) {\n return !!extensions[ext];\n }),\n // max aniso samples\n maxAnisotropic,\n // max draw buffers\n maxDrawbuffers,\n maxColorAttachments,\n // point and line size ranges\n pointSizeDims: gl.getParameter(GL_ALIASED_POINT_SIZE_RANGE),\n lineWidthDims: gl.getParameter(GL_ALIASED_LINE_WIDTH_RANGE),\n maxViewportDims: gl.getParameter(GL_MAX_VIEWPORT_DIMS),\n maxCombinedTextureUnits: gl.getParameter(GL_MAX_COMBINED_TEXTURE_IMAGE_UNITS),\n maxCubeMapSize: gl.getParameter(GL_MAX_CUBE_MAP_TEXTURE_SIZE),\n maxRenderbufferSize: gl.getParameter(GL_MAX_RENDERBUFFER_SIZE),\n maxTextureUnits: gl.getParameter(GL_MAX_TEXTURE_IMAGE_UNITS),\n maxTextureSize: gl.getParameter(GL_MAX_TEXTURE_SIZE),\n maxAttributes: gl.getParameter(GL_MAX_VERTEX_ATTRIBS),\n maxVertexUniforms: gl.getParameter(GL_MAX_VERTEX_UNIFORM_VECTORS),\n maxVertexTextureUnits: gl.getParameter(GL_MAX_VERTEX_TEXTURE_IMAGE_UNITS),\n maxVaryingVectors: gl.getParameter(GL_MAX_VARYING_VECTORS),\n maxFragmentUniforms: gl.getParameter(GL_MAX_FRAGMENT_UNIFORM_VECTORS),\n // vendor info\n glsl: gl.getParameter(GL_SHADING_LANGUAGE_VERSION),\n renderer: gl.getParameter(GL_RENDERER),\n vendor: gl.getParameter(GL_VENDOR),\n version: gl.getParameter(GL_VERSION),\n // quirks\n readFloat,\n npotTextureCube\n };\n };\n var isTypedArray = function(x) {\n return x instanceof Uint8Array || x instanceof Uint16Array || x instanceof Uint32Array || x instanceof Int8Array || x instanceof Int16Array || x instanceof Int32Array || x instanceof Float32Array || x instanceof Float64Array || x instanceof Uint8ClampedArray;\n };\n function isNDArrayLike(obj) {\n return !!obj && typeof obj === \"object\" && Array.isArray(obj.shape) && Array.isArray(obj.stride) && typeof obj.offset === \"number\" && obj.shape.length === obj.stride.length && (Array.isArray(obj.data) || isTypedArray(obj.data));\n }\n var values = function(obj) {\n return Object.keys(obj).map(function(key) {\n return obj[key];\n });\n };\n var flattenUtils = {\n shape: arrayShape$1,\n flatten: flattenArray\n };\n function flatten1D(array, nx, out) {\n for (var i = 0; i < nx; ++i) {\n out[i] = array[i];\n }\n }\n function flatten2D(array, nx, ny, out) {\n var ptr = 0;\n for (var i = 0; i < nx; ++i) {\n var row = array[i];\n for (var j = 0; j < ny; ++j) {\n out[ptr++] = row[j];\n }\n }\n }\n function flatten3D(array, nx, ny, nz, out, ptr_) {\n var ptr = ptr_;\n for (var i = 0; i < nx; ++i) {\n var row = array[i];\n for (var j = 0; j < ny; ++j) {\n var col = row[j];\n for (var k = 0; k < nz; ++k) {\n out[ptr++] = col[k];\n }\n }\n }\n }\n function flattenRec(array, shape, level, out, ptr) {\n var stride = 1;\n for (var i = level + 1; i < shape.length; ++i) {\n stride *= shape[i];\n }\n var n = shape[level];\n if (shape.length - level === 4) {\n var nx = shape[level + 1];\n var ny = shape[level + 2];\n var nz = shape[level + 3];\n for (i = 0; i < n; ++i) {\n flatten3D(array[i], nx, ny, nz, out, ptr);\n ptr += stride;\n }\n } else {\n for (i = 0; i < n; ++i) {\n flattenRec(array[i], shape, level + 1, out, ptr);\n ptr += stride;\n }\n }\n }\n function flattenArray(array, shape, type, out_) {\n var sz = 1;\n if (shape.length) {\n for (var i = 0; i < shape.length; ++i) {\n sz *= shape[i];\n }\n } else {\n sz = 0;\n }\n var out = out_ || pool.allocType(type, sz);\n switch (shape.length) {\n case 0:\n break;\n case 1:\n flatten1D(array, shape[0], out);\n break;\n case 2:\n flatten2D(array, shape[0], shape[1], out);\n break;\n case 3:\n flatten3D(array, shape[0], shape[1], shape[2], out, 0);\n break;\n default:\n flattenRec(array, shape, 0, out, 0);\n }\n return out;\n }\n function arrayShape$1(array_) {\n var shape = [];\n for (var array = array_; array.length; array = array[0]) {\n shape.push(array.length);\n }\n return shape;\n }\n var arrayTypes = {\n \"[object Int8Array]\": 5120,\n \"[object Int16Array]\": 5122,\n \"[object Int32Array]\": 5124,\n \"[object Uint8Array]\": 5121,\n \"[object Uint8ClampedArray]\": 5121,\n \"[object Uint16Array]\": 5123,\n \"[object Uint32Array]\": 5125,\n \"[object Float32Array]\": 5126,\n \"[object Float64Array]\": 5121,\n \"[object ArrayBuffer]\": 5121\n };\n var int8 = 5120;\n var int16 = 5122;\n var int32 = 5124;\n var uint8 = 5121;\n var uint16 = 5123;\n var uint32 = 5125;\n var float = 5126;\n var float32 = 5126;\n var glTypes = {\n int8,\n int16,\n int32,\n uint8,\n uint16,\n uint32,\n float,\n float32\n };\n var dynamic$1 = 35048;\n var stream = 35040;\n var usageTypes = {\n dynamic: dynamic$1,\n stream,\n \"static\": 35044\n };\n var arrayFlatten = flattenUtils.flatten;\n var arrayShape = flattenUtils.shape;\n var GL_STATIC_DRAW = 35044;\n var GL_STREAM_DRAW = 35040;\n var GL_UNSIGNED_BYTE$2 = 5121;\n var GL_FLOAT$2 = 5126;\n var DTYPES_SIZES = [];\n DTYPES_SIZES[5120] = 1;\n DTYPES_SIZES[5122] = 2;\n DTYPES_SIZES[5124] = 4;\n DTYPES_SIZES[5121] = 1;\n DTYPES_SIZES[5123] = 2;\n DTYPES_SIZES[5125] = 4;\n DTYPES_SIZES[5126] = 4;\n function typedArrayCode(data) {\n return arrayTypes[Object.prototype.toString.call(data)] | 0;\n }\n function copyArray(out, inp) {\n for (var i = 0; i < inp.length; ++i) {\n out[i] = inp[i];\n }\n }\n function transpose(result, data, shapeX, shapeY, strideX, strideY, offset) {\n var ptr = 0;\n for (var i = 0; i < shapeX; ++i) {\n for (var j = 0; j < shapeY; ++j) {\n result[ptr++] = data[strideX * i + strideY * j + offset];\n }\n }\n }\n function wrapBufferState(gl, stats2, config, destroyBuffer) {\n var bufferCount = 0;\n var bufferSet = {};\n function REGLBuffer(type) {\n this.id = bufferCount++;\n this.buffer = gl.createBuffer();\n this.type = type;\n this.usage = GL_STATIC_DRAW;\n this.byteLength = 0;\n this.dimension = 1;\n this.dtype = GL_UNSIGNED_BYTE$2;\n this.persistentData = null;\n if (config.profile) {\n this.stats = { size: 0 };\n }\n }\n REGLBuffer.prototype.bind = function() {\n gl.bindBuffer(this.type, this.buffer);\n };\n REGLBuffer.prototype.destroy = function() {\n destroy(this);\n };\n var streamPool = [];\n function createStream(type, data) {\n var buffer = streamPool.pop();\n if (!buffer) {\n buffer = new REGLBuffer(type);\n }\n buffer.bind();\n initBufferFromData(buffer, data, GL_STREAM_DRAW, 0, 1, false);\n return buffer;\n }\n function destroyStream(stream$$1) {\n streamPool.push(stream$$1);\n }\n function initBufferFromTypedArray(buffer, data, usage) {\n buffer.byteLength = data.byteLength;\n gl.bufferData(buffer.type, data, usage);\n }\n function initBufferFromData(buffer, data, usage, dtype, dimension, persist) {\n var shape;\n buffer.usage = usage;\n if (Array.isArray(data)) {\n buffer.dtype = dtype || GL_FLOAT$2;\n if (data.length > 0) {\n var flatData;\n if (Array.isArray(data[0])) {\n shape = arrayShape(data);\n var dim = 1;\n for (var i = 1; i < shape.length; ++i) {\n dim *= shape[i];\n }\n buffer.dimension = dim;\n flatData = arrayFlatten(data, shape, buffer.dtype);\n initBufferFromTypedArray(buffer, flatData, usage);\n if (persist) {\n buffer.persistentData = flatData;\n } else {\n pool.freeType(flatData);\n }\n } else if (typeof data[0] === \"number\") {\n buffer.dimension = dimension;\n var typedData = pool.allocType(buffer.dtype, data.length);\n copyArray(typedData, data);\n initBufferFromTypedArray(buffer, typedData, usage);\n if (persist) {\n buffer.persistentData = typedData;\n } else {\n pool.freeType(typedData);\n }\n } else if (isTypedArray(data[0])) {\n buffer.dimension = data[0].length;\n buffer.dtype = dtype || typedArrayCode(data[0]) || GL_FLOAT$2;\n flatData = arrayFlatten(\n data,\n [data.length, data[0].length],\n buffer.dtype\n );\n initBufferFromTypedArray(buffer, flatData, usage);\n if (persist) {\n buffer.persistentData = flatData;\n } else {\n pool.freeType(flatData);\n }\n } else {\n }\n }\n } else if (isTypedArray(data)) {\n buffer.dtype = dtype || typedArrayCode(data);\n buffer.dimension = dimension;\n initBufferFromTypedArray(buffer, data, usage);\n if (persist) {\n buffer.persistentData = new Uint8Array(new Uint8Array(data.buffer));\n }\n } else if (isNDArrayLike(data)) {\n shape = data.shape;\n var stride = data.stride;\n var offset = data.offset;\n var shapeX = 0;\n var shapeY = 0;\n var strideX = 0;\n var strideY = 0;\n if (shape.length === 1) {\n shapeX = shape[0];\n shapeY = 1;\n strideX = stride[0];\n strideY = 0;\n } else if (shape.length === 2) {\n shapeX = shape[0];\n shapeY = shape[1];\n strideX = stride[0];\n strideY = stride[1];\n } else {\n }\n buffer.dtype = dtype || typedArrayCode(data.data) || GL_FLOAT$2;\n buffer.dimension = shapeY;\n var transposeData2 = pool.allocType(buffer.dtype, shapeX * shapeY);\n transpose(\n transposeData2,\n data.data,\n shapeX,\n shapeY,\n strideX,\n strideY,\n offset\n );\n initBufferFromTypedArray(buffer, transposeData2, usage);\n if (persist) {\n buffer.persistentData = transposeData2;\n } else {\n pool.freeType(transposeData2);\n }\n } else if (data instanceof ArrayBuffer) {\n buffer.dtype = GL_UNSIGNED_BYTE$2;\n buffer.dimension = dimension;\n initBufferFromTypedArray(buffer, data, usage);\n if (persist) {\n buffer.persistentData = new Uint8Array(new Uint8Array(data));\n }\n } else {\n }\n }\n function destroy(buffer) {\n stats2.bufferCount--;\n destroyBuffer(buffer);\n var handle = buffer.buffer;\n gl.deleteBuffer(handle);\n buffer.buffer = null;\n delete bufferSet[buffer.id];\n }\n function createBuffer(options, type, deferInit, persistent) {\n stats2.bufferCount++;\n var buffer = new REGLBuffer(type);\n bufferSet[buffer.id] = buffer;\n function reglBuffer(options2) {\n var usage = GL_STATIC_DRAW;\n var data = null;\n var byteLength = 0;\n var dtype = 0;\n var dimension = 1;\n if (Array.isArray(options2) || isTypedArray(options2) || isNDArrayLike(options2) || options2 instanceof ArrayBuffer) {\n data = options2;\n } else if (typeof options2 === \"number\") {\n byteLength = options2 | 0;\n } else if (options2) {\n if (\"data\" in options2) {\n data = options2.data;\n }\n if (\"usage\" in options2) {\n usage = usageTypes[options2.usage];\n }\n if (\"type\" in options2) {\n dtype = glTypes[options2.type];\n }\n if (\"dimension\" in options2) {\n dimension = options2.dimension | 0;\n }\n if (\"length\" in options2) {\n byteLength = options2.length | 0;\n }\n }\n buffer.bind();\n if (!data) {\n if (byteLength) gl.bufferData(buffer.type, byteLength, usage);\n buffer.dtype = dtype || GL_UNSIGNED_BYTE$2;\n buffer.usage = usage;\n buffer.dimension = dimension;\n buffer.byteLength = byteLength;\n } else {\n initBufferFromData(buffer, data, usage, dtype, dimension, persistent);\n }\n if (config.profile) {\n buffer.stats.size = buffer.byteLength * DTYPES_SIZES[buffer.dtype];\n }\n return reglBuffer;\n }\n function setSubData(data, offset) {\n gl.bufferSubData(buffer.type, offset, data);\n }\n function subdata(data, offset_) {\n var offset = (offset_ || 0) | 0;\n var shape;\n buffer.bind();\n if (isTypedArray(data) || data instanceof ArrayBuffer) {\n setSubData(data, offset);\n } else if (Array.isArray(data)) {\n if (data.length > 0) {\n if (typeof data[0] === \"number\") {\n var converted = pool.allocType(buffer.dtype, data.length);\n copyArray(converted, data);\n setSubData(converted, offset);\n pool.freeType(converted);\n } else if (Array.isArray(data[0]) || isTypedArray(data[0])) {\n shape = arrayShape(data);\n var flatData = arrayFlatten(data, shape, buffer.dtype);\n setSubData(flatData, offset);\n pool.freeType(flatData);\n } else {\n }\n }\n } else if (isNDArrayLike(data)) {\n shape = data.shape;\n var stride = data.stride;\n var shapeX = 0;\n var shapeY = 0;\n var strideX = 0;\n var strideY = 0;\n if (shape.length === 1) {\n shapeX = shape[0];\n shapeY = 1;\n strideX = stride[0];\n strideY = 0;\n } else if (shape.length === 2) {\n shapeX = shape[0];\n shapeY = shape[1];\n strideX = stride[0];\n strideY = stride[1];\n } else {\n }\n var dtype = Array.isArray(data.data) ? buffer.dtype : typedArrayCode(data.data);\n var transposeData2 = pool.allocType(dtype, shapeX * shapeY);\n transpose(\n transposeData2,\n data.data,\n shapeX,\n shapeY,\n strideX,\n strideY,\n data.offset\n );\n setSubData(transposeData2, offset);\n pool.freeType(transposeData2);\n } else {\n }\n return reglBuffer;\n }\n if (!deferInit) {\n reglBuffer(options);\n }\n reglBuffer._reglType = \"buffer\";\n reglBuffer._buffer = buffer;\n reglBuffer.subdata = subdata;\n if (config.profile) {\n reglBuffer.stats = buffer.stats;\n }\n reglBuffer.destroy = function() {\n destroy(buffer);\n };\n return reglBuffer;\n }\n function restoreBuffers() {\n values(bufferSet).forEach(function(buffer) {\n buffer.buffer = gl.createBuffer();\n gl.bindBuffer(buffer.type, buffer.buffer);\n gl.bufferData(\n buffer.type,\n buffer.persistentData || buffer.byteLength,\n buffer.usage\n );\n });\n }\n if (config.profile) {\n stats2.getTotalBufferSize = function() {\n var total = 0;\n Object.keys(bufferSet).forEach(function(key) {\n total += bufferSet[key].stats.size;\n });\n return total;\n };\n }\n return {\n create: createBuffer,\n createStream,\n destroyStream,\n clear: function() {\n values(bufferSet).forEach(destroy);\n streamPool.forEach(destroy);\n },\n getBuffer: function(wrapper) {\n if (wrapper && wrapper._buffer instanceof REGLBuffer) {\n return wrapper._buffer;\n }\n return null;\n },\n restore: restoreBuffers,\n _initBuffer: initBufferFromData\n };\n }\n var points = 0;\n var point = 0;\n var lines = 1;\n var line = 1;\n var triangles = 4;\n var triangle = 4;\n var primTypes = {\n points,\n point,\n lines,\n line,\n triangles,\n triangle,\n \"line loop\": 2,\n \"line strip\": 3,\n \"triangle strip\": 5,\n \"triangle fan\": 6\n };\n var GL_POINTS = 0;\n var GL_LINES = 1;\n var GL_TRIANGLES = 4;\n var GL_BYTE$1 = 5120;\n var GL_UNSIGNED_BYTE$3 = 5121;\n var GL_SHORT$1 = 5122;\n var GL_UNSIGNED_SHORT$1 = 5123;\n var GL_INT$1 = 5124;\n var GL_UNSIGNED_INT$1 = 5125;\n var GL_ELEMENT_ARRAY_BUFFER = 34963;\n var GL_STREAM_DRAW$1 = 35040;\n var GL_STATIC_DRAW$1 = 35044;\n function wrapElementsState(gl, extensions, bufferState, stats2) {\n var elementSet = {};\n var elementCount = 0;\n var elementTypes = {\n \"uint8\": GL_UNSIGNED_BYTE$3,\n \"uint16\": GL_UNSIGNED_SHORT$1\n };\n if (extensions.oes_element_index_uint) {\n elementTypes.uint32 = GL_UNSIGNED_INT$1;\n }\n function REGLElementBuffer(buffer) {\n this.id = elementCount++;\n elementSet[this.id] = this;\n this.buffer = buffer;\n this.primType = GL_TRIANGLES;\n this.vertCount = 0;\n this.type = 0;\n }\n REGLElementBuffer.prototype.bind = function() {\n this.buffer.bind();\n };\n var bufferPool = [];\n function createElementStream(data) {\n var result = bufferPool.pop();\n if (!result) {\n result = new REGLElementBuffer(bufferState.create(\n null,\n GL_ELEMENT_ARRAY_BUFFER,\n true,\n false\n )._buffer);\n }\n initElements(result, data, GL_STREAM_DRAW$1, -1, -1, 0, 0);\n return result;\n }\n function destroyElementStream(elements) {\n bufferPool.push(elements);\n }\n function initElements(elements, data, usage, prim, count, byteLength, type) {\n elements.buffer.bind();\n var dtype;\n if (data) {\n var predictedType = type;\n if (!type && (!isTypedArray(data) || isNDArrayLike(data) && !isTypedArray(data.data))) {\n predictedType = extensions.oes_element_index_uint ? GL_UNSIGNED_INT$1 : GL_UNSIGNED_SHORT$1;\n }\n bufferState._initBuffer(\n elements.buffer,\n data,\n usage,\n predictedType,\n 3\n );\n } else {\n gl.bufferData(GL_ELEMENT_ARRAY_BUFFER, byteLength, usage);\n elements.buffer.dtype = dtype || GL_UNSIGNED_BYTE$3;\n elements.buffer.usage = usage;\n elements.buffer.dimension = 3;\n elements.buffer.byteLength = byteLength;\n }\n dtype = type;\n if (!type) {\n switch (elements.buffer.dtype) {\n case GL_UNSIGNED_BYTE$3:\n case GL_BYTE$1:\n dtype = GL_UNSIGNED_BYTE$3;\n break;\n case GL_UNSIGNED_SHORT$1:\n case GL_SHORT$1:\n dtype = GL_UNSIGNED_SHORT$1;\n break;\n case GL_UNSIGNED_INT$1:\n case GL_INT$1:\n dtype = GL_UNSIGNED_INT$1;\n break;\n default:\n }\n elements.buffer.dtype = dtype;\n }\n elements.type = dtype;\n var vertCount = count;\n if (vertCount < 0) {\n vertCount = elements.buffer.byteLength;\n if (dtype === GL_UNSIGNED_SHORT$1) {\n vertCount >>= 1;\n } else if (dtype === GL_UNSIGNED_INT$1) {\n vertCount >>= 2;\n }\n }\n elements.vertCount = vertCount;\n var primType = prim;\n if (prim < 0) {\n primType = GL_TRIANGLES;\n var dimension = elements.buffer.dimension;\n if (dimension === 1) primType = GL_POINTS;\n if (dimension === 2) primType = GL_LINES;\n if (dimension === 3) primType = GL_TRIANGLES;\n }\n elements.primType = primType;\n }\n function destroyElements(elements) {\n stats2.elementsCount--;\n delete elementSet[elements.id];\n elements.buffer.destroy();\n elements.buffer = null;\n }\n function createElements(options, persistent) {\n var buffer = bufferState.create(null, GL_ELEMENT_ARRAY_BUFFER, true);\n var elements = new REGLElementBuffer(buffer._buffer);\n stats2.elementsCount++;\n function reglElements(options2) {\n if (!options2) {\n buffer();\n elements.primType = GL_TRIANGLES;\n elements.vertCount = 0;\n elements.type = GL_UNSIGNED_BYTE$3;\n } else if (typeof options2 === \"number\") {\n buffer(options2);\n elements.primType = GL_TRIANGLES;\n elements.vertCount = options2 | 0;\n elements.type = GL_UNSIGNED_BYTE$3;\n } else {\n var data = null;\n var usage = GL_STATIC_DRAW$1;\n var primType = -1;\n var vertCount = -1;\n var byteLength = 0;\n var dtype = 0;\n if (Array.isArray(options2) || isTypedArray(options2) || isNDArrayLike(options2)) {\n data = options2;\n } else {\n if (\"data\" in options2) {\n data = options2.data;\n }\n if (\"usage\" in options2) {\n usage = usageTypes[options2.usage];\n }\n if (\"primitive\" in options2) {\n primType = primTypes[options2.primitive];\n }\n if (\"count\" in options2) {\n vertCount = options2.count | 0;\n }\n if (\"type\" in options2) {\n dtype = elementTypes[options2.type];\n }\n if (\"length\" in options2) {\n byteLength = options2.length | 0;\n } else {\n byteLength = vertCount;\n if (dtype === GL_UNSIGNED_SHORT$1 || dtype === GL_SHORT$1) {\n byteLength *= 2;\n } else if (dtype === GL_UNSIGNED_INT$1 || dtype === GL_INT$1) {\n byteLength *= 4;\n }\n }\n }\n initElements(\n elements,\n data,\n usage,\n primType,\n vertCount,\n byteLength,\n dtype\n );\n }\n return reglElements;\n }\n reglElements(options);\n reglElements._reglType = \"elements\";\n reglElements._elements = elements;\n reglElements.subdata = function(data, offset) {\n buffer.subdata(data, offset);\n return reglElements;\n };\n reglElements.destroy = function() {\n destroyElements(elements);\n };\n return reglElements;\n }\n return {\n create: createElements,\n createStream: createElementStream,\n destroyStream: destroyElementStream,\n getElements: function(elements) {\n if (typeof elements === \"function\" && elements._elements instanceof REGLElementBuffer) {\n return elements._elements;\n }\n return null;\n },\n clear: function() {\n values(elementSet).forEach(destroyElements);\n }\n };\n }\n var FLOAT = new Float32Array(1);\n var INT = new Uint32Array(FLOAT.buffer);\n var GL_UNSIGNED_SHORT$3 = 5123;\n function convertToHalfFloat(array) {\n var ushorts = pool.allocType(GL_UNSIGNED_SHORT$3, array.length);\n for (var i = 0; i < array.length; ++i) {\n if (isNaN(array[i])) {\n ushorts[i] = 65535;\n } else if (array[i] === Infinity) {\n ushorts[i] = 31744;\n } else if (array[i] === -Infinity) {\n ushorts[i] = 64512;\n } else {\n FLOAT[0] = array[i];\n var x = INT[0];\n var sgn = x >>> 31 << 15;\n var exp = (x << 1 >>> 24) - 127;\n var frac = x >> 13 & (1 << 10) - 1;\n if (exp < -24) {\n ushorts[i] = sgn;\n } else if (exp < -14) {\n var s = -14 - exp;\n ushorts[i] = sgn + (frac + (1 << 10) >> s);\n } else if (exp > 15) {\n ushorts[i] = sgn + 31744;\n } else {\n ushorts[i] = sgn + (exp + 15 << 10) + frac;\n }\n }\n }\n return ushorts;\n }\n function isArrayLike(s) {\n return Array.isArray(s) || isTypedArray(s);\n }\n var GL_COMPRESSED_TEXTURE_FORMATS = 34467;\n var GL_TEXTURE_2D$1 = 3553;\n var GL_TEXTURE_CUBE_MAP$1 = 34067;\n var GL_TEXTURE_CUBE_MAP_POSITIVE_X$1 = 34069;\n var GL_RGBA$1 = 6408;\n var GL_ALPHA = 6406;\n var GL_RGB = 6407;\n var GL_LUMINANCE = 6409;\n var GL_LUMINANCE_ALPHA = 6410;\n var GL_RGBA4 = 32854;\n var GL_RGB5_A1 = 32855;\n var GL_RGB565 = 36194;\n var GL_UNSIGNED_SHORT_4_4_4_4 = 32819;\n var GL_UNSIGNED_SHORT_5_5_5_1 = 32820;\n var GL_UNSIGNED_SHORT_5_6_5 = 33635;\n var GL_UNSIGNED_INT_24_8_WEBGL = 34042;\n var GL_DEPTH_COMPONENT = 6402;\n var GL_DEPTH_STENCIL = 34041;\n var GL_SRGB_EXT = 35904;\n var GL_SRGB_ALPHA_EXT = 35906;\n var GL_HALF_FLOAT_OES = 36193;\n var GL_COMPRESSED_RGB_S3TC_DXT1_EXT = 33776;\n var GL_COMPRESSED_RGBA_S3TC_DXT1_EXT = 33777;\n var GL_COMPRESSED_RGBA_S3TC_DXT3_EXT = 33778;\n var GL_COMPRESSED_RGBA_S3TC_DXT5_EXT = 33779;\n var GL_COMPRESSED_RGB_ATC_WEBGL = 35986;\n var GL_COMPRESSED_RGBA_ATC_EXPLICIT_ALPHA_WEBGL = 35987;\n var GL_COMPRESSED_RGBA_ATC_INTERPOLATED_ALPHA_WEBGL = 34798;\n var GL_COMPRESSED_RGB_PVRTC_4BPPV1_IMG = 35840;\n var GL_COMPRESSED_RGB_PVRTC_2BPPV1_IMG = 35841;\n var GL_COMPRESSED_RGBA_PVRTC_4BPPV1_IMG = 35842;\n var GL_COMPRESSED_RGBA_PVRTC_2BPPV1_IMG = 35843;\n var GL_COMPRESSED_RGB_ETC1_WEBGL = 36196;\n var GL_UNSIGNED_BYTE$4 = 5121;\n var GL_UNSIGNED_SHORT$2 = 5123;\n var GL_UNSIGNED_INT$2 = 5125;\n var GL_FLOAT$3 = 5126;\n var GL_TEXTURE_WRAP_S = 10242;\n var GL_TEXTURE_WRAP_T = 10243;\n var GL_REPEAT = 10497;\n var GL_CLAMP_TO_EDGE = 33071;\n var GL_MIRRORED_REPEAT = 33648;\n var GL_TEXTURE_MAG_FILTER = 10240;\n var GL_TEXTURE_MIN_FILTER = 10241;\n var GL_NEAREST = 9728;\n var GL_LINEAR = 9729;\n var GL_NEAREST_MIPMAP_NEAREST = 9984;\n var GL_LINEAR_MIPMAP_NEAREST = 9985;\n var GL_NEAREST_MIPMAP_LINEAR = 9986;\n var GL_LINEAR_MIPMAP_LINEAR = 9987;\n var GL_GENERATE_MIPMAP_HINT = 33170;\n var GL_DONT_CARE = 4352;\n var GL_FASTEST = 4353;\n var GL_NICEST = 4354;\n var GL_TEXTURE_MAX_ANISOTROPY_EXT = 34046;\n var GL_UNPACK_ALIGNMENT = 3317;\n var GL_UNPACK_FLIP_Y_WEBGL = 37440;\n var GL_UNPACK_PREMULTIPLY_ALPHA_WEBGL = 37441;\n var GL_UNPACK_COLORSPACE_CONVERSION_WEBGL = 37443;\n var GL_BROWSER_DEFAULT_WEBGL = 37444;\n var GL_TEXTURE0$1 = 33984;\n var MIPMAP_FILTERS = [\n GL_NEAREST_MIPMAP_NEAREST,\n GL_NEAREST_MIPMAP_LINEAR,\n GL_LINEAR_MIPMAP_NEAREST,\n GL_LINEAR_MIPMAP_LINEAR\n ];\n var CHANNELS_FORMAT = [\n 0,\n GL_LUMINANCE,\n GL_LUMINANCE_ALPHA,\n GL_RGB,\n GL_RGBA$1\n ];\n var FORMAT_CHANNELS = {};\n FORMAT_CHANNELS[GL_LUMINANCE] = FORMAT_CHANNELS[GL_ALPHA] = FORMAT_CHANNELS[GL_DEPTH_COMPONENT] = 1;\n FORMAT_CHANNELS[GL_DEPTH_STENCIL] = FORMAT_CHANNELS[GL_LUMINANCE_ALPHA] = 2;\n FORMAT_CHANNELS[GL_RGB] = FORMAT_CHANNELS[GL_SRGB_EXT] = 3;\n FORMAT_CHANNELS[GL_RGBA$1] = FORMAT_CHANNELS[GL_SRGB_ALPHA_EXT] = 4;\n function objectName(str) {\n return \"[object \" + str + \"]\";\n }\n var CANVAS_CLASS = objectName(\"HTMLCanvasElement\");\n var OFFSCREENCANVAS_CLASS = objectName(\"OffscreenCanvas\");\n var CONTEXT2D_CLASS = objectName(\"CanvasRenderingContext2D\");\n var BITMAP_CLASS = objectName(\"ImageBitmap\");\n var IMAGE_CLASS = objectName(\"HTMLImageElement\");\n var VIDEO_CLASS = objectName(\"HTMLVideoElement\");\n var PIXEL_CLASSES = Object.keys(arrayTypes).concat([\n CANVAS_CLASS,\n OFFSCREENCANVAS_CLASS,\n CONTEXT2D_CLASS,\n BITMAP_CLASS,\n IMAGE_CLASS,\n VIDEO_CLASS\n ]);\n var TYPE_SIZES = [];\n TYPE_SIZES[GL_UNSIGNED_BYTE$4] = 1;\n TYPE_SIZES[GL_FLOAT$3] = 4;\n TYPE_SIZES[GL_HALF_FLOAT_OES] = 2;\n TYPE_SIZES[GL_UNSIGNED_SHORT$2] = 2;\n TYPE_SIZES[GL_UNSIGNED_INT$2] = 4;\n var FORMAT_SIZES_SPECIAL = [];\n FORMAT_SIZES_SPECIAL[GL_RGBA4] = 2;\n FORMAT_SIZES_SPECIAL[GL_RGB5_A1] = 2;\n FORMAT_SIZES_SPECIAL[GL_RGB565] = 2;\n FORMAT_SIZES_SPECIAL[GL_DEPTH_STENCIL] = 4;\n FORMAT_SIZES_SPECIAL[GL_COMPRESSED_RGB_S3TC_DXT1_EXT] = 0.5;\n FORMAT_SIZES_SPECIAL[GL_COMPRESSED_RGBA_S3TC_DXT1_EXT] = 0.5;\n FORMAT_SIZES_SPECIAL[GL_COMPRESSED_RGBA_S3TC_DXT3_EXT] = 1;\n FORMAT_SIZES_SPECIAL[GL_COMPRESSED_RGBA_S3TC_DXT5_EXT] = 1;\n FORMAT_SIZES_SPECIAL[GL_COMPRESSED_RGB_ATC_WEBGL] = 0.5;\n FORMAT_SIZES_SPECIAL[GL_COMPRESSED_RGBA_ATC_EXPLICIT_ALPHA_WEBGL] = 1;\n FORMAT_SIZES_SPECIAL[GL_COMPRESSED_RGBA_ATC_INTERPOLATED_ALPHA_WEBGL] = 1;\n FORMAT_SIZES_SPECIAL[GL_COMPRESSED_RGB_PVRTC_4BPPV1_IMG] = 0.5;\n FORMAT_SIZES_SPECIAL[GL_COMPRESSED_RGB_PVRTC_2BPPV1_IMG] = 0.25;\n FORMAT_SIZES_SPECIAL[GL_COMPRESSED_RGBA_PVRTC_4BPPV1_IMG] = 0.5;\n FORMAT_SIZES_SPECIAL[GL_COMPRESSED_RGBA_PVRTC_2BPPV1_IMG] = 0.25;\n FORMAT_SIZES_SPECIAL[GL_COMPRESSED_RGB_ETC1_WEBGL] = 0.5;\n function isNumericArray(arr) {\n return Array.isArray(arr) && (arr.length === 0 || typeof arr[0] === \"number\");\n }\n function isRectArray(arr) {\n if (!Array.isArray(arr)) {\n return false;\n }\n var width = arr.length;\n if (width === 0 || !isArrayLike(arr[0])) {\n return false;\n }\n return true;\n }\n function classString(x) {\n return Object.prototype.toString.call(x);\n }\n function isCanvasElement(object) {\n return classString(object) === CANVAS_CLASS;\n }\n function isOffscreenCanvas(object) {\n return classString(object) === OFFSCREENCANVAS_CLASS;\n }\n function isContext2D(object) {\n return classString(object) === CONTEXT2D_CLASS;\n }\n function isBitmap(object) {\n return classString(object) === BITMAP_CLASS;\n }\n function isImageElement(object) {\n return classString(object) === IMAGE_CLASS;\n }\n function isVideoElement(object) {\n return classString(object) === VIDEO_CLASS;\n }\n function isPixelData(object) {\n if (!object) {\n return false;\n }\n var className = classString(object);\n if (PIXEL_CLASSES.indexOf(className) >= 0) {\n return true;\n }\n return isNumericArray(object) || isRectArray(object) || isNDArrayLike(object);\n }\n function typedArrayCode$1(data) {\n return arrayTypes[Object.prototype.toString.call(data)] | 0;\n }\n function convertData(result, data) {\n var n = data.length;\n switch (result.type) {\n case GL_UNSIGNED_BYTE$4:\n case GL_UNSIGNED_SHORT$2:\n case GL_UNSIGNED_INT$2:\n case GL_FLOAT$3:\n var converted = pool.allocType(result.type, n);\n converted.set(data);\n result.data = converted;\n break;\n case GL_HALF_FLOAT_OES:\n result.data = convertToHalfFloat(data);\n break;\n default:\n }\n }\n function preConvert(image, n) {\n return pool.allocType(\n image.type === GL_HALF_FLOAT_OES ? GL_FLOAT$3 : image.type,\n n\n );\n }\n function postConvert(image, data) {\n if (image.type === GL_HALF_FLOAT_OES) {\n image.data = convertToHalfFloat(data);\n pool.freeType(data);\n } else {\n image.data = data;\n }\n }\n function transposeData(image, array, strideX, strideY, strideC, offset) {\n var w = image.width;\n var h = image.height;\n var c = image.channels;\n var n = w * h * c;\n var data = preConvert(image, n);\n var p = 0;\n for (var i = 0; i < h; ++i) {\n for (var j = 0; j < w; ++j) {\n for (var k = 0; k < c; ++k) {\n data[p++] = array[strideX * j + strideY * i + strideC * k + offset];\n }\n }\n }\n postConvert(image, data);\n }\n function getTextureSize(format, type, width, height, isMipmap, isCube) {\n var s;\n if (typeof FORMAT_SIZES_SPECIAL[format] !== \"undefined\") {\n s = FORMAT_SIZES_SPECIAL[format];\n } else {\n s = FORMAT_CHANNELS[format] * TYPE_SIZES[type];\n }\n if (isCube) {\n s *= 6;\n }\n if (isMipmap) {\n var total = 0;\n var w = width;\n while (w >= 1) {\n total += s * w * w;\n w /= 2;\n }\n return total;\n } else {\n return s * width * height;\n }\n }\n function createTextureSet(gl, extensions, limits, reglPoll, contextState, stats2, config) {\n var mipmapHint = {\n \"don't care\": GL_DONT_CARE,\n \"dont care\": GL_DONT_CARE,\n \"nice\": GL_NICEST,\n \"fast\": GL_FASTEST\n };\n var wrapModes = {\n \"repeat\": GL_REPEAT,\n \"clamp\": GL_CLAMP_TO_EDGE,\n \"mirror\": GL_MIRRORED_REPEAT\n };\n var magFilters = {\n \"nearest\": GL_NEAREST,\n \"linear\": GL_LINEAR\n };\n var minFilters = extend({\n \"mipmap\": GL_LINEAR_MIPMAP_LINEAR,\n \"nearest mipmap nearest\": GL_NEAREST_MIPMAP_NEAREST,\n \"linear mipmap nearest\": GL_LINEAR_MIPMAP_NEAREST,\n \"nearest mipmap linear\": GL_NEAREST_MIPMAP_LINEAR,\n \"linear mipmap linear\": GL_LINEAR_MIPMAP_LINEAR\n }, magFilters);\n var colorSpace = {\n \"none\": 0,\n \"browser\": GL_BROWSER_DEFAULT_WEBGL\n };\n var textureTypes = {\n \"uint8\": GL_UNSIGNED_BYTE$4,\n \"rgba4\": GL_UNSIGNED_SHORT_4_4_4_4,\n \"rgb565\": GL_UNSIGNED_SHORT_5_6_5,\n \"rgb5 a1\": GL_UNSIGNED_SHORT_5_5_5_1\n };\n var textureFormats = {\n \"alpha\": GL_ALPHA,\n \"luminance\": GL_LUMINANCE,\n \"luminance alpha\": GL_LUMINANCE_ALPHA,\n \"rgb\": GL_RGB,\n \"rgba\": GL_RGBA$1,\n \"rgba4\": GL_RGBA4,\n \"rgb5 a1\": GL_RGB5_A1,\n \"rgb565\": GL_RGB565\n };\n var compressedTextureFormats = {};\n if (extensions.ext_srgb) {\n textureFormats.srgb = GL_SRGB_EXT;\n textureFormats.srgba = GL_SRGB_ALPHA_EXT;\n }\n if (extensions.oes_texture_float) {\n textureTypes.float32 = textureTypes.float = GL_FLOAT$3;\n }\n if (extensions.oes_texture_half_float) {\n textureTypes[\"float16\"] = textureTypes[\"half float\"] = GL_HALF_FLOAT_OES;\n }\n if (extensions.webgl_depth_texture) {\n extend(textureFormats, {\n \"depth\": GL_DEPTH_COMPONENT,\n \"depth stencil\": GL_DEPTH_STENCIL\n });\n extend(textureTypes, {\n \"uint16\": GL_UNSIGNED_SHORT$2,\n \"uint32\": GL_UNSIGNED_INT$2,\n \"depth stencil\": GL_UNSIGNED_INT_24_8_WEBGL\n });\n }\n if (extensions.webgl_compressed_texture_s3tc) {\n extend(compressedTextureFormats, {\n \"rgb s3tc dxt1\": GL_COMPRESSED_RGB_S3TC_DXT1_EXT,\n \"rgba s3tc dxt1\": GL_COMPRESSED_RGBA_S3TC_DXT1_EXT,\n \"rgba s3tc dxt3\": GL_COMPRESSED_RGBA_S3TC_DXT3_EXT,\n \"rgba s3tc dxt5\": GL_COMPRESSED_RGBA_S3TC_DXT5_EXT\n });\n }\n if (extensions.webgl_compressed_texture_atc) {\n extend(compressedTextureFormats, {\n \"rgb atc\": GL_COMPRESSED_RGB_ATC_WEBGL,\n \"rgba atc explicit alpha\": GL_COMPRESSED_RGBA_ATC_EXPLICIT_ALPHA_WEBGL,\n \"rgba atc interpolated alpha\": GL_COMPRESSED_RGBA_ATC_INTERPOLATED_ALPHA_WEBGL\n });\n }\n if (extensions.webgl_compressed_texture_pvrtc) {\n extend(compressedTextureFormats, {\n \"rgb pvrtc 4bppv1\": GL_COMPRESSED_RGB_PVRTC_4BPPV1_IMG,\n \"rgb pvrtc 2bppv1\": GL_COMPRESSED_RGB_PVRTC_2BPPV1_IMG,\n \"rgba pvrtc 4bppv1\": GL_COMPRESSED_RGBA_PVRTC_4BPPV1_IMG,\n \"rgba pvrtc 2bppv1\": GL_COMPRESSED_RGBA_PVRTC_2BPPV1_IMG\n });\n }\n if (extensions.webgl_compressed_texture_etc1) {\n compressedTextureFormats[\"rgb etc1\"] = GL_COMPRESSED_RGB_ETC1_WEBGL;\n }\n var supportedCompressedFormats = Array.prototype.slice.call(\n gl.getParameter(GL_COMPRESSED_TEXTURE_FORMATS)\n );\n Object.keys(compressedTextureFormats).forEach(function(name) {\n var format = compressedTextureFormats[name];\n if (supportedCompressedFormats.indexOf(format) >= 0) {\n textureFormats[name] = format;\n }\n });\n var supportedFormats = Object.keys(textureFormats);\n limits.textureFormats = supportedFormats;\n var textureFormatsInvert = [];\n Object.keys(textureFormats).forEach(function(key) {\n var val = textureFormats[key];\n textureFormatsInvert[val] = key;\n });\n var textureTypesInvert = [];\n Object.keys(textureTypes).forEach(function(key) {\n var val = textureTypes[key];\n textureTypesInvert[val] = key;\n });\n var magFiltersInvert = [];\n Object.keys(magFilters).forEach(function(key) {\n var val = magFilters[key];\n magFiltersInvert[val] = key;\n });\n var minFiltersInvert = [];\n Object.keys(minFilters).forEach(function(key) {\n var val = minFilters[key];\n minFiltersInvert[val] = key;\n });\n var wrapModesInvert = [];\n Object.keys(wrapModes).forEach(function(key) {\n var val = wrapModes[key];\n wrapModesInvert[val] = key;\n });\n var colorFormats = supportedFormats.reduce(function(color, key) {\n var glenum = textureFormats[key];\n if (glenum === GL_LUMINANCE || glenum === GL_ALPHA || glenum === GL_LUMINANCE || glenum === GL_LUMINANCE_ALPHA || glenum === GL_DEPTH_COMPONENT || glenum === GL_DEPTH_STENCIL || extensions.ext_srgb && (glenum === GL_SRGB_EXT || glenum === GL_SRGB_ALPHA_EXT)) {\n color[glenum] = glenum;\n } else if (glenum === GL_RGB5_A1 || key.indexOf(\"rgba\") >= 0) {\n color[glenum] = GL_RGBA$1;\n } else {\n color[glenum] = GL_RGB;\n }\n return color;\n }, {});\n function TexFlags() {\n this.internalformat = GL_RGBA$1;\n this.format = GL_RGBA$1;\n this.type = GL_UNSIGNED_BYTE$4;\n this.compressed = false;\n this.premultiplyAlpha = false;\n this.flipY = false;\n this.unpackAlignment = 1;\n this.colorSpace = GL_BROWSER_DEFAULT_WEBGL;\n this.width = 0;\n this.height = 0;\n this.channels = 0;\n }\n function copyFlags(result, other) {\n result.internalformat = other.internalformat;\n result.format = other.format;\n result.type = other.type;\n result.compressed = other.compressed;\n result.premultiplyAlpha = other.premultiplyAlpha;\n result.flipY = other.flipY;\n result.unpackAlignment = other.unpackAlignment;\n result.colorSpace = other.colorSpace;\n result.width = other.width;\n result.height = other.height;\n result.channels = other.channels;\n }\n function parseFlags(flags, options) {\n if (typeof options !== \"object\" || !options) {\n return;\n }\n if (\"premultiplyAlpha\" in options) {\n flags.premultiplyAlpha = options.premultiplyAlpha;\n }\n if (\"flipY\" in options) {\n flags.flipY = options.flipY;\n }\n if (\"alignment\" in options) {\n flags.unpackAlignment = options.alignment;\n }\n if (\"colorSpace\" in options) {\n flags.colorSpace = colorSpace[options.colorSpace];\n }\n if (\"type\" in options) {\n var type = options.type;\n flags.type = textureTypes[type];\n }\n var w = flags.width;\n var h = flags.height;\n var c = flags.channels;\n var hasChannels = false;\n if (\"shape\" in options) {\n w = options.shape[0];\n h = options.shape[1];\n if (options.shape.length === 3) {\n c = options.shape[2];\n hasChannels = true;\n }\n } else {\n if (\"radius\" in options) {\n w = h = options.radius;\n }\n if (\"width\" in options) {\n w = options.width;\n }\n if (\"height\" in options) {\n h = options.height;\n }\n if (\"channels\" in options) {\n c = options.channels;\n hasChannels = true;\n }\n }\n flags.width = w | 0;\n flags.height = h | 0;\n flags.channels = c | 0;\n var hasFormat = false;\n if (\"format\" in options) {\n var formatStr = options.format;\n var internalformat = flags.internalformat = textureFormats[formatStr];\n flags.format = colorFormats[internalformat];\n if (formatStr in textureTypes) {\n if (!(\"type\" in options)) {\n flags.type = textureTypes[formatStr];\n }\n }\n if (formatStr in compressedTextureFormats) {\n flags.compressed = true;\n }\n hasFormat = true;\n }\n if (!hasChannels && hasFormat) {\n flags.channels = FORMAT_CHANNELS[flags.format];\n } else if (hasChannels && !hasFormat) {\n if (flags.channels !== CHANNELS_FORMAT[flags.format]) {\n flags.format = flags.internalformat = CHANNELS_FORMAT[flags.channels];\n }\n } else if (hasFormat && hasChannels) {\n }\n }\n function setFlags(flags) {\n gl.pixelStorei(GL_UNPACK_FLIP_Y_WEBGL, flags.flipY);\n gl.pixelStorei(GL_UNPACK_PREMULTIPLY_ALPHA_WEBGL, flags.premultiplyAlpha);\n gl.pixelStorei(GL_UNPACK_COLORSPACE_CONVERSION_WEBGL, flags.colorSpace);\n gl.pixelStorei(GL_UNPACK_ALIGNMENT, flags.unpackAlignment);\n }\n function TexImage() {\n TexFlags.call(this);\n this.xOffset = 0;\n this.yOffset = 0;\n this.data = null;\n this.needsFree = false;\n this.element = null;\n this.needsCopy = false;\n }\n function parseImage(image, options) {\n var data = null;\n if (isPixelData(options)) {\n data = options;\n } else if (options) {\n parseFlags(image, options);\n if (\"x\" in options) {\n image.xOffset = options.x | 0;\n }\n if (\"y\" in options) {\n image.yOffset = options.y | 0;\n }\n if (isPixelData(options.data)) {\n data = options.data;\n }\n }\n if (options.copy) {\n var viewW = contextState.viewportWidth;\n var viewH = contextState.viewportHeight;\n image.width = image.width || viewW - image.xOffset;\n image.height = image.height || viewH - image.yOffset;\n image.needsCopy = true;\n } else if (!data) {\n image.width = image.width || 1;\n image.height = image.height || 1;\n image.channels = image.channels || 4;\n } else if (isTypedArray(data)) {\n image.channels = image.channels || 4;\n image.data = data;\n if (!(\"type\" in options) && image.type === GL_UNSIGNED_BYTE$4) {\n image.type = typedArrayCode$1(data);\n }\n } else if (isNumericArray(data)) {\n image.channels = image.channels || 4;\n convertData(image, data);\n image.alignment = 1;\n image.needsFree = true;\n } else if (isNDArrayLike(data)) {\n var array = data.data;\n if (!Array.isArray(array) && image.type === GL_UNSIGNED_BYTE$4) {\n image.type = typedArrayCode$1(array);\n }\n var shape = data.shape;\n var stride = data.stride;\n var shapeX, shapeY, shapeC, strideX, strideY, strideC;\n if (shape.length === 3) {\n shapeC = shape[2];\n strideC = stride[2];\n } else {\n shapeC = 1;\n strideC = 1;\n }\n shapeX = shape[0];\n shapeY = shape[1];\n strideX = stride[0];\n strideY = stride[1];\n image.alignment = 1;\n image.width = shapeX;\n image.height = shapeY;\n image.channels = shapeC;\n image.format = image.internalformat = CHANNELS_FORMAT[shapeC];\n image.needsFree = true;\n transposeData(image, array, strideX, strideY, strideC, data.offset);\n } else if (isCanvasElement(data) || isOffscreenCanvas(data) || isContext2D(data)) {\n if (isCanvasElement(data) || isOffscreenCanvas(data)) {\n image.element = data;\n } else {\n image.element = data.canvas;\n }\n image.width = image.element.width;\n image.height = image.element.height;\n image.channels = 4;\n } else if (isBitmap(data)) {\n image.element = data;\n image.width = data.width;\n image.height = data.height;\n image.channels = 4;\n } else if (isImageElement(data)) {\n image.element = data;\n image.width = data.naturalWidth;\n image.height = data.naturalHeight;\n image.channels = 4;\n } else if (isVideoElement(data)) {\n image.element = data;\n image.width = data.videoWidth;\n image.height = data.videoHeight;\n image.channels = 4;\n } else if (isRectArray(data)) {\n var w = image.width || data[0].length;\n var h = image.height || data.length;\n var c = image.channels;\n if (isArrayLike(data[0][0])) {\n c = c || data[0][0].length;\n } else {\n c = c || 1;\n }\n var arrayShape2 = flattenUtils.shape(data);\n var n = 1;\n for (var dd = 0; dd < arrayShape2.length; ++dd) {\n n *= arrayShape2[dd];\n }\n var allocData = preConvert(image, n);\n flattenUtils.flatten(data, arrayShape2, \"\", allocData);\n postConvert(image, allocData);\n image.alignment = 1;\n image.width = w;\n image.height = h;\n image.channels = c;\n image.format = image.internalformat = CHANNELS_FORMAT[c];\n image.needsFree = true;\n }\n if (image.type === GL_FLOAT$3) {\n } else if (image.type === GL_HALF_FLOAT_OES) {\n }\n }\n function setImage(info, target, miplevel) {\n var element = info.element;\n var data = info.data;\n var internalformat = info.internalformat;\n var format = info.format;\n var type = info.type;\n var width = info.width;\n var height = info.height;\n setFlags(info);\n if (element) {\n gl.texImage2D(target, miplevel, format, format, type, element);\n } else if (info.compressed) {\n gl.compressedTexImage2D(target, miplevel, internalformat, width, height, 0, data);\n } else if (info.needsCopy) {\n reglPoll();\n gl.copyTexImage2D(\n target,\n miplevel,\n format,\n info.xOffset,\n info.yOffset,\n width,\n height,\n 0\n );\n } else {\n gl.texImage2D(target, miplevel, format, width, height, 0, format, type, data || null);\n }\n }\n function setSubImage(info, target, x, y, miplevel) {\n var element = info.element;\n var data = info.data;\n var internalformat = info.internalformat;\n var format = info.format;\n var type = info.type;\n var width = info.width;\n var height = info.height;\n setFlags(info);\n if (element) {\n gl.texSubImage2D(\n target,\n miplevel,\n x,\n y,\n format,\n type,\n element\n );\n } else if (info.compressed) {\n gl.compressedTexSubImage2D(\n target,\n miplevel,\n x,\n y,\n internalformat,\n width,\n height,\n data\n );\n } else if (info.needsCopy) {\n reglPoll();\n gl.copyTexSubImage2D(\n target,\n miplevel,\n x,\n y,\n info.xOffset,\n info.yOffset,\n width,\n height\n );\n } else {\n gl.texSubImage2D(\n target,\n miplevel,\n x,\n y,\n width,\n height,\n format,\n type,\n data\n );\n }\n }\n var imagePool = [];\n function allocImage() {\n return imagePool.pop() || new TexImage();\n }\n function freeImage(image) {\n if (image.needsFree) {\n pool.freeType(image.data);\n }\n TexImage.call(image);\n imagePool.push(image);\n }\n function MipMap() {\n TexFlags.call(this);\n this.genMipmaps = false;\n this.mipmapHint = GL_DONT_CARE;\n this.mipmask = 0;\n this.images = Array(16);\n }\n function parseMipMapFromShape(mipmap, width, height) {\n var img = mipmap.images[0] = allocImage();\n mipmap.mipmask = 1;\n img.width = mipmap.width = width;\n img.height = mipmap.height = height;\n img.channels = mipmap.channels = 4;\n }\n function parseMipMapFromObject(mipmap, options) {\n var imgData = null;\n if (isPixelData(options)) {\n imgData = mipmap.images[0] = allocImage();\n copyFlags(imgData, mipmap);\n parseImage(imgData, options);\n mipmap.mipmask = 1;\n } else {\n parseFlags(mipmap, options);\n if (Array.isArray(options.mipmap)) {\n var mipData = options.mipmap;\n for (var i = 0; i < mipData.length; ++i) {\n imgData = mipmap.images[i] = allocImage();\n copyFlags(imgData, mipmap);\n imgData.width >>= i;\n imgData.height >>= i;\n parseImage(imgData, mipData[i]);\n mipmap.mipmask |= 1 << i;\n }\n } else {\n imgData = mipmap.images[0] = allocImage();\n copyFlags(imgData, mipmap);\n parseImage(imgData, options);\n mipmap.mipmask = 1;\n }\n }\n copyFlags(mipmap, mipmap.images[0]);\n if (mipmap.compressed && (mipmap.internalformat === GL_COMPRESSED_RGB_S3TC_DXT1_EXT || mipmap.internalformat === GL_COMPRESSED_RGBA_S3TC_DXT1_EXT || mipmap.internalformat === GL_COMPRESSED_RGBA_S3TC_DXT3_EXT || mipmap.internalformat === GL_COMPRESSED_RGBA_S3TC_DXT5_EXT)) {\n }\n }\n function setMipMap(mipmap, target) {\n var images = mipmap.images;\n for (var i = 0; i < images.length; ++i) {\n if (!images[i]) {\n return;\n }\n setImage(images[i], target, i);\n }\n }\n var mipPool = [];\n function allocMipMap() {\n var result = mipPool.pop() || new MipMap();\n TexFlags.call(result);\n result.mipmask = 0;\n for (var i = 0; i < 16; ++i) {\n result.images[i] = null;\n }\n return result;\n }\n function freeMipMap(mipmap) {\n var images = mipmap.images;\n for (var i = 0; i < images.length; ++i) {\n if (images[i]) {\n freeImage(images[i]);\n }\n images[i] = null;\n }\n mipPool.push(mipmap);\n }\n function TexInfo() {\n this.minFilter = GL_NEAREST;\n this.magFilter = GL_NEAREST;\n this.wrapS = GL_CLAMP_TO_EDGE;\n this.wrapT = GL_CLAMP_TO_EDGE;\n this.anisotropic = 1;\n this.genMipmaps = false;\n this.mipmapHint = GL_DONT_CARE;\n }\n function parseTexInfo(info, options) {\n if (\"min\" in options) {\n var minFilter = options.min;\n info.minFilter = minFilters[minFilter];\n if (MIPMAP_FILTERS.indexOf(info.minFilter) >= 0 && !(\"faces\" in options)) {\n info.genMipmaps = true;\n }\n }\n if (\"mag\" in options) {\n var magFilter = options.mag;\n info.magFilter = magFilters[magFilter];\n }\n var wrapS = info.wrapS;\n var wrapT = info.wrapT;\n if (\"wrap\" in options) {\n var wrap = options.wrap;\n if (typeof wrap === \"string\") {\n wrapS = wrapT = wrapModes[wrap];\n } else if (Array.isArray(wrap)) {\n wrapS = wrapModes[wrap[0]];\n wrapT = wrapModes[wrap[1]];\n }\n } else {\n if (\"wrapS\" in options) {\n var optWrapS = options.wrapS;\n wrapS = wrapModes[optWrapS];\n }\n if (\"wrapT\" in options) {\n var optWrapT = options.wrapT;\n wrapT = wrapModes[optWrapT];\n }\n }\n info.wrapS = wrapS;\n info.wrapT = wrapT;\n if (\"anisotropic\" in options) {\n var anisotropic = options.anisotropic;\n info.anisotropic = options.anisotropic;\n }\n if (\"mipmap\" in options) {\n var hasMipMap = false;\n switch (typeof options.mipmap) {\n case \"string\":\n info.mipmapHint = mipmapHint[options.mipmap];\n info.genMipmaps = true;\n hasMipMap = true;\n break;\n case \"boolean\":\n hasMipMap = info.genMipmaps = options.mipmap;\n break;\n case \"object\":\n info.genMipmaps = false;\n hasMipMap = true;\n break;\n default:\n }\n if (hasMipMap && !(\"min\" in options)) {\n info.minFilter = GL_NEAREST_MIPMAP_NEAREST;\n }\n }\n }\n function setTexInfo(info, target) {\n gl.texParameteri(target, GL_TEXTURE_MIN_FILTER, info.minFilter);\n gl.texParameteri(target, GL_TEXTURE_MAG_FILTER, info.magFilter);\n gl.texParameteri(target, GL_TEXTURE_WRAP_S, info.wrapS);\n gl.texParameteri(target, GL_TEXTURE_WRAP_T, info.wrapT);\n if (extensions.ext_texture_filter_anisotropic) {\n gl.texParameteri(target, GL_TEXTURE_MAX_ANISOTROPY_EXT, info.anisotropic);\n }\n if (info.genMipmaps) {\n gl.hint(GL_GENERATE_MIPMAP_HINT, info.mipmapHint);\n gl.generateMipmap(target);\n }\n }\n var textureCount = 0;\n var textureSet = {};\n var numTexUnits = limits.maxTextureUnits;\n var textureUnits = Array(numTexUnits).map(function() {\n return null;\n });\n function REGLTexture(target) {\n TexFlags.call(this);\n this.mipmask = 0;\n this.internalformat = GL_RGBA$1;\n this.id = textureCount++;\n this.refCount = 1;\n this.target = target;\n this.texture = gl.createTexture();\n this.unit = -1;\n this.bindCount = 0;\n this.texInfo = new TexInfo();\n if (config.profile) {\n this.stats = { size: 0 };\n }\n }\n function tempBind(texture) {\n gl.activeTexture(GL_TEXTURE0$1);\n gl.bindTexture(texture.target, texture.texture);\n }\n function tempRestore() {\n var prev = textureUnits[0];\n if (prev) {\n gl.bindTexture(prev.target, prev.texture);\n } else {\n gl.bindTexture(GL_TEXTURE_2D$1, null);\n }\n }\n function destroy(texture) {\n var handle = texture.texture;\n var unit = texture.unit;\n var target = texture.target;\n if (unit >= 0) {\n gl.activeTexture(GL_TEXTURE0$1 + unit);\n gl.bindTexture(target, null);\n textureUnits[unit] = null;\n }\n gl.deleteTexture(handle);\n texture.texture = null;\n texture.params = null;\n texture.pixels = null;\n texture.refCount = 0;\n delete textureSet[texture.id];\n stats2.textureCount--;\n }\n extend(REGLTexture.prototype, {\n bind: function() {\n var texture = this;\n texture.bindCount += 1;\n var unit = texture.unit;\n if (unit < 0) {\n for (var i = 0; i < numTexUnits; ++i) {\n var other = textureUnits[i];\n if (other) {\n if (other.bindCount > 0) {\n continue;\n }\n other.unit = -1;\n }\n textureUnits[i] = texture;\n unit = i;\n break;\n }\n if (unit >= numTexUnits) {\n }\n if (config.profile && stats2.maxTextureUnits < unit + 1) {\n stats2.maxTextureUnits = unit + 1;\n }\n texture.unit = unit;\n gl.activeTexture(GL_TEXTURE0$1 + unit);\n gl.bindTexture(texture.target, texture.texture);\n }\n return unit;\n },\n unbind: function() {\n this.bindCount -= 1;\n },\n decRef: function() {\n if (--this.refCount <= 0) {\n destroy(this);\n }\n }\n });\n function createTexture2D(a, b) {\n var texture = new REGLTexture(GL_TEXTURE_2D$1);\n textureSet[texture.id] = texture;\n stats2.textureCount++;\n function reglTexture2D(a2, b2) {\n var texInfo = texture.texInfo;\n TexInfo.call(texInfo);\n var mipData = allocMipMap();\n if (typeof a2 === \"number\") {\n if (typeof b2 === \"number\") {\n parseMipMapFromShape(mipData, a2 | 0, b2 | 0);\n } else {\n parseMipMapFromShape(mipData, a2 | 0, a2 | 0);\n }\n } else if (a2) {\n parseTexInfo(texInfo, a2);\n parseMipMapFromObject(mipData, a2);\n } else {\n parseMipMapFromShape(mipData, 1, 1);\n }\n if (texInfo.genMipmaps) {\n mipData.mipmask = (mipData.width << 1) - 1;\n }\n texture.mipmask = mipData.mipmask;\n copyFlags(texture, mipData);\n texture.internalformat = mipData.internalformat;\n reglTexture2D.width = mipData.width;\n reglTexture2D.height = mipData.height;\n tempBind(texture);\n setMipMap(mipData, GL_TEXTURE_2D$1);\n setTexInfo(texInfo, GL_TEXTURE_2D$1);\n tempRestore();\n freeMipMap(mipData);\n if (config.profile) {\n texture.stats.size = getTextureSize(\n texture.internalformat,\n texture.type,\n mipData.width,\n mipData.height,\n texInfo.genMipmaps,\n false\n );\n }\n reglTexture2D.format = textureFormatsInvert[texture.internalformat];\n reglTexture2D.type = textureTypesInvert[texture.type];\n reglTexture2D.mag = magFiltersInvert[texInfo.magFilter];\n reglTexture2D.min = minFiltersInvert[texInfo.minFilter];\n reglTexture2D.wrapS = wrapModesInvert[texInfo.wrapS];\n reglTexture2D.wrapT = wrapModesInvert[texInfo.wrapT];\n return reglTexture2D;\n }\n function subimage(image, x_, y_, level_) {\n var x = x_ | 0;\n var y = y_ | 0;\n var level = level_ | 0;\n var imageData = allocImage();\n copyFlags(imageData, texture);\n imageData.width = 0;\n imageData.height = 0;\n parseImage(imageData, image);\n imageData.width = imageData.width || (texture.width >> level) - x;\n imageData.height = imageData.height || (texture.height >> level) - y;\n tempBind(texture);\n setSubImage(imageData, GL_TEXTURE_2D$1, x, y, level);\n tempRestore();\n freeImage(imageData);\n return reglTexture2D;\n }\n function resize(w_, h_) {\n var w = w_ | 0;\n var h = h_ | 0 || w;\n if (w === texture.width && h === texture.height) {\n return reglTexture2D;\n }\n reglTexture2D.width = texture.width = w;\n reglTexture2D.height = texture.height = h;\n tempBind(texture);\n for (var i = 0; texture.mipmask >> i; ++i) {\n var _w = w >> i;\n var _h = h >> i;\n if (!_w || !_h) break;\n gl.texImage2D(\n GL_TEXTURE_2D$1,\n i,\n texture.format,\n _w,\n _h,\n 0,\n texture.format,\n texture.type,\n null\n );\n }\n tempRestore();\n if (config.profile) {\n texture.stats.size = getTextureSize(\n texture.internalformat,\n texture.type,\n w,\n h,\n false,\n false\n );\n }\n return reglTexture2D;\n }\n reglTexture2D(a, b);\n reglTexture2D.subimage = subimage;\n reglTexture2D.resize = resize;\n reglTexture2D._reglType = \"texture2d\";\n reglTexture2D._texture = texture;\n if (config.profile) {\n reglTexture2D.stats = texture.stats;\n }\n reglTexture2D.destroy = function() {\n texture.decRef();\n };\n return reglTexture2D;\n }\n function createTextureCube(a0, a1, a2, a3, a4, a5) {\n var texture = new REGLTexture(GL_TEXTURE_CUBE_MAP$1);\n textureSet[texture.id] = texture;\n stats2.cubeCount++;\n var faces = new Array(6);\n function reglTextureCube(a02, a12, a22, a32, a42, a52) {\n var i;\n var texInfo = texture.texInfo;\n TexInfo.call(texInfo);\n for (i = 0; i < 6; ++i) {\n faces[i] = allocMipMap();\n }\n if (typeof a02 === \"number\" || !a02) {\n var s = a02 | 0 || 1;\n for (i = 0; i < 6; ++i) {\n parseMipMapFromShape(faces[i], s, s);\n }\n } else if (typeof a02 === \"object\") {\n if (a12) {\n parseMipMapFromObject(faces[0], a02);\n parseMipMapFromObject(faces[1], a12);\n parseMipMapFromObject(faces[2], a22);\n parseMipMapFromObject(faces[3], a32);\n parseMipMapFromObject(faces[4], a42);\n parseMipMapFromObject(faces[5], a52);\n } else {\n parseTexInfo(texInfo, a02);\n parseFlags(texture, a02);\n if (\"faces\" in a02) {\n var faceInput = a02.faces;\n for (i = 0; i < 6; ++i) {\n copyFlags(faces[i], texture);\n parseMipMapFromObject(faces[i], faceInput[i]);\n }\n } else {\n for (i = 0; i < 6; ++i) {\n parseMipMapFromObject(faces[i], a02);\n }\n }\n }\n } else {\n }\n copyFlags(texture, faces[0]);\n if (texInfo.genMipmaps) {\n texture.mipmask = (faces[0].width << 1) - 1;\n } else {\n texture.mipmask = faces[0].mipmask;\n }\n texture.internalformat = faces[0].internalformat;\n reglTextureCube.width = faces[0].width;\n reglTextureCube.height = faces[0].height;\n tempBind(texture);\n for (i = 0; i < 6; ++i) {\n setMipMap(faces[i], GL_TEXTURE_CUBE_MAP_POSITIVE_X$1 + i);\n }\n setTexInfo(texInfo, GL_TEXTURE_CUBE_MAP$1);\n tempRestore();\n if (config.profile) {\n texture.stats.size = getTextureSize(\n texture.internalformat,\n texture.type,\n reglTextureCube.width,\n reglTextureCube.height,\n texInfo.genMipmaps,\n true\n );\n }\n reglTextureCube.format = textureFormatsInvert[texture.internalformat];\n reglTextureCube.type = textureTypesInvert[texture.type];\n reglTextureCube.mag = magFiltersInvert[texInfo.magFilter];\n reglTextureCube.min = minFiltersInvert[texInfo.minFilter];\n reglTextureCube.wrapS = wrapModesInvert[texInfo.wrapS];\n reglTextureCube.wrapT = wrapModesInvert[texInfo.wrapT];\n for (i = 0; i < 6; ++i) {\n freeMipMap(faces[i]);\n }\n return reglTextureCube;\n }\n function subimage(face, image, x_, y_, level_) {\n var x = x_ | 0;\n var y = y_ | 0;\n var level = level_ | 0;\n var imageData = allocImage();\n copyFlags(imageData, texture);\n imageData.width = 0;\n imageData.height = 0;\n parseImage(imageData, image);\n imageData.width = imageData.width || (texture.width >> level) - x;\n imageData.height = imageData.height || (texture.height >> level) - y;\n tempBind(texture);\n setSubImage(imageData, GL_TEXTURE_CUBE_MAP_POSITIVE_X$1 + face, x, y, level);\n tempRestore();\n freeImage(imageData);\n return reglTextureCube;\n }\n function resize(radius_) {\n var radius = radius_ | 0;\n if (radius === texture.width) {\n return;\n }\n reglTextureCube.width = texture.width = radius;\n reglTextureCube.height = texture.height = radius;\n tempBind(texture);\n for (var i = 0; i < 6; ++i) {\n for (var j = 0; texture.mipmask >> j; ++j) {\n gl.texImage2D(\n GL_TEXTURE_CUBE_MAP_POSITIVE_X$1 + i,\n j,\n texture.format,\n radius >> j,\n radius >> j,\n 0,\n texture.format,\n texture.type,\n null\n );\n }\n }\n tempRestore();\n if (config.profile) {\n texture.stats.size = getTextureSize(\n texture.internalformat,\n texture.type,\n reglTextureCube.width,\n reglTextureCube.height,\n false,\n true\n );\n }\n return reglTextureCube;\n }\n reglTextureCube(a0, a1, a2, a3, a4, a5);\n reglTextureCube.subimage = subimage;\n reglTextureCube.resize = resize;\n reglTextureCube._reglType = \"textureCube\";\n reglTextureCube._texture = texture;\n if (config.profile) {\n reglTextureCube.stats = texture.stats;\n }\n reglTextureCube.destroy = function() {\n texture.decRef();\n };\n return reglTextureCube;\n }\n function destroyTextures() {\n for (var i = 0; i < numTexUnits; ++i) {\n gl.activeTexture(GL_TEXTURE0$1 + i);\n gl.bindTexture(GL_TEXTURE_2D$1, null);\n textureUnits[i] = null;\n }\n values(textureSet).forEach(destroy);\n stats2.cubeCount = 0;\n stats2.textureCount = 0;\n }\n if (config.profile) {\n stats2.getTotalTextureSize = function() {\n var total = 0;\n Object.keys(textureSet).forEach(function(key) {\n total += textureSet[key].stats.size;\n });\n return total;\n };\n }\n function restoreTextures() {\n for (var i = 0; i < numTexUnits; ++i) {\n var tex = textureUnits[i];\n if (tex) {\n tex.bindCount = 0;\n tex.unit = -1;\n textureUnits[i] = null;\n }\n }\n values(textureSet).forEach(function(texture) {\n texture.texture = gl.createTexture();\n gl.bindTexture(texture.target, texture.texture);\n for (var i2 = 0; i2 < 32; ++i2) {\n if ((texture.mipmask & 1 << i2) === 0) {\n continue;\n }\n if (texture.target === GL_TEXTURE_2D$1) {\n gl.texImage2D(\n GL_TEXTURE_2D$1,\n i2,\n texture.internalformat,\n texture.width >> i2,\n texture.height >> i2,\n 0,\n texture.internalformat,\n texture.type,\n null\n );\n } else {\n for (var j = 0; j < 6; ++j) {\n gl.texImage2D(\n GL_TEXTURE_CUBE_MAP_POSITIVE_X$1 + j,\n i2,\n texture.internalformat,\n texture.width >> i2,\n texture.height >> i2,\n 0,\n texture.internalformat,\n texture.type,\n null\n );\n }\n }\n }\n setTexInfo(texture.texInfo, texture.target);\n });\n }\n function refreshTextures() {\n for (var i = 0; i < numTexUnits; ++i) {\n var tex = textureUnits[i];\n if (tex) {\n tex.bindCount = 0;\n tex.unit = -1;\n textureUnits[i] = null;\n }\n gl.activeTexture(GL_TEXTURE0$1 + i);\n gl.bindTexture(GL_TEXTURE_2D$1, null);\n gl.bindTexture(GL_TEXTURE_CUBE_MAP$1, null);\n }\n }\n return {\n create2D: createTexture2D,\n createCube: createTextureCube,\n clear: destroyTextures,\n getTexture: function(wrapper) {\n return null;\n },\n restore: restoreTextures,\n refresh: refreshTextures\n };\n }\n var GL_RENDERBUFFER = 36161;\n var GL_RGBA4$1 = 32854;\n var GL_RGB5_A1$1 = 32855;\n var GL_RGB565$1 = 36194;\n var GL_DEPTH_COMPONENT16 = 33189;\n var GL_STENCIL_INDEX8 = 36168;\n var GL_DEPTH_STENCIL$1 = 34041;\n var GL_SRGB8_ALPHA8_EXT = 35907;\n var GL_RGBA32F_EXT = 34836;\n var GL_RGBA16F_EXT = 34842;\n var GL_RGB16F_EXT = 34843;\n var FORMAT_SIZES = [];\n FORMAT_SIZES[GL_RGBA4$1] = 2;\n FORMAT_SIZES[GL_RGB5_A1$1] = 2;\n FORMAT_SIZES[GL_RGB565$1] = 2;\n FORMAT_SIZES[GL_DEPTH_COMPONENT16] = 2;\n FORMAT_SIZES[GL_STENCIL_INDEX8] = 1;\n FORMAT_SIZES[GL_DEPTH_STENCIL$1] = 4;\n FORMAT_SIZES[GL_SRGB8_ALPHA8_EXT] = 4;\n FORMAT_SIZES[GL_RGBA32F_EXT] = 16;\n FORMAT_SIZES[GL_RGBA16F_EXT] = 8;\n FORMAT_SIZES[GL_RGB16F_EXT] = 6;\n function getRenderbufferSize(format, width, height) {\n return FORMAT_SIZES[format] * width * height;\n }\n var wrapRenderbuffers = function(gl, extensions, limits, stats2, config) {\n var formatTypes = {\n \"rgba4\": GL_RGBA4$1,\n \"rgb565\": GL_RGB565$1,\n \"rgb5 a1\": GL_RGB5_A1$1,\n \"depth\": GL_DEPTH_COMPONENT16,\n \"stencil\": GL_STENCIL_INDEX8,\n \"depth stencil\": GL_DEPTH_STENCIL$1\n };\n if (extensions.ext_srgb) {\n formatTypes[\"srgba\"] = GL_SRGB8_ALPHA8_EXT;\n }\n if (extensions.ext_color_buffer_half_float) {\n formatTypes[\"rgba16f\"] = GL_RGBA16F_EXT;\n formatTypes[\"rgb16f\"] = GL_RGB16F_EXT;\n }\n if (extensions.webgl_color_buffer_float) {\n formatTypes[\"rgba32f\"] = GL_RGBA32F_EXT;\n }\n var formatTypesInvert = [];\n Object.keys(formatTypes).forEach(function(key) {\n var val = formatTypes[key];\n formatTypesInvert[val] = key;\n });\n var renderbufferCount = 0;\n var renderbufferSet = {};\n function REGLRenderbuffer(renderbuffer) {\n this.id = renderbufferCount++;\n this.refCount = 1;\n this.renderbuffer = renderbuffer;\n this.format = GL_RGBA4$1;\n this.width = 0;\n this.height = 0;\n if (config.profile) {\n this.stats = { size: 0 };\n }\n }\n REGLRenderbuffer.prototype.decRef = function() {\n if (--this.refCount <= 0) {\n destroy(this);\n }\n };\n function destroy(rb) {\n var handle = rb.renderbuffer;\n gl.bindRenderbuffer(GL_RENDERBUFFER, null);\n gl.deleteRenderbuffer(handle);\n rb.renderbuffer = null;\n rb.refCount = 0;\n delete renderbufferSet[rb.id];\n stats2.renderbufferCount--;\n }\n function createRenderbuffer(a, b) {\n var renderbuffer = new REGLRenderbuffer(gl.createRenderbuffer());\n renderbufferSet[renderbuffer.id] = renderbuffer;\n stats2.renderbufferCount++;\n function reglRenderbuffer(a2, b2) {\n var w = 0;\n var h = 0;\n var format = GL_RGBA4$1;\n if (typeof a2 === \"object\" && a2) {\n var options = a2;\n if (\"shape\" in options) {\n var shape = options.shape;\n w = shape[0] | 0;\n h = shape[1] | 0;\n } else {\n if (\"radius\" in options) {\n w = h = options.radius | 0;\n }\n if (\"width\" in options) {\n w = options.width | 0;\n }\n if (\"height\" in options) {\n h = options.height | 0;\n }\n }\n if (\"format\" in options) {\n format = formatTypes[options.format];\n }\n } else if (typeof a2 === \"number\") {\n w = a2 | 0;\n if (typeof b2 === \"number\") {\n h = b2 | 0;\n } else {\n h = w;\n }\n } else if (!a2) {\n w = h = 1;\n } else {\n }\n if (w === renderbuffer.width && h === renderbuffer.height && format === renderbuffer.format) {\n return;\n }\n reglRenderbuffer.width = renderbuffer.width = w;\n reglRenderbuffer.height = renderbuffer.height = h;\n renderbuffer.format = format;\n gl.bindRenderbuffer(GL_RENDERBUFFER, renderbuffer.renderbuffer);\n gl.renderbufferStorage(GL_RENDERBUFFER, format, w, h);\n if (config.profile) {\n renderbuffer.stats.size = getRenderbufferSize(renderbuffer.format, renderbuffer.width, renderbuffer.height);\n }\n reglRenderbuffer.format = formatTypesInvert[renderbuffer.format];\n return reglRenderbuffer;\n }\n function resize(w_, h_) {\n var w = w_ | 0;\n var h = h_ | 0 || w;\n if (w === renderbuffer.width && h === renderbuffer.height) {\n return reglRenderbuffer;\n }\n reglRenderbuffer.width = renderbuffer.width = w;\n reglRenderbuffer.height = renderbuffer.height = h;\n gl.bindRenderbuffer(GL_RENDERBUFFER, renderbuffer.renderbuffer);\n gl.renderbufferStorage(GL_RENDERBUFFER, renderbuffer.format, w, h);\n if (config.profile) {\n renderbuffer.stats.size = getRenderbufferSize(\n renderbuffer.format,\n renderbuffer.width,\n renderbuffer.height\n );\n }\n return reglRenderbuffer;\n }\n reglRenderbuffer(a, b);\n reglRenderbuffer.resize = resize;\n reglRenderbuffer._reglType = \"renderbuffer\";\n reglRenderbuffer._renderbuffer = renderbuffer;\n if (config.profile) {\n reglRenderbuffer.stats = renderbuffer.stats;\n }\n reglRenderbuffer.destroy = function() {\n renderbuffer.decRef();\n };\n return reglRenderbuffer;\n }\n if (config.profile) {\n stats2.getTotalRenderbufferSize = function() {\n var total = 0;\n Object.keys(renderbufferSet).forEach(function(key) {\n total += renderbufferSet[key].stats.size;\n });\n return total;\n };\n }\n function restoreRenderbuffers() {\n values(renderbufferSet).forEach(function(rb) {\n rb.renderbuffer = gl.createRenderbuffer();\n gl.bindRenderbuffer(GL_RENDERBUFFER, rb.renderbuffer);\n gl.renderbufferStorage(GL_RENDERBUFFER, rb.format, rb.width, rb.height);\n });\n gl.bindRenderbuffer(GL_RENDERBUFFER, null);\n }\n return {\n create: createRenderbuffer,\n clear: function() {\n values(renderbufferSet).forEach(destroy);\n },\n restore: restoreRenderbuffers\n };\n };\n var GL_FRAMEBUFFER$1 = 36160;\n var GL_RENDERBUFFER$1 = 36161;\n var GL_TEXTURE_2D$2 = 3553;\n var GL_TEXTURE_CUBE_MAP_POSITIVE_X$2 = 34069;\n var GL_COLOR_ATTACHMENT0$1 = 36064;\n var GL_DEPTH_ATTACHMENT = 36096;\n var GL_STENCIL_ATTACHMENT = 36128;\n var GL_DEPTH_STENCIL_ATTACHMENT = 33306;\n var GL_FRAMEBUFFER_COMPLETE$1 = 36053;\n var GL_HALF_FLOAT_OES$1 = 36193;\n var GL_UNSIGNED_BYTE$5 = 5121;\n var GL_FLOAT$4 = 5126;\n var GL_RGB$1 = 6407;\n var GL_RGBA$2 = 6408;\n var textureFormatChannels = [];\n textureFormatChannels[GL_RGBA$2] = 4;\n textureFormatChannels[GL_RGB$1] = 3;\n var textureTypeSizes = [];\n textureTypeSizes[GL_UNSIGNED_BYTE$5] = 1;\n textureTypeSizes[GL_FLOAT$4] = 4;\n textureTypeSizes[GL_HALF_FLOAT_OES$1] = 2;\n function wrapFBOState(gl, extensions, limits, textureState, renderbufferState, stats2) {\n var framebufferState = {\n cur: null,\n next: null,\n dirty: false,\n setFBO: null\n };\n var colorTextureFormats = [\"rgba\"];\n var colorRenderbufferFormats = [\"rgba4\", \"rgb565\", \"rgb5 a1\"];\n if (extensions.ext_srgb) {\n colorRenderbufferFormats.push(\"srgba\");\n }\n if (extensions.ext_color_buffer_half_float) {\n colorRenderbufferFormats.push(\"rgba16f\", \"rgb16f\");\n }\n if (extensions.webgl_color_buffer_float) {\n colorRenderbufferFormats.push(\"rgba32f\");\n }\n var colorTypes = [\"uint8\"];\n if (extensions.oes_texture_half_float) {\n colorTypes.push(\"half float\", \"float16\");\n }\n if (extensions.oes_texture_float) {\n colorTypes.push(\"float\", \"float32\");\n }\n function FramebufferAttachment(target, texture, renderbuffer) {\n this.target = target;\n this.texture = texture;\n this.renderbuffer = renderbuffer;\n var w = 0;\n var h = 0;\n if (texture) {\n w = texture.width;\n h = texture.height;\n } else if (renderbuffer) {\n w = renderbuffer.width;\n h = renderbuffer.height;\n }\n this.width = w;\n this.height = h;\n }\n function decRef(attachment) {\n if (attachment) {\n if (attachment.texture) {\n attachment.texture._texture.decRef();\n }\n if (attachment.renderbuffer) {\n attachment.renderbuffer._renderbuffer.decRef();\n }\n }\n }\n function incRefAndCheckShape(attachment, width, height) {\n if (!attachment) {\n return;\n }\n if (attachment.texture) {\n var texture = attachment.texture._texture;\n var tw = Math.max(1, texture.width);\n var th = Math.max(1, texture.height);\n texture.refCount += 1;\n } else {\n var renderbuffer = attachment.renderbuffer._renderbuffer;\n renderbuffer.refCount += 1;\n }\n }\n function attach(location, attachment) {\n if (attachment) {\n if (attachment.texture) {\n gl.framebufferTexture2D(\n GL_FRAMEBUFFER$1,\n location,\n attachment.target,\n attachment.texture._texture.texture,\n 0\n );\n } else {\n gl.framebufferRenderbuffer(\n GL_FRAMEBUFFER$1,\n location,\n GL_RENDERBUFFER$1,\n attachment.renderbuffer._renderbuffer.renderbuffer\n );\n }\n }\n }\n function parseAttachment(attachment) {\n var target = GL_TEXTURE_2D$2;\n var texture = null;\n var renderbuffer = null;\n var data = attachment;\n if (typeof attachment === \"object\") {\n data = attachment.data;\n if (\"target\" in attachment) {\n target = attachment.target | 0;\n }\n }\n var type = data._reglType;\n if (type === \"texture2d\") {\n texture = data;\n } else if (type === \"textureCube\") {\n texture = data;\n } else if (type === \"renderbuffer\") {\n renderbuffer = data;\n target = GL_RENDERBUFFER$1;\n } else {\n }\n return new FramebufferAttachment(target, texture, renderbuffer);\n }\n function allocAttachment(width, height, isTexture, format, type) {\n if (isTexture) {\n var texture = textureState.create2D({\n width,\n height,\n format,\n type\n });\n texture._texture.refCount = 0;\n return new FramebufferAttachment(GL_TEXTURE_2D$2, texture, null);\n } else {\n var rb = renderbufferState.create({\n width,\n height,\n format\n });\n rb._renderbuffer.refCount = 0;\n return new FramebufferAttachment(GL_RENDERBUFFER$1, null, rb);\n }\n }\n function unwrapAttachment(attachment) {\n return attachment && (attachment.texture || attachment.renderbuffer);\n }\n function resizeAttachment(attachment, w, h) {\n if (attachment) {\n if (attachment.texture) {\n attachment.texture.resize(w, h);\n } else if (attachment.renderbuffer) {\n attachment.renderbuffer.resize(w, h);\n }\n attachment.width = w;\n attachment.height = h;\n }\n }\n var framebufferCount = 0;\n var framebufferSet = {};\n function REGLFramebuffer() {\n this.id = framebufferCount++;\n framebufferSet[this.id] = this;\n this.framebuffer = gl.createFramebuffer();\n this.width = 0;\n this.height = 0;\n this.colorAttachments = [];\n this.depthAttachment = null;\n this.stencilAttachment = null;\n this.depthStencilAttachment = null;\n }\n function decFBORefs(framebuffer) {\n framebuffer.colorAttachments.forEach(decRef);\n decRef(framebuffer.depthAttachment);\n decRef(framebuffer.stencilAttachment);\n decRef(framebuffer.depthStencilAttachment);\n }\n function destroy(framebuffer) {\n var handle = framebuffer.framebuffer;\n gl.deleteFramebuffer(handle);\n framebuffer.framebuffer = null;\n stats2.framebufferCount--;\n delete framebufferSet[framebuffer.id];\n }\n function updateFramebuffer(framebuffer) {\n var i;\n gl.bindFramebuffer(GL_FRAMEBUFFER$1, framebuffer.framebuffer);\n var colorAttachments = framebuffer.colorAttachments;\n for (i = 0; i < colorAttachments.length; ++i) {\n attach(GL_COLOR_ATTACHMENT0$1 + i, colorAttachments[i]);\n }\n for (i = colorAttachments.length; i < limits.maxColorAttachments; ++i) {\n gl.framebufferTexture2D(\n GL_FRAMEBUFFER$1,\n GL_COLOR_ATTACHMENT0$1 + i,\n GL_TEXTURE_2D$2,\n null,\n 0\n );\n }\n gl.framebufferTexture2D(\n GL_FRAMEBUFFER$1,\n GL_DEPTH_STENCIL_ATTACHMENT,\n GL_TEXTURE_2D$2,\n null,\n 0\n );\n gl.framebufferTexture2D(\n GL_FRAMEBUFFER$1,\n GL_DEPTH_ATTACHMENT,\n GL_TEXTURE_2D$2,\n null,\n 0\n );\n gl.framebufferTexture2D(\n GL_FRAMEBUFFER$1,\n GL_STENCIL_ATTACHMENT,\n GL_TEXTURE_2D$2,\n null,\n 0\n );\n attach(GL_DEPTH_ATTACHMENT, framebuffer.depthAttachment);\n attach(GL_STENCIL_ATTACHMENT, framebuffer.stencilAttachment);\n attach(GL_DEPTH_STENCIL_ATTACHMENT, framebuffer.depthStencilAttachment);\n var status = gl.checkFramebufferStatus(GL_FRAMEBUFFER$1);\n if (!gl.isContextLost() && status !== GL_FRAMEBUFFER_COMPLETE$1) {\n }\n gl.bindFramebuffer(GL_FRAMEBUFFER$1, framebufferState.next ? framebufferState.next.framebuffer : null);\n framebufferState.cur = framebufferState.next;\n gl.getError();\n }\n function createFBO(a0, a1) {\n var framebuffer = new REGLFramebuffer();\n stats2.framebufferCount++;\n function reglFramebuffer(a, b) {\n var i;\n var width = 0;\n var height = 0;\n var needsDepth = true;\n var needsStencil = true;\n var colorBuffer = null;\n var colorTexture = true;\n var colorFormat = \"rgba\";\n var colorType = \"uint8\";\n var colorCount = 1;\n var depthBuffer = null;\n var stencilBuffer = null;\n var depthStencilBuffer = null;\n var depthStencilTexture = false;\n if (typeof a === \"number\") {\n width = a | 0;\n height = b | 0 || width;\n } else if (!a) {\n width = height = 1;\n } else {\n var options = a;\n if (\"shape\" in options) {\n var shape = options.shape;\n width = shape[0];\n height = shape[1];\n } else {\n if (\"radius\" in options) {\n width = height = options.radius;\n }\n if (\"width\" in options) {\n width = options.width;\n }\n if (\"height\" in options) {\n height = options.height;\n }\n }\n if (\"color\" in options || \"colors\" in options) {\n colorBuffer = options.color || options.colors;\n if (Array.isArray(colorBuffer)) {\n }\n }\n if (!colorBuffer) {\n if (\"colorCount\" in options) {\n colorCount = options.colorCount | 0;\n }\n if (\"colorTexture\" in options) {\n colorTexture = !!options.colorTexture;\n colorFormat = \"rgba4\";\n }\n if (\"colorType\" in options) {\n colorType = options.colorType;\n if (!colorTexture) {\n if (colorType === \"half float\" || colorType === \"float16\") {\n colorFormat = \"rgba16f\";\n } else if (colorType === \"float\" || colorType === \"float32\") {\n colorFormat = \"rgba32f\";\n }\n } else {\n }\n }\n if (\"colorFormat\" in options) {\n colorFormat = options.colorFormat;\n if (colorTextureFormats.indexOf(colorFormat) >= 0) {\n colorTexture = true;\n } else if (colorRenderbufferFormats.indexOf(colorFormat) >= 0) {\n colorTexture = false;\n } else {\n }\n }\n }\n if (\"depthTexture\" in options || \"depthStencilTexture\" in options) {\n depthStencilTexture = !!(options.depthTexture || options.depthStencilTexture);\n }\n if (\"depth\" in options) {\n if (typeof options.depth === \"boolean\") {\n needsDepth = options.depth;\n } else {\n depthBuffer = options.depth;\n needsStencil = false;\n }\n }\n if (\"stencil\" in options) {\n if (typeof options.stencil === \"boolean\") {\n needsStencil = options.stencil;\n } else {\n stencilBuffer = options.stencil;\n needsDepth = false;\n }\n }\n if (\"depthStencil\" in options) {\n if (typeof options.depthStencil === \"boolean\") {\n needsDepth = needsStencil = options.depthStencil;\n } else {\n depthStencilBuffer = options.depthStencil;\n needsDepth = false;\n needsStencil = false;\n }\n }\n }\n var colorAttachments = null;\n var depthAttachment = null;\n var stencilAttachment = null;\n var depthStencilAttachment = null;\n if (Array.isArray(colorBuffer)) {\n colorAttachments = colorBuffer.map(parseAttachment);\n } else if (colorBuffer) {\n colorAttachments = [parseAttachment(colorBuffer)];\n } else {\n colorAttachments = new Array(colorCount);\n for (i = 0; i < colorCount; ++i) {\n colorAttachments[i] = allocAttachment(\n width,\n height,\n colorTexture,\n colorFormat,\n colorType\n );\n }\n }\n width = width || colorAttachments[0].width;\n height = height || colorAttachments[0].height;\n if (depthBuffer) {\n depthAttachment = parseAttachment(depthBuffer);\n } else if (needsDepth && !needsStencil) {\n depthAttachment = allocAttachment(\n width,\n height,\n depthStencilTexture,\n \"depth\",\n \"uint32\"\n );\n }\n if (stencilBuffer) {\n stencilAttachment = parseAttachment(stencilBuffer);\n } else if (needsStencil && !needsDepth) {\n stencilAttachment = allocAttachment(\n width,\n height,\n false,\n \"stencil\",\n \"uint8\"\n );\n }\n if (depthStencilBuffer) {\n depthStencilAttachment = parseAttachment(depthStencilBuffer);\n } else if (!depthBuffer && !stencilBuffer && needsStencil && needsDepth) {\n depthStencilAttachment = allocAttachment(\n width,\n height,\n depthStencilTexture,\n \"depth stencil\",\n \"depth stencil\"\n );\n }\n var commonColorAttachmentSize = null;\n for (i = 0; i < colorAttachments.length; ++i) {\n incRefAndCheckShape(colorAttachments[i], width, height);\n if (colorAttachments[i] && colorAttachments[i].texture) {\n var colorAttachmentSize = textureFormatChannels[colorAttachments[i].texture._texture.format] * textureTypeSizes[colorAttachments[i].texture._texture.type];\n if (commonColorAttachmentSize === null) {\n commonColorAttachmentSize = colorAttachmentSize;\n } else {\n }\n }\n }\n incRefAndCheckShape(depthAttachment, width, height);\n incRefAndCheckShape(stencilAttachment, width, height);\n incRefAndCheckShape(depthStencilAttachment, width, height);\n decFBORefs(framebuffer);\n framebuffer.width = width;\n framebuffer.height = height;\n framebuffer.colorAttachments = colorAttachments;\n framebuffer.depthAttachment = depthAttachment;\n framebuffer.stencilAttachment = stencilAttachment;\n framebuffer.depthStencilAttachment = depthStencilAttachment;\n reglFramebuffer.color = colorAttachments.map(unwrapAttachment);\n reglFramebuffer.depth = unwrapAttachment(depthAttachment);\n reglFramebuffer.stencil = unwrapAttachment(stencilAttachment);\n reglFramebuffer.depthStencil = unwrapAttachment(depthStencilAttachment);\n reglFramebuffer.width = framebuffer.width;\n reglFramebuffer.height = framebuffer.height;\n updateFramebuffer(framebuffer);\n return reglFramebuffer;\n }\n function resize(w_, h_) {\n var w = Math.max(w_ | 0, 1);\n var h = Math.max(h_ | 0 || w, 1);\n if (w === framebuffer.width && h === framebuffer.height) {\n return reglFramebuffer;\n }\n var colorAttachments = framebuffer.colorAttachments;\n for (var i = 0; i < colorAttachments.length; ++i) {\n resizeAttachment(colorAttachments[i], w, h);\n }\n resizeAttachment(framebuffer.depthAttachment, w, h);\n resizeAttachment(framebuffer.stencilAttachment, w, h);\n resizeAttachment(framebuffer.depthStencilAttachment, w, h);\n framebuffer.width = reglFramebuffer.width = w;\n framebuffer.height = reglFramebuffer.height = h;\n updateFramebuffer(framebuffer);\n return reglFramebuffer;\n }\n reglFramebuffer(a0, a1);\n return extend(reglFramebuffer, {\n resize,\n _reglType: \"framebuffer\",\n _framebuffer: framebuffer,\n destroy: function() {\n destroy(framebuffer);\n decFBORefs(framebuffer);\n },\n use: function(block) {\n framebufferState.setFBO({\n framebuffer: reglFramebuffer\n }, block);\n }\n });\n }\n function createCubeFBO(options) {\n var faces = Array(6);\n function reglFramebufferCube(a) {\n var i;\n var params = {\n color: null\n };\n var radius = 0;\n var colorBuffer = null;\n var colorFormat = \"rgba\";\n var colorType = \"uint8\";\n var colorCount = 1;\n if (typeof a === \"number\") {\n radius = a | 0;\n } else if (!a) {\n radius = 1;\n } else {\n var options2 = a;\n if (\"shape\" in options2) {\n var shape = options2.shape;\n radius = shape[0];\n } else {\n if (\"radius\" in options2) {\n radius = options2.radius | 0;\n }\n if (\"width\" in options2) {\n radius = options2.width | 0;\n if (\"height\" in options2) {\n }\n } else if (\"height\" in options2) {\n radius = options2.height | 0;\n }\n }\n if (\"color\" in options2 || \"colors\" in options2) {\n colorBuffer = options2.color || options2.colors;\n if (Array.isArray(colorBuffer)) {\n }\n }\n if (!colorBuffer) {\n if (\"colorCount\" in options2) {\n colorCount = options2.colorCount | 0;\n }\n if (\"colorType\" in options2) {\n colorType = options2.colorType;\n }\n if (\"colorFormat\" in options2) {\n colorFormat = options2.colorFormat;\n }\n }\n if (\"depth\" in options2) {\n params.depth = options2.depth;\n }\n if (\"stencil\" in options2) {\n params.stencil = options2.stencil;\n }\n if (\"depthStencil\" in options2) {\n params.depthStencil = options2.depthStencil;\n }\n }\n var colorCubes;\n if (colorBuffer) {\n if (Array.isArray(colorBuffer)) {\n colorCubes = [];\n for (i = 0; i < colorBuffer.length; ++i) {\n colorCubes[i] = colorBuffer[i];\n }\n } else {\n colorCubes = [colorBuffer];\n }\n } else {\n colorCubes = Array(colorCount);\n var cubeMapParams = {\n radius,\n format: colorFormat,\n type: colorType\n };\n for (i = 0; i < colorCount; ++i) {\n colorCubes[i] = textureState.createCube(cubeMapParams);\n }\n }\n params.color = Array(colorCubes.length);\n for (i = 0; i < colorCubes.length; ++i) {\n var cube = colorCubes[i];\n radius = radius || cube.width;\n params.color[i] = {\n target: GL_TEXTURE_CUBE_MAP_POSITIVE_X$2,\n data: colorCubes[i]\n };\n }\n for (i = 0; i < 6; ++i) {\n for (var j = 0; j < colorCubes.length; ++j) {\n params.color[j].target = GL_TEXTURE_CUBE_MAP_POSITIVE_X$2 + i;\n }\n if (i > 0) {\n params.depth = faces[0].depth;\n params.stencil = faces[0].stencil;\n params.depthStencil = faces[0].depthStencil;\n }\n if (faces[i]) {\n faces[i](params);\n } else {\n faces[i] = createFBO(params);\n }\n }\n return extend(reglFramebufferCube, {\n width: radius,\n height: radius,\n color: colorCubes\n });\n }\n function resize(radius_) {\n var i;\n var radius = radius_ | 0;\n if (radius === reglFramebufferCube.width) {\n return reglFramebufferCube;\n }\n var colors = reglFramebufferCube.color;\n for (i = 0; i < colors.length; ++i) {\n colors[i].resize(radius);\n }\n for (i = 0; i < 6; ++i) {\n faces[i].resize(radius);\n }\n reglFramebufferCube.width = reglFramebufferCube.height = radius;\n return reglFramebufferCube;\n }\n reglFramebufferCube(options);\n return extend(reglFramebufferCube, {\n faces,\n resize,\n _reglType: \"framebufferCube\",\n destroy: function() {\n faces.forEach(function(f) {\n f.destroy();\n });\n }\n });\n }\n function restoreFramebuffers() {\n framebufferState.cur = null;\n framebufferState.next = null;\n framebufferState.dirty = true;\n values(framebufferSet).forEach(function(fb) {\n fb.framebuffer = gl.createFramebuffer();\n updateFramebuffer(fb);\n });\n }\n return extend(framebufferState, {\n getFramebuffer: function(object) {\n if (typeof object === \"function\" && object._reglType === \"framebuffer\") {\n var fbo = object._framebuffer;\n if (fbo instanceof REGLFramebuffer) {\n return fbo;\n }\n }\n return null;\n },\n create: createFBO,\n createCube: createCubeFBO,\n clear: function() {\n values(framebufferSet).forEach(destroy);\n },\n restore: restoreFramebuffers\n });\n }\n var GL_FLOAT$5 = 5126;\n var GL_ARRAY_BUFFER$1 = 34962;\n var GL_ELEMENT_ARRAY_BUFFER$1 = 34963;\n function AttributeRecord() {\n this.state = 0;\n this.x = 0;\n this.y = 0;\n this.z = 0;\n this.w = 0;\n this.buffer = null;\n this.size = 0;\n this.normalized = false;\n this.type = GL_FLOAT$5;\n this.offset = 0;\n this.stride = 0;\n this.divisor = 0;\n }\n function wrapAttributeState(gl, extensions, limits, stats2, bufferState, elementState, drawState) {\n var NUM_ATTRIBUTES = limits.maxAttributes;\n var attributeBindings = new Array(NUM_ATTRIBUTES);\n for (var i = 0; i < NUM_ATTRIBUTES; ++i) {\n attributeBindings[i] = new AttributeRecord();\n }\n var vaoCount = 0;\n var vaoSet = {};\n var state = {\n Record: AttributeRecord,\n scope: {},\n state: attributeBindings,\n currentVAO: null,\n targetVAO: null,\n restore: extVAO() ? restoreVAO : function() {\n },\n createVAO,\n getVAO,\n destroyBuffer,\n setVAO: extVAO() ? setVAOEXT : setVAOEmulated,\n clear: extVAO() ? destroyVAOEXT : function() {\n }\n };\n function destroyBuffer(buffer) {\n for (var i2 = 0; i2 < attributeBindings.length; ++i2) {\n var record = attributeBindings[i2];\n if (record.buffer === buffer) {\n gl.disableVertexAttribArray(i2);\n record.buffer = null;\n }\n }\n }\n function extVAO() {\n return extensions.oes_vertex_array_object;\n }\n function extInstanced() {\n return extensions.angle_instanced_arrays;\n }\n function getVAO(vao) {\n if (typeof vao === \"function\" && vao._vao) {\n return vao._vao;\n }\n return null;\n }\n function setVAOEXT(vao) {\n if (vao === state.currentVAO) {\n return;\n }\n var ext = extVAO();\n if (vao) {\n ext.bindVertexArrayOES(vao.vao);\n } else {\n ext.bindVertexArrayOES(null);\n }\n state.currentVAO = vao;\n }\n function setVAOEmulated(vao) {\n if (vao === state.currentVAO) {\n return;\n }\n if (vao) {\n vao.bindAttrs();\n } else {\n var exti = extInstanced();\n for (var i2 = 0; i2 < attributeBindings.length; ++i2) {\n var binding = attributeBindings[i2];\n if (binding.buffer) {\n gl.enableVertexAttribArray(i2);\n binding.buffer.bind();\n gl.vertexAttribPointer(i2, binding.size, binding.type, binding.normalized, binding.stride, binding.offfset);\n if (exti && binding.divisor) {\n exti.vertexAttribDivisorANGLE(i2, binding.divisor);\n }\n } else {\n gl.disableVertexAttribArray(i2);\n gl.vertexAttrib4f(i2, binding.x, binding.y, binding.z, binding.w);\n }\n }\n if (drawState.elements) {\n gl.bindBuffer(GL_ELEMENT_ARRAY_BUFFER$1, drawState.elements.buffer.buffer);\n } else {\n gl.bindBuffer(GL_ELEMENT_ARRAY_BUFFER$1, null);\n }\n }\n state.currentVAO = vao;\n }\n function destroyVAOEXT() {\n values(vaoSet).forEach(function(vao) {\n vao.destroy();\n });\n }\n function REGLVAO() {\n this.id = ++vaoCount;\n this.attributes = [];\n this.elements = null;\n this.ownsElements = false;\n this.count = 0;\n this.offset = 0;\n this.instances = -1;\n this.primitive = 4;\n var extension = extVAO();\n if (extension) {\n this.vao = extension.createVertexArrayOES();\n } else {\n this.vao = null;\n }\n vaoSet[this.id] = this;\n this.buffers = [];\n }\n REGLVAO.prototype.bindAttrs = function() {\n var exti = extInstanced();\n var attributes = this.attributes;\n for (var i2 = 0; i2 < attributes.length; ++i2) {\n var attr = attributes[i2];\n if (attr.buffer) {\n gl.enableVertexAttribArray(i2);\n gl.bindBuffer(GL_ARRAY_BUFFER$1, attr.buffer.buffer);\n gl.vertexAttribPointer(i2, attr.size, attr.type, attr.normalized, attr.stride, attr.offset);\n if (exti && attr.divisor) {\n exti.vertexAttribDivisorANGLE(i2, attr.divisor);\n }\n } else {\n gl.disableVertexAttribArray(i2);\n gl.vertexAttrib4f(i2, attr.x, attr.y, attr.z, attr.w);\n }\n }\n for (var j = attributes.length; j < NUM_ATTRIBUTES; ++j) {\n gl.disableVertexAttribArray(j);\n }\n var elements = elementState.getElements(this.elements);\n if (elements) {\n gl.bindBuffer(GL_ELEMENT_ARRAY_BUFFER$1, elements.buffer.buffer);\n } else {\n gl.bindBuffer(GL_ELEMENT_ARRAY_BUFFER$1, null);\n }\n };\n REGLVAO.prototype.refresh = function() {\n var ext = extVAO();\n if (ext) {\n ext.bindVertexArrayOES(this.vao);\n this.bindAttrs();\n state.currentVAO = null;\n ext.bindVertexArrayOES(null);\n }\n };\n REGLVAO.prototype.destroy = function() {\n if (this.vao) {\n var extension = extVAO();\n if (this === state.currentVAO) {\n state.currentVAO = null;\n extension.bindVertexArrayOES(null);\n }\n extension.deleteVertexArrayOES(this.vao);\n this.vao = null;\n }\n if (this.ownsElements) {\n this.elements.destroy();\n this.elements = null;\n this.ownsElements = false;\n }\n if (vaoSet[this.id]) {\n delete vaoSet[this.id];\n stats2.vaoCount -= 1;\n }\n };\n function restoreVAO() {\n var ext = extVAO();\n if (ext) {\n values(vaoSet).forEach(function(vao) {\n vao.refresh();\n });\n }\n }\n function createVAO(_attr) {\n var vao = new REGLVAO();\n stats2.vaoCount += 1;\n function updateVAO(options) {\n var attributes;\n if (Array.isArray(options)) {\n attributes = options;\n if (vao.elements && vao.ownsElements) {\n vao.elements.destroy();\n }\n vao.elements = null;\n vao.ownsElements = false;\n vao.offset = 0;\n vao.count = 0;\n vao.instances = -1;\n vao.primitive = 4;\n } else {\n if (options.elements) {\n var elements = options.elements;\n if (vao.ownsElements) {\n if (typeof elements === \"function\" && elements._reglType === \"elements\") {\n vao.elements.destroy();\n vao.ownsElements = false;\n } else {\n vao.elements(elements);\n vao.ownsElements = false;\n }\n } else if (elementState.getElements(options.elements)) {\n vao.elements = options.elements;\n vao.ownsElements = false;\n } else {\n vao.elements = elementState.create(options.elements);\n vao.ownsElements = true;\n }\n } else {\n vao.elements = null;\n vao.ownsElements = false;\n }\n attributes = options.attributes;\n vao.offset = 0;\n vao.count = -1;\n vao.instances = -1;\n vao.primitive = 4;\n if (vao.elements) {\n vao.count = vao.elements._elements.vertCount;\n vao.primitive = vao.elements._elements.primType;\n }\n if (\"offset\" in options) {\n vao.offset = options.offset | 0;\n }\n if (\"count\" in options) {\n vao.count = options.count | 0;\n }\n if (\"instances\" in options) {\n vao.instances = options.instances | 0;\n }\n if (\"primitive\" in options) {\n vao.primitive = primTypes[options.primitive];\n }\n }\n var bufUpdated = {};\n var nattributes = vao.attributes;\n nattributes.length = attributes.length;\n for (var i2 = 0; i2 < attributes.length; ++i2) {\n var spec = attributes[i2];\n var rec = nattributes[i2] = new AttributeRecord();\n var data = spec.data || spec;\n if (Array.isArray(data) || isTypedArray(data) || isNDArrayLike(data)) {\n var buf;\n if (vao.buffers[i2]) {\n buf = vao.buffers[i2];\n if (isTypedArray(data) && buf._buffer.byteLength >= data.byteLength) {\n buf.subdata(data);\n } else {\n buf.destroy();\n vao.buffers[i2] = null;\n }\n }\n if (!vao.buffers[i2]) {\n buf = vao.buffers[i2] = bufferState.create(spec, GL_ARRAY_BUFFER$1, false, true);\n }\n rec.buffer = bufferState.getBuffer(buf);\n rec.size = rec.buffer.dimension | 0;\n rec.normalized = false;\n rec.type = rec.buffer.dtype;\n rec.offset = 0;\n rec.stride = 0;\n rec.divisor = 0;\n rec.state = 1;\n bufUpdated[i2] = 1;\n } else if (bufferState.getBuffer(spec)) {\n rec.buffer = bufferState.getBuffer(spec);\n rec.size = rec.buffer.dimension | 0;\n rec.normalized = false;\n rec.type = rec.buffer.dtype;\n rec.offset = 0;\n rec.stride = 0;\n rec.divisor = 0;\n rec.state = 1;\n } else if (bufferState.getBuffer(spec.buffer)) {\n rec.buffer = bufferState.getBuffer(spec.buffer);\n rec.size = (+spec.size || rec.buffer.dimension) | 0;\n rec.normalized = !!spec.normalized || false;\n if (\"type\" in spec) {\n rec.type = glTypes[spec.type];\n } else {\n rec.type = rec.buffer.dtype;\n }\n rec.offset = (spec.offset || 0) | 0;\n rec.stride = (spec.stride || 0) | 0;\n rec.divisor = (spec.divisor || 0) | 0;\n rec.state = 1;\n } else if (\"x\" in spec) {\n rec.x = +spec.x || 0;\n rec.y = +spec.y || 0;\n rec.z = +spec.z || 0;\n rec.w = +spec.w || 0;\n rec.state = 2;\n } else {\n }\n }\n for (var j = 0; j < vao.buffers.length; ++j) {\n if (!bufUpdated[j] && vao.buffers[j]) {\n vao.buffers[j].destroy();\n vao.buffers[j] = null;\n }\n }\n vao.refresh();\n return updateVAO;\n }\n updateVAO.destroy = function() {\n for (var j = 0; j < vao.buffers.length; ++j) {\n if (vao.buffers[j]) {\n vao.buffers[j].destroy();\n }\n }\n vao.buffers.length = 0;\n if (vao.ownsElements) {\n vao.elements.destroy();\n vao.elements = null;\n vao.ownsElements = false;\n }\n vao.destroy();\n };\n updateVAO._vao = vao;\n updateVAO._reglType = \"vao\";\n return updateVAO(_attr);\n }\n return state;\n }\n var GL_FRAGMENT_SHADER = 35632;\n var GL_VERTEX_SHADER = 35633;\n var GL_ACTIVE_UNIFORMS = 35718;\n var GL_ACTIVE_ATTRIBUTES = 35721;\n function wrapShaderState(gl, stringStore, stats2, config) {\n var fragShaders = {};\n var vertShaders = {};\n function ActiveInfo(name, id, location, info) {\n this.name = name;\n this.id = id;\n this.location = location;\n this.info = info;\n }\n function insertActiveInfo(list, info) {\n for (var i = 0; i < list.length; ++i) {\n if (list[i].id === info.id) {\n list[i].location = info.location;\n return;\n }\n }\n list.push(info);\n }\n function getShader(type, id, command) {\n var cache = type === GL_FRAGMENT_SHADER ? fragShaders : vertShaders;\n var shader = cache[id];\n if (!shader) {\n var source = stringStore.str(id);\n shader = gl.createShader(type);\n gl.shaderSource(shader, source);\n gl.compileShader(shader);\n cache[id] = shader;\n }\n return shader;\n }\n var programCache = {};\n var programList = [];\n var PROGRAM_COUNTER = 0;\n function REGLProgram(fragId, vertId) {\n this.id = PROGRAM_COUNTER++;\n this.fragId = fragId;\n this.vertId = vertId;\n this.program = null;\n this.uniforms = [];\n this.attributes = [];\n this.refCount = 1;\n if (config.profile) {\n this.stats = {\n uniformsCount: 0,\n attributesCount: 0\n };\n }\n }\n function linkProgram(desc, command, attributeLocations) {\n var i, info;\n var fragShader = getShader(GL_FRAGMENT_SHADER, desc.fragId);\n var vertShader = getShader(GL_VERTEX_SHADER, desc.vertId);\n var program = desc.program = gl.createProgram();\n gl.attachShader(program, fragShader);\n gl.attachShader(program, vertShader);\n if (attributeLocations) {\n for (i = 0; i < attributeLocations.length; ++i) {\n var binding = attributeLocations[i];\n gl.bindAttribLocation(program, binding[0], binding[1]);\n }\n }\n gl.linkProgram(program);\n var numUniforms = gl.getProgramParameter(program, GL_ACTIVE_UNIFORMS);\n if (config.profile) {\n desc.stats.uniformsCount = numUniforms;\n }\n var uniforms = desc.uniforms;\n for (i = 0; i < numUniforms; ++i) {\n info = gl.getActiveUniform(program, i);\n if (info) {\n if (info.size > 1) {\n for (var j = 0; j < info.size; ++j) {\n var name = info.name.replace(\"[0]\", \"[\" + j + \"]\");\n insertActiveInfo(uniforms, new ActiveInfo(\n name,\n stringStore.id(name),\n gl.getUniformLocation(program, name),\n info\n ));\n }\n } else {\n insertActiveInfo(uniforms, new ActiveInfo(\n info.name,\n stringStore.id(info.name),\n gl.getUniformLocation(program, info.name),\n info\n ));\n }\n }\n }\n var numAttributes = gl.getProgramParameter(program, GL_ACTIVE_ATTRIBUTES);\n if (config.profile) {\n desc.stats.attributesCount = numAttributes;\n }\n var attributes = desc.attributes;\n for (i = 0; i < numAttributes; ++i) {\n info = gl.getActiveAttrib(program, i);\n if (info) {\n insertActiveInfo(attributes, new ActiveInfo(\n info.name,\n stringStore.id(info.name),\n gl.getAttribLocation(program, info.name),\n info\n ));\n }\n }\n }\n if (config.profile) {\n stats2.getMaxUniformsCount = function() {\n var m = 0;\n programList.forEach(function(desc) {\n if (desc.stats.uniformsCount > m) {\n m = desc.stats.uniformsCount;\n }\n });\n return m;\n };\n stats2.getMaxAttributesCount = function() {\n var m = 0;\n programList.forEach(function(desc) {\n if (desc.stats.attributesCount > m) {\n m = desc.stats.attributesCount;\n }\n });\n return m;\n };\n }\n function restoreShaders() {\n fragShaders = {};\n vertShaders = {};\n for (var i = 0; i < programList.length; ++i) {\n linkProgram(programList[i], null, programList[i].attributes.map(function(info) {\n return [info.location, info.name];\n }));\n }\n }\n return {\n clear: function() {\n var deleteShader = gl.deleteShader.bind(gl);\n values(fragShaders).forEach(deleteShader);\n fragShaders = {};\n values(vertShaders).forEach(deleteShader);\n vertShaders = {};\n programList.forEach(function(desc) {\n gl.deleteProgram(desc.program);\n });\n programList.length = 0;\n programCache = {};\n stats2.shaderCount = 0;\n },\n program: function(vertId, fragId, command, attribLocations) {\n var cache = programCache[fragId];\n if (!cache) {\n cache = programCache[fragId] = {};\n }\n var prevProgram = cache[vertId];\n if (prevProgram) {\n prevProgram.refCount++;\n if (!attribLocations) {\n return prevProgram;\n }\n }\n var program = new REGLProgram(fragId, vertId);\n stats2.shaderCount++;\n linkProgram(program, command, attribLocations);\n if (!prevProgram) {\n cache[vertId] = program;\n }\n programList.push(program);\n return extend(program, {\n destroy: function() {\n program.refCount--;\n if (program.refCount <= 0) {\n gl.deleteProgram(program.program);\n var idx = programList.indexOf(program);\n programList.splice(idx, 1);\n stats2.shaderCount--;\n }\n if (cache[program.vertId].refCount <= 0) {\n gl.deleteShader(vertShaders[program.vertId]);\n delete vertShaders[program.vertId];\n delete programCache[program.fragId][program.vertId];\n }\n if (!Object.keys(programCache[program.fragId]).length) {\n gl.deleteShader(fragShaders[program.fragId]);\n delete fragShaders[program.fragId];\n delete programCache[program.fragId];\n }\n }\n });\n },\n restore: restoreShaders,\n shader: getShader,\n frag: -1,\n vert: -1\n };\n }\n var GL_RGBA$3 = 6408;\n var GL_UNSIGNED_BYTE$6 = 5121;\n var GL_PACK_ALIGNMENT = 3333;\n var GL_FLOAT$6 = 5126;\n function wrapReadPixels(gl, framebufferState, reglPoll, context, glAttributes, extensions, limits) {\n function readPixelsImpl(input) {\n var type;\n if (framebufferState.next === null) {\n type = GL_UNSIGNED_BYTE$6;\n } else {\n type = framebufferState.next.colorAttachments[0].texture._texture.type;\n }\n var x = 0;\n var y = 0;\n var width = context.framebufferWidth;\n var height = context.framebufferHeight;\n var data = null;\n if (isTypedArray(input)) {\n data = input;\n } else if (input) {\n x = input.x | 0;\n y = input.y | 0;\n width = (input.width || context.framebufferWidth - x) | 0;\n height = (input.height || context.framebufferHeight - y) | 0;\n data = input.data || null;\n }\n if (data) {\n if (type === GL_UNSIGNED_BYTE$6) {\n } else if (type === GL_FLOAT$6) {\n }\n }\n reglPoll();\n var size = width * height * 4;\n if (!data) {\n if (type === GL_UNSIGNED_BYTE$6) {\n data = new Uint8Array(size);\n } else if (type === GL_FLOAT$6) {\n data = data || new Float32Array(size);\n }\n }\n gl.pixelStorei(GL_PACK_ALIGNMENT, 4);\n gl.readPixels(\n x,\n y,\n width,\n height,\n GL_RGBA$3,\n type,\n data\n );\n return data;\n }\n function readPixelsFBO(options) {\n var result;\n framebufferState.setFBO({\n framebuffer: options.framebuffer\n }, function() {\n result = readPixelsImpl(options);\n });\n return result;\n }\n function readPixels(options) {\n if (!options || !(\"framebuffer\" in options)) {\n return readPixelsImpl(options);\n } else {\n return readPixelsFBO(options);\n }\n }\n return readPixels;\n }\n var hexcase = 0;\n var b64pad = \"\";\n function hex_sha256(s) {\n return rstr2hex(rstr_sha256(str2rstr_utf8(s)));\n }\n function rstr_sha256(s) {\n return binb2rstr(binb_sha256(rstr2binb(s), s.length * 8));\n }\n function rstr_hmac_sha256(key, data) {\n var bkey = rstr2binb(key);\n if (bkey.length > 16) bkey = binb_sha256(bkey, key.length * 8);\n var ipad = Array(16), opad = Array(16);\n for (var i = 0; i < 16; i++) {\n ipad[i] = bkey[i] ^ 909522486;\n opad[i] = bkey[i] ^ 1549556828;\n }\n var hash = binb_sha256(ipad.concat(rstr2binb(data)), 512 + data.length * 8);\n return binb2rstr(binb_sha256(opad.concat(hash), 512 + 256));\n }\n function rstr2hex(input) {\n var hex_tab = hexcase ? \"0123456789ABCDEF\" : \"0123456789abcdef\";\n var output = \"\";\n var x;\n for (var i = 0; i < input.length; i++) {\n x = input.charCodeAt(i);\n output += hex_tab.charAt(x >>> 4 & 15) + hex_tab.charAt(x & 15);\n }\n return output;\n }\n function rstr2b64(input) {\n var tab = \"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/\";\n var output = \"\";\n var len = input.length;\n for (var i = 0; i < len; i += 3) {\n var triplet = input.charCodeAt(i) << 16 | (i + 1 < len ? input.charCodeAt(i + 1) << 8 : 0) | (i + 2 < len ? input.charCodeAt(i + 2) : 0);\n for (var j = 0; j < 4; j++) {\n if (i * 8 + j * 6 > input.length * 8) output += b64pad;\n else output += tab.charAt(triplet >>> 6 * (3 - j) & 63);\n }\n }\n return output;\n }\n function rstr2any(input, encoding) {\n var divisor = encoding.length;\n var remainders = Array();\n var i, q, x, quotient;\n var dividend = Array(Math.ceil(input.length / 2));\n for (i = 0; i < dividend.length; i++) {\n dividend[i] = input.charCodeAt(i * 2) << 8 | input.charCodeAt(i * 2 + 1);\n }\n while (dividend.length > 0) {\n quotient = Array();\n x = 0;\n for (i = 0; i < dividend.length; i++) {\n x = (x << 16) + dividend[i];\n q = Math.floor(x / divisor);\n x -= q * divisor;\n if (quotient.length > 0 || q > 0)\n quotient[quotient.length] = q;\n }\n remainders[remainders.length] = x;\n dividend = quotient;\n }\n var output = \"\";\n for (i = remainders.length - 1; i >= 0; i--)\n output += encoding.charAt(remainders[i]);\n var full_length = Math.ceil(input.length * 8 / (Math.log(encoding.length) / Math.log(2)));\n for (i = output.length; i < full_length; i++)\n output = encoding[0] + output;\n return output;\n }\n function str2rstr_utf8(input) {\n var output = \"\";\n var i = -1;\n var x, y;\n while (++i < input.length) {\n x = input.charCodeAt(i);\n y = i + 1 < input.length ? input.charCodeAt(i + 1) : 0;\n if (55296 <= x && x <= 56319 && 56320 <= y && y <= 57343) {\n x = 65536 + ((x & 1023) << 10) + (y & 1023);\n i++;\n }\n if (x <= 127)\n output += String.fromCharCode(x);\n else if (x <= 2047)\n output += String.fromCharCode(\n 192 | x >>> 6 & 31,\n 128 | x & 63\n );\n else if (x <= 65535)\n output += String.fromCharCode(\n 224 | x >>> 12 & 15,\n 128 | x >>> 6 & 63,\n 128 | x & 63\n );\n else if (x <= 2097151)\n output += String.fromCharCode(\n 240 | x >>> 18 & 7,\n 128 | x >>> 12 & 63,\n 128 | x >>> 6 & 63,\n 128 | x & 63\n );\n }\n return output;\n }\n function rstr2binb(input) {\n var output = Array(input.length >> 2);\n for (var i = 0; i < output.length; i++)\n output[i] = 0;\n for (var i = 0; i < input.length * 8; i += 8)\n output[i >> 5] |= (input.charCodeAt(i / 8) & 255) << 24 - i % 32;\n return output;\n }\n function binb2rstr(input) {\n var output = \"\";\n for (var i = 0; i < input.length * 32; i += 8)\n output += String.fromCharCode(input[i >> 5] >>> 24 - i % 32 & 255);\n return output;\n }\n function sha256_S(X, n) {\n return X >>> n | X << 32 - n;\n }\n function sha256_R(X, n) {\n return X >>> n;\n }\n function sha256_Ch(x, y, z) {\n return x & y ^ ~x & z;\n }\n function sha256_Maj(x, y, z) {\n return x & y ^ x & z ^ y & z;\n }\n function sha256_Sigma0256(x) {\n return sha256_S(x, 2) ^ sha256_S(x, 13) ^ sha256_S(x, 22);\n }\n function sha256_Sigma1256(x) {\n return sha256_S(x, 6) ^ sha256_S(x, 11) ^ sha256_S(x, 25);\n }\n function sha256_Gamma0256(x) {\n return sha256_S(x, 7) ^ sha256_S(x, 18) ^ sha256_R(x, 3);\n }\n function sha256_Gamma1256(x) {\n return sha256_S(x, 17) ^ sha256_S(x, 19) ^ sha256_R(x, 10);\n }\n var sha256_K = new Array(\n 1116352408,\n 1899447441,\n -1245643825,\n -373957723,\n 961987163,\n 1508970993,\n -1841331548,\n -1424204075,\n -670586216,\n 310598401,\n 607225278,\n 1426881987,\n 1925078388,\n -2132889090,\n -1680079193,\n -1046744716,\n -459576895,\n -272742522,\n 264347078,\n 604807628,\n 770255983,\n 1249150122,\n 1555081692,\n 1996064986,\n -1740746414,\n -1473132947,\n -1341970488,\n -1084653625,\n -958395405,\n -710438585,\n 113926993,\n 338241895,\n 666307205,\n 773529912,\n 1294757372,\n 1396182291,\n 1695183700,\n 1986661051,\n -2117940946,\n -1838011259,\n -1564481375,\n -1474664885,\n -1035236496,\n -949202525,\n -778901479,\n -694614492,\n -200395387,\n 275423344,\n 430227734,\n 506948616,\n 659060556,\n 883997877,\n 958139571,\n 1322822218,\n 1537002063,\n 1747873779,\n 1955562222,\n 2024104815,\n -2067236844,\n -1933114872,\n -1866530822,\n -1538233109,\n -1090935817,\n -965641998\n );\n function binb_sha256(m, l) {\n var HASH = new Array(\n 1779033703,\n -1150833019,\n 1013904242,\n -1521486534,\n 1359893119,\n -1694144372,\n 528734635,\n 1541459225\n );\n var W = new Array(64);\n var a, b, c, d, e, f, g, h;\n var i, j, T1, T2;\n m[l >> 5] |= 128 << 24 - l % 32;\n m[(l + 64 >> 9 << 4) + 15] = l;\n for (i = 0; i < m.length; i += 16) {\n a = HASH[0];\n b = HASH[1];\n c = HASH[2];\n d = HASH[3];\n e = HASH[4];\n f = HASH[5];\n g = HASH[6];\n h = HASH[7];\n for (j = 0; j < 64; j++) {\n if (j < 16) W[j] = m[j + i];\n else W[j] = safe_add(safe_add(\n safe_add(sha256_Gamma1256(W[j - 2]), W[j - 7]),\n sha256_Gamma0256(W[j - 15])\n ), W[j - 16]);\n T1 = safe_add(safe_add(\n safe_add(safe_add(h, sha256_Sigma1256(e)), sha256_Ch(e, f, g)),\n sha256_K[j]\n ), W[j]);\n T2 = safe_add(sha256_Sigma0256(a), sha256_Maj(a, b, c));\n h = g;\n g = f;\n f = e;\n e = safe_add(d, T1);\n d = c;\n c = b;\n b = a;\n a = safe_add(T1, T2);\n }\n HASH[0] = safe_add(a, HASH[0]);\n HASH[1] = safe_add(b, HASH[1]);\n HASH[2] = safe_add(c, HASH[2]);\n HASH[3] = safe_add(d, HASH[3]);\n HASH[4] = safe_add(e, HASH[4]);\n HASH[5] = safe_add(f, HASH[5]);\n HASH[6] = safe_add(g, HASH[6]);\n HASH[7] = safe_add(h, HASH[7]);\n }\n return HASH;\n }\n function safe_add(x, y) {\n var lsw = (x & 65535) + (y & 65535);\n var msw = (x >> 16) + (y >> 16) + (lsw >> 16);\n return msw << 16 | lsw & 65535;\n }\n function slice(x) {\n return Array.prototype.slice.call(x);\n }\n function join(x) {\n return slice(x).join(\"\");\n }\n function createEnvironment(options) {\n var cache = options && options.cache;\n var varCounter = 0;\n var linkedNames = [];\n var linkedValues = [];\n var isStable = [];\n function link(value, options2) {\n var stable = options2 && options2.stable;\n if (!stable) {\n for (var i = 0; i < linkedValues.length; ++i) {\n if (linkedValues[i] === value && !isStable[i]) {\n return linkedNames[i];\n }\n }\n }\n var name = \"g\" + varCounter++;\n linkedNames.push(name);\n linkedValues.push(value);\n isStable.push(stable);\n return name;\n }\n function block() {\n var code = [];\n function push() {\n code.push.apply(code, slice(arguments));\n }\n var vars = [];\n function def() {\n var name = \"v\" + varCounter++;\n vars.push(name);\n if (arguments.length > 0) {\n code.push(name, \"=\");\n code.push.apply(code, slice(arguments));\n code.push(\";\");\n }\n return name;\n }\n return extend(push, {\n def,\n toString: function() {\n return join([\n vars.length > 0 ? \"var \" + vars.join(\",\") + \";\" : \"\",\n join(code)\n ]);\n }\n });\n }\n function scope() {\n var entry = block();\n var exit = block();\n var entryToString = entry.toString;\n var exitToString = exit.toString;\n function save(object, prop) {\n exit(object, prop, \"=\", entry.def(object, prop), \";\");\n }\n return extend(function() {\n entry.apply(entry, slice(arguments));\n }, {\n def: entry.def,\n entry,\n exit,\n save,\n set: function(object, prop, value) {\n save(object, prop);\n entry(object, prop, \"=\", value, \";\");\n },\n toString: function() {\n return entryToString() + exitToString();\n }\n });\n }\n function conditional() {\n var pred = join(arguments);\n var thenBlock = scope();\n var elseBlock = scope();\n var thenToString = thenBlock.toString;\n var elseToString = elseBlock.toString;\n return extend(thenBlock, {\n then: function() {\n thenBlock.apply(thenBlock, slice(arguments));\n return this;\n },\n else: function() {\n elseBlock.apply(elseBlock, slice(arguments));\n return this;\n },\n toString: function() {\n var elseClause = elseToString();\n if (elseClause) {\n elseClause = \"else{\" + elseClause + \"}\";\n }\n return join([\n \"if(\",\n pred,\n \"){\",\n thenToString(),\n \"}\",\n elseClause\n ]);\n }\n });\n }\n var globalBlock = block();\n var procedures = {};\n function proc(name, count) {\n var args = [];\n function arg() {\n var name2 = \"a\" + args.length;\n args.push(name2);\n return name2;\n }\n count = count || 0;\n for (var i = 0; i < count; ++i) {\n arg();\n }\n var body = scope();\n var bodyToString = body.toString;\n var result = procedures[name] = extend(body, {\n arg,\n toString: function() {\n return join([\n \"function(\",\n args.join(),\n \"){\",\n bodyToString(),\n \"}\"\n ]);\n }\n });\n return result;\n }\n function compile() {\n var code = [\n '\"use strict\";',\n globalBlock,\n \"return {\"\n ];\n Object.keys(procedures).forEach(function(name) {\n code.push('\"', name, '\":', procedures[name].toString(), \",\");\n });\n code.push(\"}\");\n var src = join(code).replace(/;/g, \";\\n\").replace(/}/g, \"}\\n\").replace(/{/g, \"{\\n\");\n var key;\n if (cache) {\n key = hex_sha256(src);\n if (cache[key]) {\n return cache[key].apply(null, linkedValues);\n }\n }\n var proc2 = Function.apply(null, linkedNames.concat(src));\n if (cache) {\n cache[key] = proc2;\n }\n return proc2.apply(null, linkedValues);\n }\n return {\n global: globalBlock,\n link,\n block,\n proc,\n scope,\n cond: conditional,\n compile\n };\n }\n var CUTE_COMPONENTS = \"xyzw\".split(\"\");\n var GL_UNSIGNED_BYTE$7 = 5121;\n var ATTRIB_STATE_POINTER = 1;\n var ATTRIB_STATE_CONSTANT = 2;\n var DYN_FUNC$1 = 0;\n var DYN_PROP$1 = 1;\n var DYN_CONTEXT$1 = 2;\n var DYN_STATE$1 = 3;\n var DYN_THUNK = 4;\n var DYN_CONSTANT$1 = 5;\n var DYN_ARRAY$1 = 6;\n var S_DITHER = \"dither\";\n var S_BLEND_ENABLE = \"blend.enable\";\n var S_BLEND_COLOR = \"blend.color\";\n var S_BLEND_EQUATION = \"blend.equation\";\n var S_BLEND_FUNC = \"blend.func\";\n var S_DEPTH_ENABLE = \"depth.enable\";\n var S_DEPTH_FUNC = \"depth.func\";\n var S_DEPTH_RANGE = \"depth.range\";\n var S_DEPTH_MASK = \"depth.mask\";\n var S_COLOR_MASK = \"colorMask\";\n var S_CULL_ENABLE = \"cull.enable\";\n var S_CULL_FACE = \"cull.face\";\n var S_FRONT_FACE = \"frontFace\";\n var S_LINE_WIDTH = \"lineWidth\";\n var S_POLYGON_OFFSET_ENABLE = \"polygonOffset.enable\";\n var S_POLYGON_OFFSET_OFFSET = \"polygonOffset.offset\";\n var S_SAMPLE_ALPHA = \"sample.alpha\";\n var S_SAMPLE_ENABLE = \"sample.enable\";\n var S_SAMPLE_COVERAGE = \"sample.coverage\";\n var S_STENCIL_ENABLE = \"stencil.enable\";\n var S_STENCIL_MASK = \"stencil.mask\";\n var S_STENCIL_FUNC = \"stencil.func\";\n var S_STENCIL_OPFRONT = \"stencil.opFront\";\n var S_STENCIL_OPBACK = \"stencil.opBack\";\n var S_SCISSOR_ENABLE = \"scissor.enable\";\n var S_SCISSOR_BOX = \"scissor.box\";\n var S_VIEWPORT = \"viewport\";\n var S_PROFILE = \"profile\";\n var S_FRAMEBUFFER = \"framebuffer\";\n var S_VERT = \"vert\";\n var S_FRAG = \"frag\";\n var S_ELEMENTS = \"elements\";\n var S_PRIMITIVE = \"primitive\";\n var S_COUNT = \"count\";\n var S_OFFSET = \"offset\";\n var S_INSTANCES = \"instances\";\n var S_VAO = \"vao\";\n var SUFFIX_WIDTH = \"Width\";\n var SUFFIX_HEIGHT = \"Height\";\n var S_FRAMEBUFFER_WIDTH = S_FRAMEBUFFER + SUFFIX_WIDTH;\n var S_FRAMEBUFFER_HEIGHT = S_FRAMEBUFFER + SUFFIX_HEIGHT;\n var S_VIEWPORT_WIDTH = S_VIEWPORT + SUFFIX_WIDTH;\n var S_VIEWPORT_HEIGHT = S_VIEWPORT + SUFFIX_HEIGHT;\n var S_DRAWINGBUFFER = \"drawingBuffer\";\n var S_DRAWINGBUFFER_WIDTH = S_DRAWINGBUFFER + SUFFIX_WIDTH;\n var S_DRAWINGBUFFER_HEIGHT = S_DRAWINGBUFFER + SUFFIX_HEIGHT;\n var NESTED_OPTIONS = [\n S_BLEND_FUNC,\n S_BLEND_EQUATION,\n S_STENCIL_FUNC,\n S_STENCIL_OPFRONT,\n S_STENCIL_OPBACK,\n S_SAMPLE_COVERAGE,\n S_VIEWPORT,\n S_SCISSOR_BOX,\n S_POLYGON_OFFSET_OFFSET\n ];\n var GL_ARRAY_BUFFER$2 = 34962;\n var GL_ELEMENT_ARRAY_BUFFER$2 = 34963;\n var GL_CULL_FACE = 2884;\n var GL_BLEND = 3042;\n var GL_DITHER = 3024;\n var GL_STENCIL_TEST = 2960;\n var GL_DEPTH_TEST = 2929;\n var GL_SCISSOR_TEST = 3089;\n var GL_POLYGON_OFFSET_FILL = 32823;\n var GL_SAMPLE_ALPHA_TO_COVERAGE = 32926;\n var GL_SAMPLE_COVERAGE = 32928;\n var GL_FLOAT$7 = 5126;\n var GL_FLOAT_VEC2 = 35664;\n var GL_FLOAT_VEC3 = 35665;\n var GL_FLOAT_VEC4 = 35666;\n var GL_INT$2 = 5124;\n var GL_INT_VEC2 = 35667;\n var GL_INT_VEC3 = 35668;\n var GL_INT_VEC4 = 35669;\n var GL_BOOL = 35670;\n var GL_BOOL_VEC2 = 35671;\n var GL_BOOL_VEC3 = 35672;\n var GL_BOOL_VEC4 = 35673;\n var GL_FLOAT_MAT2 = 35674;\n var GL_FLOAT_MAT3 = 35675;\n var GL_FLOAT_MAT4 = 35676;\n var GL_SAMPLER_2D = 35678;\n var GL_SAMPLER_CUBE = 35680;\n var GL_TRIANGLES$1 = 4;\n var GL_FRONT = 1028;\n var GL_BACK = 1029;\n var GL_CW = 2304;\n var GL_CCW = 2305;\n var GL_MIN_EXT = 32775;\n var GL_MAX_EXT = 32776;\n var GL_ALWAYS = 519;\n var GL_KEEP = 7680;\n var GL_ZERO = 0;\n var GL_ONE = 1;\n var GL_FUNC_ADD = 32774;\n var GL_LESS = 513;\n var GL_FRAMEBUFFER$2 = 36160;\n var GL_COLOR_ATTACHMENT0$2 = 36064;\n var blendFuncs = {\n \"0\": 0,\n \"1\": 1,\n \"zero\": 0,\n \"one\": 1,\n \"src color\": 768,\n \"one minus src color\": 769,\n \"src alpha\": 770,\n \"one minus src alpha\": 771,\n \"dst color\": 774,\n \"one minus dst color\": 775,\n \"dst alpha\": 772,\n \"one minus dst alpha\": 773,\n \"constant color\": 32769,\n \"one minus constant color\": 32770,\n \"constant alpha\": 32771,\n \"one minus constant alpha\": 32772,\n \"src alpha saturate\": 776\n };\n var compareFuncs = {\n \"never\": 512,\n \"less\": 513,\n \"<\": 513,\n \"equal\": 514,\n \"=\": 514,\n \"==\": 514,\n \"===\": 514,\n \"lequal\": 515,\n \"<=\": 515,\n \"greater\": 516,\n \">\": 516,\n \"notequal\": 517,\n \"!=\": 517,\n \"!==\": 517,\n \"gequal\": 518,\n \">=\": 518,\n \"always\": 519\n };\n var stencilOps = {\n \"0\": 0,\n \"zero\": 0,\n \"keep\": 7680,\n \"replace\": 7681,\n \"increment\": 7682,\n \"decrement\": 7683,\n \"increment wrap\": 34055,\n \"decrement wrap\": 34056,\n \"invert\": 5386\n };\n var orientationType = {\n \"cw\": GL_CW,\n \"ccw\": GL_CCW\n };\n function isBufferArgs(x) {\n return Array.isArray(x) || isTypedArray(x) || isNDArrayLike(x);\n }\n function sortState(state) {\n return state.sort(function(a, b) {\n if (a === S_VIEWPORT) {\n return -1;\n } else if (b === S_VIEWPORT) {\n return 1;\n }\n return a < b ? -1 : 1;\n });\n }\n function Declaration(thisDep, contextDep, propDep, append) {\n this.thisDep = thisDep;\n this.contextDep = contextDep;\n this.propDep = propDep;\n this.append = append;\n }\n function isStatic(decl) {\n return decl && !(decl.thisDep || decl.contextDep || decl.propDep);\n }\n function createStaticDecl(append) {\n return new Declaration(false, false, false, append);\n }\n function createDynamicDecl(dyn, append) {\n var type = dyn.type;\n if (type === DYN_FUNC$1) {\n var numArgs = dyn.data.length;\n return new Declaration(\n true,\n numArgs >= 1,\n numArgs >= 2,\n append\n );\n } else if (type === DYN_THUNK) {\n var data = dyn.data;\n return new Declaration(\n data.thisDep,\n data.contextDep,\n data.propDep,\n append\n );\n } else if (type === DYN_CONSTANT$1) {\n return new Declaration(\n false,\n false,\n false,\n append\n );\n } else if (type === DYN_ARRAY$1) {\n var thisDep = false;\n var contextDep = false;\n var propDep = false;\n for (var i = 0; i < dyn.data.length; ++i) {\n var subDyn = dyn.data[i];\n if (subDyn.type === DYN_PROP$1) {\n propDep = true;\n } else if (subDyn.type === DYN_CONTEXT$1) {\n contextDep = true;\n } else if (subDyn.type === DYN_STATE$1) {\n thisDep = true;\n } else if (subDyn.type === DYN_FUNC$1) {\n thisDep = true;\n var subArgs = subDyn.data;\n if (subArgs >= 1) {\n contextDep = true;\n }\n if (subArgs >= 2) {\n propDep = true;\n }\n } else if (subDyn.type === DYN_THUNK) {\n thisDep = thisDep || subDyn.data.thisDep;\n contextDep = contextDep || subDyn.data.contextDep;\n propDep = propDep || subDyn.data.propDep;\n }\n }\n return new Declaration(\n thisDep,\n contextDep,\n propDep,\n append\n );\n } else {\n return new Declaration(\n type === DYN_STATE$1,\n type === DYN_CONTEXT$1,\n type === DYN_PROP$1,\n append\n );\n }\n }\n var SCOPE_DECL = new Declaration(false, false, false, function() {\n });\n function reglCore(gl, stringStore, extensions, limits, bufferState, elementState, textureState, framebufferState, uniformState, attributeState, shaderState, drawState, contextState, timer, cachedCode, config) {\n var AttributeRecord2 = attributeState.Record;\n var blendEquations = {\n \"add\": 32774,\n \"subtract\": 32778,\n \"reverse subtract\": 32779\n };\n if (extensions.ext_blend_minmax) {\n blendEquations.min = GL_MIN_EXT;\n blendEquations.max = GL_MAX_EXT;\n }\n var extInstancing = extensions.angle_instanced_arrays;\n var extDrawBuffers = extensions.webgl_draw_buffers;\n var extVertexArrays = extensions.oes_vertex_array_object;\n var currentState = {\n dirty: true,\n profile: config.profile\n };\n var nextState = {};\n var GL_STATE_NAMES = [];\n var GL_FLAGS = {};\n var GL_VARIABLES = {};\n function propName(name) {\n return name.replace(\".\", \"_\");\n }\n function stateFlag(sname, cap, init) {\n var name = propName(sname);\n GL_STATE_NAMES.push(sname);\n nextState[name] = currentState[name] = !!init;\n GL_FLAGS[name] = cap;\n }\n function stateVariable(sname, func, init) {\n var name = propName(sname);\n GL_STATE_NAMES.push(sname);\n if (Array.isArray(init)) {\n currentState[name] = init.slice();\n nextState[name] = init.slice();\n } else {\n currentState[name] = nextState[name] = init;\n }\n GL_VARIABLES[name] = func;\n }\n function hasVariableReference(exp) {\n if (!isNaN(exp)) {\n return false;\n }\n return true;\n }\n stateFlag(S_DITHER, GL_DITHER);\n stateFlag(S_BLEND_ENABLE, GL_BLEND);\n stateVariable(S_BLEND_COLOR, \"blendColor\", [0, 0, 0, 0]);\n stateVariable(\n S_BLEND_EQUATION,\n \"blendEquationSeparate\",\n [GL_FUNC_ADD, GL_FUNC_ADD]\n );\n stateVariable(\n S_BLEND_FUNC,\n \"blendFuncSeparate\",\n [GL_ONE, GL_ZERO, GL_ONE, GL_ZERO]\n );\n stateFlag(S_DEPTH_ENABLE, GL_DEPTH_TEST, true);\n stateVariable(S_DEPTH_FUNC, \"depthFunc\", GL_LESS);\n stateVariable(S_DEPTH_RANGE, \"depthRange\", [0, 1]);\n stateVariable(S_DEPTH_MASK, \"depthMask\", true);\n stateVariable(S_COLOR_MASK, S_COLOR_MASK, [true, true, true, true]);\n stateFlag(S_CULL_ENABLE, GL_CULL_FACE);\n stateVariable(S_CULL_FACE, \"cullFace\", GL_BACK);\n stateVariable(S_FRONT_FACE, S_FRONT_FACE, GL_CCW);\n stateVariable(S_LINE_WIDTH, S_LINE_WIDTH, 1);\n stateFlag(S_POLYGON_OFFSET_ENABLE, GL_POLYGON_OFFSET_FILL);\n stateVariable(S_POLYGON_OFFSET_OFFSET, \"polygonOffset\", [0, 0]);\n stateFlag(S_SAMPLE_ALPHA, GL_SAMPLE_ALPHA_TO_COVERAGE);\n stateFlag(S_SAMPLE_ENABLE, GL_SAMPLE_COVERAGE);\n stateVariable(S_SAMPLE_COVERAGE, \"sampleCoverage\", [1, false]);\n stateFlag(S_STENCIL_ENABLE, GL_STENCIL_TEST);\n stateVariable(S_STENCIL_MASK, \"stencilMask\", -1);\n stateVariable(S_STENCIL_FUNC, \"stencilFunc\", [GL_ALWAYS, 0, -1]);\n stateVariable(\n S_STENCIL_OPFRONT,\n \"stencilOpSeparate\",\n [GL_FRONT, GL_KEEP, GL_KEEP, GL_KEEP]\n );\n stateVariable(\n S_STENCIL_OPBACK,\n \"stencilOpSeparate\",\n [GL_BACK, GL_KEEP, GL_KEEP, GL_KEEP]\n );\n stateFlag(S_SCISSOR_ENABLE, GL_SCISSOR_TEST);\n stateVariable(\n S_SCISSOR_BOX,\n \"scissor\",\n [0, 0, gl.drawingBufferWidth, gl.drawingBufferHeight]\n );\n stateVariable(\n S_VIEWPORT,\n S_VIEWPORT,\n [0, 0, gl.drawingBufferWidth, gl.drawingBufferHeight]\n );\n var sharedState = {\n gl,\n context: contextState,\n strings: stringStore,\n next: nextState,\n current: currentState,\n draw: drawState,\n elements: elementState,\n buffer: bufferState,\n shader: shaderState,\n attributes: attributeState.state,\n vao: attributeState,\n uniforms: uniformState,\n framebuffer: framebufferState,\n extensions,\n timer,\n isBufferArgs\n };\n var sharedConstants = {\n primTypes,\n compareFuncs,\n blendFuncs,\n blendEquations,\n stencilOps,\n glTypes,\n orientationType\n };\n if (extDrawBuffers) {\n sharedConstants.backBuffer = [GL_BACK];\n sharedConstants.drawBuffer = loop(limits.maxDrawbuffers, function(i) {\n if (i === 0) {\n return [0];\n }\n return loop(i, function(j) {\n return GL_COLOR_ATTACHMENT0$2 + j;\n });\n });\n }\n var drawCallCounter = 0;\n function createREGLEnvironment() {\n var env = createEnvironment({ cache: cachedCode });\n var link = env.link;\n var global2 = env.global;\n env.id = drawCallCounter++;\n env.batchId = \"0\";\n var SHARED = link(sharedState);\n var shared = env.shared = {\n props: \"a0\"\n };\n Object.keys(sharedState).forEach(function(prop) {\n shared[prop] = global2.def(SHARED, \".\", prop);\n });\n var nextVars = env.next = {};\n var currentVars = env.current = {};\n Object.keys(GL_VARIABLES).forEach(function(variable) {\n if (Array.isArray(currentState[variable])) {\n nextVars[variable] = global2.def(shared.next, \".\", variable);\n currentVars[variable] = global2.def(shared.current, \".\", variable);\n }\n });\n var constants = env.constants = {};\n Object.keys(sharedConstants).forEach(function(name) {\n constants[name] = global2.def(JSON.stringify(sharedConstants[name]));\n });\n env.invoke = function(block, x) {\n switch (x.type) {\n case DYN_FUNC$1:\n var argList = [\n \"this\",\n shared.context,\n shared.props,\n env.batchId\n ];\n return block.def(\n link(x.data),\n \".call(\",\n argList.slice(0, Math.max(x.data.length + 1, 4)),\n \")\"\n );\n case DYN_PROP$1:\n return block.def(shared.props, x.data);\n case DYN_CONTEXT$1:\n return block.def(shared.context, x.data);\n case DYN_STATE$1:\n return block.def(\"this\", x.data);\n case DYN_THUNK:\n x.data.append(env, block);\n return x.data.ref;\n case DYN_CONSTANT$1:\n return x.data.toString();\n case DYN_ARRAY$1:\n return x.data.map(function(y) {\n return env.invoke(block, y);\n });\n }\n };\n env.attribCache = {};\n var scopeAttribs = {};\n env.scopeAttrib = function(name) {\n var id = stringStore.id(name);\n if (id in scopeAttribs) {\n return scopeAttribs[id];\n }\n var binding = attributeState.scope[id];\n if (!binding) {\n binding = attributeState.scope[id] = new AttributeRecord2();\n }\n var result = scopeAttribs[id] = link(binding);\n return result;\n };\n return env;\n }\n function parseProfile(options) {\n var staticOptions = options.static;\n var dynamicOptions = options.dynamic;\n var profileEnable;\n if (S_PROFILE in staticOptions) {\n var value = !!staticOptions[S_PROFILE];\n profileEnable = createStaticDecl(function(env, scope) {\n return value;\n });\n profileEnable.enable = value;\n } else if (S_PROFILE in dynamicOptions) {\n var dyn = dynamicOptions[S_PROFILE];\n profileEnable = createDynamicDecl(dyn, function(env, scope) {\n return env.invoke(scope, dyn);\n });\n }\n return profileEnable;\n }\n function parseFramebuffer(options, env) {\n var staticOptions = options.static;\n var dynamicOptions = options.dynamic;\n if (S_FRAMEBUFFER in staticOptions) {\n var framebuffer = staticOptions[S_FRAMEBUFFER];\n if (framebuffer) {\n framebuffer = framebufferState.getFramebuffer(framebuffer);\n return createStaticDecl(function(env2, block) {\n var FRAMEBUFFER = env2.link(framebuffer);\n var shared = env2.shared;\n block.set(\n shared.framebuffer,\n \".next\",\n FRAMEBUFFER\n );\n var CONTEXT = shared.context;\n block.set(\n CONTEXT,\n \".\" + S_FRAMEBUFFER_WIDTH,\n FRAMEBUFFER + \".width\"\n );\n block.set(\n CONTEXT,\n \".\" + S_FRAMEBUFFER_HEIGHT,\n FRAMEBUFFER + \".height\"\n );\n return FRAMEBUFFER;\n });\n } else {\n return createStaticDecl(function(env2, scope) {\n var shared = env2.shared;\n scope.set(\n shared.framebuffer,\n \".next\",\n \"null\"\n );\n var CONTEXT = shared.context;\n scope.set(\n CONTEXT,\n \".\" + S_FRAMEBUFFER_WIDTH,\n CONTEXT + \".\" + S_DRAWINGBUFFER_WIDTH\n );\n scope.set(\n CONTEXT,\n \".\" + S_FRAMEBUFFER_HEIGHT,\n CONTEXT + \".\" + S_DRAWINGBUFFER_HEIGHT\n );\n return \"null\";\n });\n }\n } else if (S_FRAMEBUFFER in dynamicOptions) {\n var dyn = dynamicOptions[S_FRAMEBUFFER];\n return createDynamicDecl(dyn, function(env2, scope) {\n var FRAMEBUFFER_FUNC = env2.invoke(scope, dyn);\n var shared = env2.shared;\n var FRAMEBUFFER_STATE = shared.framebuffer;\n var FRAMEBUFFER = scope.def(\n FRAMEBUFFER_STATE,\n \".getFramebuffer(\",\n FRAMEBUFFER_FUNC,\n \")\"\n );\n scope.set(\n FRAMEBUFFER_STATE,\n \".next\",\n FRAMEBUFFER\n );\n var CONTEXT = shared.context;\n scope.set(\n CONTEXT,\n \".\" + S_FRAMEBUFFER_WIDTH,\n FRAMEBUFFER + \"?\" + FRAMEBUFFER + \".width:\" + CONTEXT + \".\" + S_DRAWINGBUFFER_WIDTH\n );\n scope.set(\n CONTEXT,\n \".\" + S_FRAMEBUFFER_HEIGHT,\n FRAMEBUFFER + \"?\" + FRAMEBUFFER + \".height:\" + CONTEXT + \".\" + S_DRAWINGBUFFER_HEIGHT\n );\n return FRAMEBUFFER;\n });\n } else {\n return null;\n }\n }\n function parseViewportScissor(options, framebuffer, env) {\n var staticOptions = options.static;\n var dynamicOptions = options.dynamic;\n function parseBox(param) {\n if (param in staticOptions) {\n var box = staticOptions[param];\n var isStatic2 = true;\n var x = box.x | 0;\n var y = box.y | 0;\n var w, h;\n if (\"width\" in box) {\n w = box.width | 0;\n } else {\n isStatic2 = false;\n }\n if (\"height\" in box) {\n h = box.height | 0;\n } else {\n isStatic2 = false;\n }\n return new Declaration(\n !isStatic2 && framebuffer && framebuffer.thisDep,\n !isStatic2 && framebuffer && framebuffer.contextDep,\n !isStatic2 && framebuffer && framebuffer.propDep,\n function(env2, scope) {\n var CONTEXT = env2.shared.context;\n var BOX_W = w;\n if (!(\"width\" in box)) {\n BOX_W = scope.def(CONTEXT, \".\", S_FRAMEBUFFER_WIDTH, \"-\", x);\n }\n var BOX_H = h;\n if (!(\"height\" in box)) {\n BOX_H = scope.def(CONTEXT, \".\", S_FRAMEBUFFER_HEIGHT, \"-\", y);\n }\n return [x, y, BOX_W, BOX_H];\n }\n );\n } else if (param in dynamicOptions) {\n var dynBox = dynamicOptions[param];\n var result = createDynamicDecl(dynBox, function(env2, scope) {\n var BOX = env2.invoke(scope, dynBox);\n var CONTEXT = env2.shared.context;\n var BOX_X = scope.def(BOX, \".x|0\");\n var BOX_Y = scope.def(BOX, \".y|0\");\n var BOX_W = scope.def(\n '\"width\" in ',\n BOX,\n \"?\",\n BOX,\n \".width|0:\",\n \"(\",\n CONTEXT,\n \".\",\n S_FRAMEBUFFER_WIDTH,\n \"-\",\n BOX_X,\n \")\"\n );\n var BOX_H = scope.def(\n '\"height\" in ',\n BOX,\n \"?\",\n BOX,\n \".height|0:\",\n \"(\",\n CONTEXT,\n \".\",\n S_FRAMEBUFFER_HEIGHT,\n \"-\",\n BOX_Y,\n \")\"\n );\n return [BOX_X, BOX_Y, BOX_W, BOX_H];\n });\n if (framebuffer) {\n result.thisDep = result.thisDep || framebuffer.thisDep;\n result.contextDep = result.contextDep || framebuffer.contextDep;\n result.propDep = result.propDep || framebuffer.propDep;\n }\n return result;\n } else if (framebuffer) {\n return new Declaration(\n framebuffer.thisDep,\n framebuffer.contextDep,\n framebuffer.propDep,\n function(env2, scope) {\n var CONTEXT = env2.shared.context;\n return [\n 0,\n 0,\n scope.def(CONTEXT, \".\", S_FRAMEBUFFER_WIDTH),\n scope.def(CONTEXT, \".\", S_FRAMEBUFFER_HEIGHT)\n ];\n }\n );\n } else {\n return null;\n }\n }\n var viewport = parseBox(S_VIEWPORT);\n if (viewport) {\n var prevViewport = viewport;\n viewport = new Declaration(\n viewport.thisDep,\n viewport.contextDep,\n viewport.propDep,\n function(env2, scope) {\n var VIEWPORT = prevViewport.append(env2, scope);\n var CONTEXT = env2.shared.context;\n scope.set(\n CONTEXT,\n \".\" + S_VIEWPORT_WIDTH,\n VIEWPORT[2]\n );\n scope.set(\n CONTEXT,\n \".\" + S_VIEWPORT_HEIGHT,\n VIEWPORT[3]\n );\n return VIEWPORT;\n }\n );\n }\n return {\n viewport,\n scissor_box: parseBox(S_SCISSOR_BOX)\n };\n }\n function parseAttribLocations(options, attributes) {\n var staticOptions = options.static;\n var staticProgram = typeof staticOptions[S_FRAG] === \"string\" && typeof staticOptions[S_VERT] === \"string\";\n if (staticProgram) {\n if (Object.keys(attributes.dynamic).length > 0) {\n return null;\n }\n var staticAttributes = attributes.static;\n var sAttributes = Object.keys(staticAttributes);\n if (sAttributes.length > 0 && typeof staticAttributes[sAttributes[0]] === \"number\") {\n var bindings = [];\n for (var i = 0; i < sAttributes.length; ++i) {\n bindings.push([staticAttributes[sAttributes[i]] | 0, sAttributes[i]]);\n }\n return bindings;\n }\n }\n return null;\n }\n function parseProgram(options, env, attribLocations) {\n var staticOptions = options.static;\n var dynamicOptions = options.dynamic;\n function parseShader(name) {\n if (name in staticOptions) {\n var id = stringStore.id(staticOptions[name]);\n var result = createStaticDecl(function() {\n return id;\n });\n result.id = id;\n return result;\n } else if (name in dynamicOptions) {\n var dyn = dynamicOptions[name];\n return createDynamicDecl(dyn, function(env2, scope) {\n var str = env2.invoke(scope, dyn);\n var id2 = scope.def(env2.shared.strings, \".id(\", str, \")\");\n return id2;\n });\n }\n return null;\n }\n var frag = parseShader(S_FRAG);\n var vert = parseShader(S_VERT);\n var program = null;\n var progVar;\n if (isStatic(frag) && isStatic(vert)) {\n program = shaderState.program(vert.id, frag.id, null, attribLocations);\n progVar = createStaticDecl(function(env2, scope) {\n return env2.link(program);\n });\n } else {\n progVar = new Declaration(\n frag && frag.thisDep || vert && vert.thisDep,\n frag && frag.contextDep || vert && vert.contextDep,\n frag && frag.propDep || vert && vert.propDep,\n function(env2, scope) {\n var SHADER_STATE = env2.shared.shader;\n var fragId;\n if (frag) {\n fragId = frag.append(env2, scope);\n } else {\n fragId = scope.def(SHADER_STATE, \".\", S_FRAG);\n }\n var vertId;\n if (vert) {\n vertId = vert.append(env2, scope);\n } else {\n vertId = scope.def(SHADER_STATE, \".\", S_VERT);\n }\n var progDef = SHADER_STATE + \".program(\" + vertId + \",\" + fragId;\n return scope.def(progDef + \")\");\n }\n );\n }\n return {\n frag,\n vert,\n progVar,\n program\n };\n }\n function parseDraw(options, env) {\n var staticOptions = options.static;\n var dynamicOptions = options.dynamic;\n var staticDraw = {};\n var vaoActive = false;\n function parseVAO() {\n if (S_VAO in staticOptions) {\n var vao2 = staticOptions[S_VAO];\n if (vao2 !== null && attributeState.getVAO(vao2) === null) {\n vao2 = attributeState.createVAO(vao2);\n }\n vaoActive = true;\n staticDraw.vao = vao2;\n return createStaticDecl(function(env2) {\n var vaoRef = attributeState.getVAO(vao2);\n if (vaoRef) {\n return env2.link(vaoRef);\n } else {\n return \"null\";\n }\n });\n } else if (S_VAO in dynamicOptions) {\n vaoActive = true;\n var dyn = dynamicOptions[S_VAO];\n return createDynamicDecl(dyn, function(env2, scope) {\n var vaoRef = env2.invoke(scope, dyn);\n return scope.def(env2.shared.vao + \".getVAO(\" + vaoRef + \")\");\n });\n }\n return null;\n }\n var vao = parseVAO();\n var elementsActive = false;\n function parseElements() {\n if (S_ELEMENTS in staticOptions) {\n var elements2 = staticOptions[S_ELEMENTS];\n staticDraw.elements = elements2;\n if (isBufferArgs(elements2)) {\n var e = staticDraw.elements = elementState.create(elements2, true);\n elements2 = elementState.getElements(e);\n elementsActive = true;\n } else if (elements2) {\n elements2 = elementState.getElements(elements2);\n elementsActive = true;\n }\n var result = createStaticDecl(function(env2, scope) {\n if (elements2) {\n var result2 = env2.link(elements2);\n env2.ELEMENTS = result2;\n return result2;\n }\n env2.ELEMENTS = null;\n return null;\n });\n result.value = elements2;\n return result;\n } else if (S_ELEMENTS in dynamicOptions) {\n elementsActive = true;\n var dyn = dynamicOptions[S_ELEMENTS];\n return createDynamicDecl(dyn, function(env2, scope) {\n var shared = env2.shared;\n var IS_BUFFER_ARGS = shared.isBufferArgs;\n var ELEMENT_STATE = shared.elements;\n var elementDefn = env2.invoke(scope, dyn);\n var elements3 = scope.def(\"null\");\n var elementStream = scope.def(IS_BUFFER_ARGS, \"(\", elementDefn, \")\");\n var ifte = env2.cond(elementStream).then(elements3, \"=\", ELEMENT_STATE, \".createStream(\", elementDefn, \");\").else(elements3, \"=\", ELEMENT_STATE, \".getElements(\", elementDefn, \");\");\n scope.entry(ifte);\n scope.exit(\n env2.cond(elementStream).then(ELEMENT_STATE, \".destroyStream(\", elements3, \");\")\n );\n env2.ELEMENTS = elements3;\n return elements3;\n });\n } else if (vaoActive) {\n return new Declaration(\n vao.thisDep,\n vao.contextDep,\n vao.propDep,\n function(env2, scope) {\n return scope.def(env2.shared.vao + \".currentVAO?\" + env2.shared.elements + \".getElements(\" + env2.shared.vao + \".currentVAO.elements):null\");\n }\n );\n }\n return null;\n }\n var elements = parseElements();\n function parsePrimitive() {\n if (S_PRIMITIVE in staticOptions) {\n var primitive2 = staticOptions[S_PRIMITIVE];\n staticDraw.primitive = primitive2;\n return createStaticDecl(function(env2, scope) {\n return primTypes[primitive2];\n });\n } else if (S_PRIMITIVE in dynamicOptions) {\n var dynPrimitive = dynamicOptions[S_PRIMITIVE];\n return createDynamicDecl(dynPrimitive, function(env2, scope) {\n var PRIM_TYPES = env2.constants.primTypes;\n var prim = env2.invoke(scope, dynPrimitive);\n return scope.def(PRIM_TYPES, \"[\", prim, \"]\");\n });\n } else if (elementsActive) {\n if (isStatic(elements)) {\n if (elements.value) {\n return createStaticDecl(function(env2, scope) {\n return scope.def(env2.ELEMENTS, \".primType\");\n });\n } else {\n return createStaticDecl(function() {\n return GL_TRIANGLES$1;\n });\n }\n } else {\n return new Declaration(\n elements.thisDep,\n elements.contextDep,\n elements.propDep,\n function(env2, scope) {\n var elements2 = env2.ELEMENTS;\n return scope.def(elements2, \"?\", elements2, \".primType:\", GL_TRIANGLES$1);\n }\n );\n }\n } else if (vaoActive) {\n return new Declaration(\n vao.thisDep,\n vao.contextDep,\n vao.propDep,\n function(env2, scope) {\n return scope.def(env2.shared.vao + \".currentVAO?\" + env2.shared.vao + \".currentVAO.primitive:\" + GL_TRIANGLES$1);\n }\n );\n }\n return null;\n }\n function parseParam(param, isOffset) {\n if (param in staticOptions) {\n var value = staticOptions[param] | 0;\n if (isOffset) {\n staticDraw.offset = value;\n } else {\n staticDraw.instances = value;\n }\n return createStaticDecl(function(env2, scope) {\n if (isOffset) {\n env2.OFFSET = value;\n }\n return value;\n });\n } else if (param in dynamicOptions) {\n var dynValue = dynamicOptions[param];\n return createDynamicDecl(dynValue, function(env2, scope) {\n var result = env2.invoke(scope, dynValue);\n if (isOffset) {\n env2.OFFSET = result;\n }\n return result;\n });\n } else if (isOffset) {\n if (elementsActive) {\n return createStaticDecl(function(env2, scope) {\n env2.OFFSET = 0;\n return 0;\n });\n } else if (vaoActive) {\n return new Declaration(\n vao.thisDep,\n vao.contextDep,\n vao.propDep,\n function(env2, scope) {\n return scope.def(env2.shared.vao + \".currentVAO?\" + env2.shared.vao + \".currentVAO.offset:0\");\n }\n );\n }\n } else if (vaoActive) {\n return new Declaration(\n vao.thisDep,\n vao.contextDep,\n vao.propDep,\n function(env2, scope) {\n return scope.def(env2.shared.vao + \".currentVAO?\" + env2.shared.vao + \".currentVAO.instances:-1\");\n }\n );\n }\n return null;\n }\n var OFFSET = parseParam(S_OFFSET, true);\n function parseVertCount() {\n if (S_COUNT in staticOptions) {\n var count2 = staticOptions[S_COUNT] | 0;\n staticDraw.count = count2;\n return createStaticDecl(function() {\n return count2;\n });\n } else if (S_COUNT in dynamicOptions) {\n var dynCount = dynamicOptions[S_COUNT];\n return createDynamicDecl(dynCount, function(env2, scope) {\n var result2 = env2.invoke(scope, dynCount);\n return result2;\n });\n } else if (elementsActive) {\n if (isStatic(elements)) {\n if (elements) {\n if (OFFSET) {\n return new Declaration(\n OFFSET.thisDep,\n OFFSET.contextDep,\n OFFSET.propDep,\n function(env2, scope) {\n var result2 = scope.def(\n env2.ELEMENTS,\n \".vertCount-\",\n env2.OFFSET\n );\n return result2;\n }\n );\n } else {\n return createStaticDecl(function(env2, scope) {\n return scope.def(env2.ELEMENTS, \".vertCount\");\n });\n }\n } else {\n var result = createStaticDecl(function() {\n return -1;\n });\n return result;\n }\n } else {\n var variable = new Declaration(\n elements.thisDep || OFFSET.thisDep,\n elements.contextDep || OFFSET.contextDep,\n elements.propDep || OFFSET.propDep,\n function(env2, scope) {\n var elements2 = env2.ELEMENTS;\n if (env2.OFFSET) {\n return scope.def(\n elements2,\n \"?\",\n elements2,\n \".vertCount-\",\n env2.OFFSET,\n \":-1\"\n );\n }\n return scope.def(elements2, \"?\", elements2, \".vertCount:-1\");\n }\n );\n return variable;\n }\n } else if (vaoActive) {\n var countVariable = new Declaration(\n vao.thisDep,\n vao.contextDep,\n vao.propDep,\n function(env2, scope) {\n return scope.def(env2.shared.vao, \".currentVAO?\", env2.shared.vao, \".currentVAO.count:-1\");\n }\n );\n return countVariable;\n }\n return null;\n }\n var primitive = parsePrimitive();\n var count = parseVertCount();\n var instances = parseParam(S_INSTANCES, false);\n return {\n elements,\n primitive,\n count,\n instances,\n offset: OFFSET,\n vao,\n vaoActive,\n elementsActive,\n // static draw props\n static: staticDraw\n };\n }\n function parseGLState(options, env) {\n var staticOptions = options.static;\n var dynamicOptions = options.dynamic;\n var STATE = {};\n GL_STATE_NAMES.forEach(function(prop) {\n var param = propName(prop);\n function parseParam(parseStatic, parseDynamic) {\n if (prop in staticOptions) {\n var value = parseStatic(staticOptions[prop]);\n STATE[param] = createStaticDecl(function() {\n return value;\n });\n } else if (prop in dynamicOptions) {\n var dyn = dynamicOptions[prop];\n STATE[param] = createDynamicDecl(dyn, function(env2, scope) {\n return parseDynamic(env2, scope, env2.invoke(scope, dyn));\n });\n }\n }\n switch (prop) {\n case S_CULL_ENABLE:\n case S_BLEND_ENABLE:\n case S_DITHER:\n case S_STENCIL_ENABLE:\n case S_DEPTH_ENABLE:\n case S_SCISSOR_ENABLE:\n case S_POLYGON_OFFSET_ENABLE:\n case S_SAMPLE_ALPHA:\n case S_SAMPLE_ENABLE:\n case S_DEPTH_MASK:\n return parseParam(\n function(value) {\n return value;\n },\n function(env2, scope, value) {\n return value;\n }\n );\n case S_DEPTH_FUNC:\n return parseParam(\n function(value) {\n return compareFuncs[value];\n },\n function(env2, scope, value) {\n var COMPARE_FUNCS = env2.constants.compareFuncs;\n return scope.def(COMPARE_FUNCS, \"[\", value, \"]\");\n }\n );\n case S_DEPTH_RANGE:\n return parseParam(\n function(value) {\n return value;\n },\n function(env2, scope, value) {\n var Z_NEAR = scope.def(\"+\", value, \"[0]\");\n var Z_FAR = scope.def(\"+\", value, \"[1]\");\n return [Z_NEAR, Z_FAR];\n }\n );\n case S_BLEND_FUNC:\n return parseParam(\n function(value) {\n var srcRGB = \"srcRGB\" in value ? value.srcRGB : value.src;\n var srcAlpha = \"srcAlpha\" in value ? value.srcAlpha : value.src;\n var dstRGB = \"dstRGB\" in value ? value.dstRGB : value.dst;\n var dstAlpha = \"dstAlpha\" in value ? value.dstAlpha : value.dst;\n return [\n blendFuncs[srcRGB],\n blendFuncs[dstRGB],\n blendFuncs[srcAlpha],\n blendFuncs[dstAlpha]\n ];\n },\n function(env2, scope, value) {\n var BLEND_FUNCS = env2.constants.blendFuncs;\n function read(prefix, suffix) {\n var func = scope.def(\n '\"',\n prefix,\n suffix,\n '\" in ',\n value,\n \"?\",\n value,\n \".\",\n prefix,\n suffix,\n \":\",\n value,\n \".\",\n prefix\n );\n return func;\n }\n var srcRGB = read(\"src\", \"RGB\");\n var dstRGB = read(\"dst\", \"RGB\");\n var SRC_RGB = scope.def(BLEND_FUNCS, \"[\", srcRGB, \"]\");\n var SRC_ALPHA = scope.def(BLEND_FUNCS, \"[\", read(\"src\", \"Alpha\"), \"]\");\n var DST_RGB = scope.def(BLEND_FUNCS, \"[\", dstRGB, \"]\");\n var DST_ALPHA = scope.def(BLEND_FUNCS, \"[\", read(\"dst\", \"Alpha\"), \"]\");\n return [SRC_RGB, DST_RGB, SRC_ALPHA, DST_ALPHA];\n }\n );\n case S_BLEND_EQUATION:\n return parseParam(\n function(value) {\n if (typeof value === \"string\") {\n return [\n blendEquations[value],\n blendEquations[value]\n ];\n } else if (typeof value === \"object\") {\n return [\n blendEquations[value.rgb],\n blendEquations[value.alpha]\n ];\n } else {\n }\n },\n function(env2, scope, value) {\n var BLEND_EQUATIONS = env2.constants.blendEquations;\n var RGB = scope.def();\n var ALPHA = scope.def();\n var ifte = env2.cond(\"typeof \", value, '===\"string\"');\n ifte.then(\n RGB,\n \"=\",\n ALPHA,\n \"=\",\n BLEND_EQUATIONS,\n \"[\",\n value,\n \"];\"\n );\n ifte.else(\n RGB,\n \"=\",\n BLEND_EQUATIONS,\n \"[\",\n value,\n \".rgb];\",\n ALPHA,\n \"=\",\n BLEND_EQUATIONS,\n \"[\",\n value,\n \".alpha];\"\n );\n scope(ifte);\n return [RGB, ALPHA];\n }\n );\n case S_BLEND_COLOR:\n return parseParam(\n function(value) {\n return loop(4, function(i) {\n return +value[i];\n });\n },\n function(env2, scope, value) {\n return loop(4, function(i) {\n return scope.def(\"+\", value, \"[\", i, \"]\");\n });\n }\n );\n case S_STENCIL_MASK:\n return parseParam(\n function(value) {\n return value | 0;\n },\n function(env2, scope, value) {\n return scope.def(value, \"|0\");\n }\n );\n case S_STENCIL_FUNC:\n return parseParam(\n function(value) {\n var cmp = value.cmp || \"keep\";\n var ref = value.ref || 0;\n var mask = \"mask\" in value ? value.mask : -1;\n return [\n compareFuncs[cmp],\n ref,\n mask\n ];\n },\n function(env2, scope, value) {\n var COMPARE_FUNCS = env2.constants.compareFuncs;\n var cmp = scope.def(\n '\"cmp\" in ',\n value,\n \"?\",\n COMPARE_FUNCS,\n \"[\",\n value,\n \".cmp]\",\n \":\",\n GL_KEEP\n );\n var ref = scope.def(value, \".ref|0\");\n var mask = scope.def(\n '\"mask\" in ',\n value,\n \"?\",\n value,\n \".mask|0:-1\"\n );\n return [cmp, ref, mask];\n }\n );\n case S_STENCIL_OPFRONT:\n case S_STENCIL_OPBACK:\n return parseParam(\n function(value) {\n var fail = value.fail || \"keep\";\n var zfail = value.zfail || \"keep\";\n var zpass = value.zpass || \"keep\";\n return [\n prop === S_STENCIL_OPBACK ? GL_BACK : GL_FRONT,\n stencilOps[fail],\n stencilOps[zfail],\n stencilOps[zpass]\n ];\n },\n function(env2, scope, value) {\n var STENCIL_OPS = env2.constants.stencilOps;\n function read(name) {\n return scope.def(\n '\"',\n name,\n '\" in ',\n value,\n \"?\",\n STENCIL_OPS,\n \"[\",\n value,\n \".\",\n name,\n \"]:\",\n GL_KEEP\n );\n }\n return [\n prop === S_STENCIL_OPBACK ? GL_BACK : GL_FRONT,\n read(\"fail\"),\n read(\"zfail\"),\n read(\"zpass\")\n ];\n }\n );\n case S_POLYGON_OFFSET_OFFSET:\n return parseParam(\n function(value) {\n var factor = value.factor | 0;\n var units = value.units | 0;\n return [factor, units];\n },\n function(env2, scope, value) {\n var FACTOR = scope.def(value, \".factor|0\");\n var UNITS = scope.def(value, \".units|0\");\n return [FACTOR, UNITS];\n }\n );\n case S_CULL_FACE:\n return parseParam(\n function(value) {\n var face = 0;\n if (value === \"front\") {\n face = GL_FRONT;\n } else if (value === \"back\") {\n face = GL_BACK;\n }\n return face;\n },\n function(env2, scope, value) {\n return scope.def(value, '===\"front\"?', GL_FRONT, \":\", GL_BACK);\n }\n );\n case S_LINE_WIDTH:\n return parseParam(\n function(value) {\n return value;\n },\n function(env2, scope, value) {\n return value;\n }\n );\n case S_FRONT_FACE:\n return parseParam(\n function(value) {\n return orientationType[value];\n },\n function(env2, scope, value) {\n return scope.def(value + '===\"cw\"?' + GL_CW + \":\" + GL_CCW);\n }\n );\n case S_COLOR_MASK:\n return parseParam(\n function(value) {\n return value.map(function(v) {\n return !!v;\n });\n },\n function(env2, scope, value) {\n return loop(4, function(i) {\n return \"!!\" + value + \"[\" + i + \"]\";\n });\n }\n );\n case S_SAMPLE_COVERAGE:\n return parseParam(\n function(value) {\n var sampleValue = \"value\" in value ? value.value : 1;\n var sampleInvert = !!value.invert;\n return [sampleValue, sampleInvert];\n },\n function(env2, scope, value) {\n var VALUE = scope.def(\n '\"value\" in ',\n value,\n \"?+\",\n value,\n \".value:1\"\n );\n var INVERT = scope.def(\"!!\", value, \".invert\");\n return [VALUE, INVERT];\n }\n );\n }\n });\n return STATE;\n }\n function parseUniforms(uniforms, env) {\n var staticUniforms = uniforms.static;\n var dynamicUniforms = uniforms.dynamic;\n var UNIFORMS = {};\n Object.keys(staticUniforms).forEach(function(name) {\n var value = staticUniforms[name];\n var result;\n if (typeof value === \"number\" || typeof value === \"boolean\") {\n result = createStaticDecl(function() {\n return value;\n });\n } else if (typeof value === \"function\") {\n var reglType = value._reglType;\n if (reglType === \"texture2d\" || reglType === \"textureCube\") {\n result = createStaticDecl(function(env2) {\n return env2.link(value);\n });\n } else if (reglType === \"framebuffer\" || reglType === \"framebufferCube\") {\n result = createStaticDecl(function(env2) {\n return env2.link(value.color[0]);\n });\n } else {\n }\n } else if (isArrayLike(value)) {\n result = createStaticDecl(function(env2) {\n var ITEM = env2.global.def(\n \"[\",\n loop(value.length, function(i) {\n return value[i];\n }),\n \"]\"\n );\n return ITEM;\n });\n } else {\n }\n result.value = value;\n UNIFORMS[name] = result;\n });\n Object.keys(dynamicUniforms).forEach(function(key) {\n var dyn = dynamicUniforms[key];\n UNIFORMS[key] = createDynamicDecl(dyn, function(env2, scope) {\n return env2.invoke(scope, dyn);\n });\n });\n return UNIFORMS;\n }\n function parseAttributes(attributes, env) {\n var staticAttributes = attributes.static;\n var dynamicAttributes = attributes.dynamic;\n var attributeDefs = {};\n Object.keys(staticAttributes).forEach(function(attribute) {\n var value = staticAttributes[attribute];\n var id = stringStore.id(attribute);\n var record = new AttributeRecord2();\n if (isBufferArgs(value)) {\n record.state = ATTRIB_STATE_POINTER;\n record.buffer = bufferState.getBuffer(\n bufferState.create(value, GL_ARRAY_BUFFER$2, false, true)\n );\n record.type = 0;\n } else {\n var buffer = bufferState.getBuffer(value);\n if (buffer) {\n record.state = ATTRIB_STATE_POINTER;\n record.buffer = buffer;\n record.type = 0;\n } else {\n if (\"constant\" in value) {\n var constant = value.constant;\n record.buffer = \"null\";\n record.state = ATTRIB_STATE_CONSTANT;\n if (typeof constant === \"number\") {\n record.x = constant;\n } else {\n CUTE_COMPONENTS.forEach(function(c, i) {\n if (i < constant.length) {\n record[c] = constant[i];\n }\n });\n }\n } else {\n if (isBufferArgs(value.buffer)) {\n buffer = bufferState.getBuffer(\n bufferState.create(value.buffer, GL_ARRAY_BUFFER$2, false, true)\n );\n } else {\n buffer = bufferState.getBuffer(value.buffer);\n }\n var offset = value.offset | 0;\n var stride = value.stride | 0;\n var size = value.size | 0;\n var normalized = !!value.normalized;\n var type = 0;\n if (\"type\" in value) {\n type = glTypes[value.type];\n }\n var divisor = value.divisor | 0;\n record.buffer = buffer;\n record.state = ATTRIB_STATE_POINTER;\n record.size = size;\n record.normalized = normalized;\n record.type = type || buffer.dtype;\n record.offset = offset;\n record.stride = stride;\n record.divisor = divisor;\n }\n }\n }\n attributeDefs[attribute] = createStaticDecl(function(env2, scope) {\n var cache = env2.attribCache;\n if (id in cache) {\n return cache[id];\n }\n var result = {\n isStream: false\n };\n Object.keys(record).forEach(function(key) {\n result[key] = record[key];\n });\n if (record.buffer) {\n result.buffer = env2.link(record.buffer);\n result.type = result.type || result.buffer + \".dtype\";\n }\n cache[id] = result;\n return result;\n });\n });\n Object.keys(dynamicAttributes).forEach(function(attribute) {\n var dyn = dynamicAttributes[attribute];\n function appendAttributeCode(env2, block) {\n var VALUE = env2.invoke(block, dyn);\n var shared = env2.shared;\n var constants = env2.constants;\n var IS_BUFFER_ARGS = shared.isBufferArgs;\n var BUFFER_STATE = shared.buffer;\n var result = {\n isStream: block.def(false)\n };\n var defaultRecord = new AttributeRecord2();\n defaultRecord.state = ATTRIB_STATE_POINTER;\n Object.keys(defaultRecord).forEach(function(key) {\n result[key] = block.def(\"\" + defaultRecord[key]);\n });\n var BUFFER = result.buffer;\n var TYPE = result.type;\n block(\n \"if(\",\n IS_BUFFER_ARGS,\n \"(\",\n VALUE,\n \")){\",\n result.isStream,\n \"=true;\",\n BUFFER,\n \"=\",\n BUFFER_STATE,\n \".createStream(\",\n GL_ARRAY_BUFFER$2,\n \",\",\n VALUE,\n \");\",\n TYPE,\n \"=\",\n BUFFER,\n \".dtype;\",\n \"}else{\",\n BUFFER,\n \"=\",\n BUFFER_STATE,\n \".getBuffer(\",\n VALUE,\n \");\",\n \"if(\",\n BUFFER,\n \"){\",\n TYPE,\n \"=\",\n BUFFER,\n \".dtype;\",\n '}else if(\"constant\" in ',\n VALUE,\n \"){\",\n result.state,\n \"=\",\n ATTRIB_STATE_CONSTANT,\n \";\",\n \"if(typeof \" + VALUE + '.constant === \"number\"){',\n result[CUTE_COMPONENTS[0]],\n \"=\",\n VALUE,\n \".constant;\",\n CUTE_COMPONENTS.slice(1).map(function(n) {\n return result[n];\n }).join(\"=\"),\n \"=0;\",\n \"}else{\",\n CUTE_COMPONENTS.map(function(name, i) {\n return result[name] + \"=\" + VALUE + \".constant.length>\" + i + \"?\" + VALUE + \".constant[\" + i + \"]:0;\";\n }).join(\"\"),\n \"}}else{\",\n \"if(\",\n IS_BUFFER_ARGS,\n \"(\",\n VALUE,\n \".buffer)){\",\n BUFFER,\n \"=\",\n BUFFER_STATE,\n \".createStream(\",\n GL_ARRAY_BUFFER$2,\n \",\",\n VALUE,\n \".buffer);\",\n \"}else{\",\n BUFFER,\n \"=\",\n BUFFER_STATE,\n \".getBuffer(\",\n VALUE,\n \".buffer);\",\n \"}\",\n TYPE,\n '=\"type\" in ',\n VALUE,\n \"?\",\n constants.glTypes,\n \"[\",\n VALUE,\n \".type]:\",\n BUFFER,\n \".dtype;\",\n result.normalized,\n \"=!!\",\n VALUE,\n \".normalized;\"\n );\n function emitReadRecord(name) {\n block(result[name], \"=\", VALUE, \".\", name, \"|0;\");\n }\n emitReadRecord(\"size\");\n emitReadRecord(\"offset\");\n emitReadRecord(\"stride\");\n emitReadRecord(\"divisor\");\n block(\"}}\");\n block.exit(\n \"if(\",\n result.isStream,\n \"){\",\n BUFFER_STATE,\n \".destroyStream(\",\n BUFFER,\n \");\",\n \"}\"\n );\n return result;\n }\n attributeDefs[attribute] = createDynamicDecl(dyn, appendAttributeCode);\n });\n return attributeDefs;\n }\n function parseContext(context) {\n var staticContext = context.static;\n var dynamicContext = context.dynamic;\n var result = {};\n Object.keys(staticContext).forEach(function(name) {\n var value = staticContext[name];\n result[name] = createStaticDecl(function(env, scope) {\n if (typeof value === \"number\" || typeof value === \"boolean\") {\n return \"\" + value;\n } else {\n return env.link(value);\n }\n });\n });\n Object.keys(dynamicContext).forEach(function(name) {\n var dyn = dynamicContext[name];\n result[name] = createDynamicDecl(dyn, function(env, scope) {\n return env.invoke(scope, dyn);\n });\n });\n return result;\n }\n function parseArguments(options, attributes, uniforms, context, env) {\n var staticOptions = options.static;\n var dynamicOptions = options.dynamic;\n var attribLocations = parseAttribLocations(options, attributes);\n var framebuffer = parseFramebuffer(options, env);\n var viewportAndScissor = parseViewportScissor(options, framebuffer, env);\n var draw = parseDraw(options, env);\n var state = parseGLState(options, env);\n var shader = parseProgram(options, env, attribLocations);\n function copyBox(name) {\n var defn = viewportAndScissor[name];\n if (defn) {\n state[name] = defn;\n }\n }\n copyBox(S_VIEWPORT);\n copyBox(propName(S_SCISSOR_BOX));\n var dirty = Object.keys(state).length > 0;\n var result = {\n framebuffer,\n draw,\n shader,\n state,\n dirty,\n scopeVAO: null,\n drawVAO: null,\n useVAO: false,\n attributes: {}\n };\n result.profile = parseProfile(options, env);\n result.uniforms = parseUniforms(uniforms, env);\n result.drawVAO = result.scopeVAO = draw.vao;\n if (!result.drawVAO && shader.program && !attribLocations && extensions.angle_instanced_arrays && draw.static.elements) {\n var useVAO = true;\n var staticBindings = shader.program.attributes.map(function(attr) {\n var binding = attributes.static[attr];\n useVAO = useVAO && !!binding;\n return binding;\n });\n if (useVAO && staticBindings.length > 0) {\n var vao = attributeState.getVAO(attributeState.createVAO({\n attributes: staticBindings,\n elements: draw.static.elements\n }));\n result.drawVAO = new Declaration(null, null, null, function(env2, scope) {\n return env2.link(vao);\n });\n result.useVAO = true;\n }\n }\n if (attribLocations) {\n result.useVAO = true;\n } else {\n result.attributes = parseAttributes(attributes, env);\n }\n result.context = parseContext(context, env);\n return result;\n }\n function emitContext(env, scope, context) {\n var shared = env.shared;\n var CONTEXT = shared.context;\n var contextEnter = env.scope();\n Object.keys(context).forEach(function(name) {\n scope.save(CONTEXT, \".\" + name);\n var defn = context[name];\n var value = defn.append(env, scope);\n if (Array.isArray(value)) {\n contextEnter(CONTEXT, \".\", name, \"=[\", value.join(), \"];\");\n } else {\n contextEnter(CONTEXT, \".\", name, \"=\", value, \";\");\n }\n });\n scope(contextEnter);\n }\n function emitPollFramebuffer(env, scope, framebuffer, skipCheck) {\n var shared = env.shared;\n var GL = shared.gl;\n var FRAMEBUFFER_STATE = shared.framebuffer;\n var EXT_DRAW_BUFFERS;\n if (extDrawBuffers) {\n EXT_DRAW_BUFFERS = scope.def(shared.extensions, \".webgl_draw_buffers\");\n }\n var constants = env.constants;\n var DRAW_BUFFERS = constants.drawBuffer;\n var BACK_BUFFER = constants.backBuffer;\n var NEXT;\n if (framebuffer) {\n NEXT = framebuffer.append(env, scope);\n } else {\n NEXT = scope.def(FRAMEBUFFER_STATE, \".next\");\n }\n if (!skipCheck) {\n scope(\"if(\", NEXT, \"!==\", FRAMEBUFFER_STATE, \".cur){\");\n }\n scope(\n \"if(\",\n NEXT,\n \"){\",\n GL,\n \".bindFramebuffer(\",\n GL_FRAMEBUFFER$2,\n \",\",\n NEXT,\n \".framebuffer);\"\n );\n if (extDrawBuffers) {\n scope(\n EXT_DRAW_BUFFERS,\n \".drawBuffersWEBGL(\",\n DRAW_BUFFERS,\n \"[\",\n NEXT,\n \".colorAttachments.length]);\"\n );\n }\n scope(\n \"}else{\",\n GL,\n \".bindFramebuffer(\",\n GL_FRAMEBUFFER$2,\n \",null);\"\n );\n if (extDrawBuffers) {\n scope(EXT_DRAW_BUFFERS, \".drawBuffersWEBGL(\", BACK_BUFFER, \");\");\n }\n scope(\n \"}\",\n FRAMEBUFFER_STATE,\n \".cur=\",\n NEXT,\n \";\"\n );\n if (!skipCheck) {\n scope(\"}\");\n }\n }\n function emitPollState(env, scope, args) {\n var shared = env.shared;\n var GL = shared.gl;\n var CURRENT_VARS = env.current;\n var NEXT_VARS = env.next;\n var CURRENT_STATE = shared.current;\n var NEXT_STATE = shared.next;\n var block = env.cond(CURRENT_STATE, \".dirty\");\n GL_STATE_NAMES.forEach(function(prop) {\n var param = propName(prop);\n if (param in args.state) {\n return;\n }\n var NEXT, CURRENT;\n if (param in NEXT_VARS) {\n NEXT = NEXT_VARS[param];\n CURRENT = CURRENT_VARS[param];\n var parts = loop(currentState[param].length, function(i) {\n return block.def(NEXT, \"[\", i, \"]\");\n });\n block(env.cond(parts.map(function(p, i) {\n return p + \"!==\" + CURRENT + \"[\" + i + \"]\";\n }).join(\"||\")).then(\n GL,\n \".\",\n GL_VARIABLES[param],\n \"(\",\n parts,\n \");\",\n parts.map(function(p, i) {\n return CURRENT + \"[\" + i + \"]=\" + p;\n }).join(\";\"),\n \";\"\n ));\n } else {\n NEXT = block.def(NEXT_STATE, \".\", param);\n var ifte = env.cond(NEXT, \"!==\", CURRENT_STATE, \".\", param);\n block(ifte);\n if (param in GL_FLAGS) {\n ifte(\n env.cond(NEXT).then(GL, \".enable(\", GL_FLAGS[param], \");\").else(GL, \".disable(\", GL_FLAGS[param], \");\"),\n CURRENT_STATE,\n \".\",\n param,\n \"=\",\n NEXT,\n \";\"\n );\n } else {\n ifte(\n GL,\n \".\",\n GL_VARIABLES[param],\n \"(\",\n NEXT,\n \");\",\n CURRENT_STATE,\n \".\",\n param,\n \"=\",\n NEXT,\n \";\"\n );\n }\n }\n });\n if (Object.keys(args.state).length === 0) {\n block(CURRENT_STATE, \".dirty=false;\");\n }\n scope(block);\n }\n function emitSetOptions(env, scope, options, filter) {\n var shared = env.shared;\n var CURRENT_VARS = env.current;\n var CURRENT_STATE = shared.current;\n var GL = shared.gl;\n var VALUE;\n sortState(Object.keys(options)).forEach(function(param) {\n var defn = options[param];\n if (filter && !filter(defn)) {\n return;\n }\n var variable = defn.append(env, scope);\n if (GL_FLAGS[param]) {\n var flag = GL_FLAGS[param];\n if (isStatic(defn)) {\n VALUE = env.link(variable, { stable: true });\n scope(env.cond(VALUE).then(GL, \".enable(\", flag, \");\").else(GL, \".disable(\", flag, \");\"));\n scope(CURRENT_STATE, \".\", param, \"=\", VALUE, \";\");\n } else {\n scope(env.cond(variable).then(GL, \".enable(\", flag, \");\").else(GL, \".disable(\", flag, \");\"));\n scope(CURRENT_STATE, \".\", param, \"=\", variable, \";\");\n }\n } else if (isArrayLike(variable)) {\n var CURRENT = CURRENT_VARS[param];\n scope(\n GL,\n \".\",\n GL_VARIABLES[param],\n \"(\",\n variable,\n \");\",\n variable.map(function(v, i) {\n return CURRENT + \"[\" + i + \"]=\" + v;\n }).join(\";\"),\n \";\"\n );\n } else {\n if (isStatic(defn)) {\n VALUE = env.link(variable, { stable: true });\n scope(\n GL,\n \".\",\n GL_VARIABLES[param],\n \"(\",\n VALUE,\n \");\",\n CURRENT_STATE,\n \".\",\n param,\n \"=\",\n VALUE,\n \";\"\n );\n } else {\n scope(\n GL,\n \".\",\n GL_VARIABLES[param],\n \"(\",\n variable,\n \");\",\n CURRENT_STATE,\n \".\",\n param,\n \"=\",\n variable,\n \";\"\n );\n }\n }\n });\n }\n function injectExtensions(env, scope) {\n if (extInstancing) {\n env.instancing = scope.def(\n env.shared.extensions,\n \".angle_instanced_arrays\"\n );\n }\n }\n function emitProfile(env, scope, args, useScope, incrementCounter) {\n var shared = env.shared;\n var STATS = env.stats;\n var CURRENT_STATE = shared.current;\n var TIMER = shared.timer;\n var profileArg = args.profile;\n function perfCounter() {\n if (typeof performance === \"undefined\") {\n return \"Date.now()\";\n } else {\n return \"performance.now()\";\n }\n }\n var CPU_START, QUERY_COUNTER;\n function emitProfileStart(block) {\n CPU_START = scope.def();\n block(CPU_START, \"=\", perfCounter(), \";\");\n if (typeof incrementCounter === \"string\") {\n block(STATS, \".count+=\", incrementCounter, \";\");\n } else {\n block(STATS, \".count++;\");\n }\n if (timer) {\n if (useScope) {\n QUERY_COUNTER = scope.def();\n block(QUERY_COUNTER, \"=\", TIMER, \".getNumPendingQueries();\");\n } else {\n block(TIMER, \".beginQuery(\", STATS, \");\");\n }\n }\n }\n function emitProfileEnd(block) {\n block(STATS, \".cpuTime+=\", perfCounter(), \"-\", CPU_START, \";\");\n if (timer) {\n if (useScope) {\n block(\n TIMER,\n \".pushScopeStats(\",\n QUERY_COUNTER,\n \",\",\n TIMER,\n \".getNumPendingQueries(),\",\n STATS,\n \");\"\n );\n } else {\n block(TIMER, \".endQuery();\");\n }\n }\n }\n function scopeProfile(value) {\n var prev = scope.def(CURRENT_STATE, \".profile\");\n scope(CURRENT_STATE, \".profile=\", value, \";\");\n scope.exit(CURRENT_STATE, \".profile=\", prev, \";\");\n }\n var USE_PROFILE;\n if (profileArg) {\n if (isStatic(profileArg)) {\n if (profileArg.enable) {\n emitProfileStart(scope);\n emitProfileEnd(scope.exit);\n scopeProfile(\"true\");\n } else {\n scopeProfile(\"false\");\n }\n return;\n }\n USE_PROFILE = profileArg.append(env, scope);\n scopeProfile(USE_PROFILE);\n } else {\n USE_PROFILE = scope.def(CURRENT_STATE, \".profile\");\n }\n var start = env.block();\n emitProfileStart(start);\n scope(\"if(\", USE_PROFILE, \"){\", start, \"}\");\n var end = env.block();\n emitProfileEnd(end);\n scope.exit(\"if(\", USE_PROFILE, \"){\", end, \"}\");\n }\n function emitAttributes(env, scope, args, attributes, filter) {\n var shared = env.shared;\n function typeLength(x) {\n switch (x) {\n case GL_FLOAT_VEC2:\n case GL_INT_VEC2:\n case GL_BOOL_VEC2:\n return 2;\n case GL_FLOAT_VEC3:\n case GL_INT_VEC3:\n case GL_BOOL_VEC3:\n return 3;\n case GL_FLOAT_VEC4:\n case GL_INT_VEC4:\n case GL_BOOL_VEC4:\n return 4;\n default:\n return 1;\n }\n }\n function emitBindAttribute(ATTRIBUTE, size, record) {\n var GL = shared.gl;\n var LOCATION = scope.def(ATTRIBUTE, \".location\");\n var BINDING = scope.def(shared.attributes, \"[\", LOCATION, \"]\");\n var STATE = record.state;\n var BUFFER = record.buffer;\n var CONST_COMPONENTS = [\n record.x,\n record.y,\n record.z,\n record.w\n ];\n var COMMON_KEYS = [\n \"buffer\",\n \"normalized\",\n \"offset\",\n \"stride\"\n ];\n function emitBuffer() {\n scope(\n \"if(!\",\n BINDING,\n \".buffer){\",\n GL,\n \".enableVertexAttribArray(\",\n LOCATION,\n \");}\"\n );\n var TYPE = record.type;\n var SIZE;\n if (!record.size) {\n SIZE = size;\n } else {\n SIZE = scope.def(record.size, \"||\", size);\n }\n scope(\n \"if(\",\n BINDING,\n \".type!==\",\n TYPE,\n \"||\",\n BINDING,\n \".size!==\",\n SIZE,\n \"||\",\n COMMON_KEYS.map(function(key) {\n return BINDING + \".\" + key + \"!==\" + record[key];\n }).join(\"||\"),\n \"){\",\n GL,\n \".bindBuffer(\",\n GL_ARRAY_BUFFER$2,\n \",\",\n BUFFER,\n \".buffer);\",\n GL,\n \".vertexAttribPointer(\",\n [\n LOCATION,\n SIZE,\n TYPE,\n record.normalized,\n record.stride,\n record.offset\n ],\n \");\",\n BINDING,\n \".type=\",\n TYPE,\n \";\",\n BINDING,\n \".size=\",\n SIZE,\n \";\",\n COMMON_KEYS.map(function(key) {\n return BINDING + \".\" + key + \"=\" + record[key] + \";\";\n }).join(\"\"),\n \"}\"\n );\n if (extInstancing) {\n var DIVISOR = record.divisor;\n scope(\n \"if(\",\n BINDING,\n \".divisor!==\",\n DIVISOR,\n \"){\",\n env.instancing,\n \".vertexAttribDivisorANGLE(\",\n [LOCATION, DIVISOR],\n \");\",\n BINDING,\n \".divisor=\",\n DIVISOR,\n \";}\"\n );\n }\n }\n function emitConstant() {\n scope(\n \"if(\",\n BINDING,\n \".buffer){\",\n GL,\n \".disableVertexAttribArray(\",\n LOCATION,\n \");\",\n BINDING,\n \".buffer=null;\",\n \"}if(\",\n CUTE_COMPONENTS.map(function(c, i) {\n return BINDING + \".\" + c + \"!==\" + CONST_COMPONENTS[i];\n }).join(\"||\"),\n \"){\",\n GL,\n \".vertexAttrib4f(\",\n LOCATION,\n \",\",\n CONST_COMPONENTS,\n \");\",\n CUTE_COMPONENTS.map(function(c, i) {\n return BINDING + \".\" + c + \"=\" + CONST_COMPONENTS[i] + \";\";\n }).join(\"\"),\n \"}\"\n );\n }\n if (STATE === ATTRIB_STATE_POINTER) {\n emitBuffer();\n } else if (STATE === ATTRIB_STATE_CONSTANT) {\n emitConstant();\n } else {\n scope(\"if(\", STATE, \"===\", ATTRIB_STATE_POINTER, \"){\");\n emitBuffer();\n scope(\"}else{\");\n emitConstant();\n scope(\"}\");\n }\n }\n attributes.forEach(function(attribute) {\n var name = attribute.name;\n var arg = args.attributes[name];\n var record;\n if (arg) {\n if (!filter(arg)) {\n return;\n }\n record = arg.append(env, scope);\n } else {\n if (!filter(SCOPE_DECL)) {\n return;\n }\n var scopeAttrib = env.scopeAttrib(name);\n record = {};\n Object.keys(new AttributeRecord2()).forEach(function(key) {\n record[key] = scope.def(scopeAttrib, \".\", key);\n });\n }\n emitBindAttribute(\n env.link(attribute),\n typeLength(attribute.info.type),\n record\n );\n });\n }\n function emitUniforms(env, scope, args, uniforms, filter, isBatchInnerLoop) {\n var shared = env.shared;\n var GL = shared.gl;\n var infix;\n for (var i = 0; i < uniforms.length; ++i) {\n var uniform = uniforms[i];\n var name = uniform.name;\n var type = uniform.info.type;\n var arg = args.uniforms[name];\n var UNIFORM = env.link(uniform);\n var LOCATION = UNIFORM + \".location\";\n var VALUE;\n if (arg) {\n if (!filter(arg)) {\n continue;\n }\n if (isStatic(arg)) {\n var value = arg.value;\n if (type === GL_SAMPLER_2D || type === GL_SAMPLER_CUBE) {\n var TEX_VALUE = env.link(value._texture || value.color[0]._texture);\n scope(GL, \".uniform1i(\", LOCATION, \",\", TEX_VALUE + \".bind());\");\n scope.exit(TEX_VALUE, \".unbind();\");\n } else if (type === GL_FLOAT_MAT2 || type === GL_FLOAT_MAT3 || type === GL_FLOAT_MAT4) {\n var MAT_VALUE = env.global.def(\"new Float32Array([\" + Array.prototype.slice.call(value) + \"])\");\n var dim = 2;\n if (type === GL_FLOAT_MAT3) {\n dim = 3;\n } else if (type === GL_FLOAT_MAT4) {\n dim = 4;\n }\n scope(\n GL,\n \".uniformMatrix\",\n dim,\n \"fv(\",\n LOCATION,\n \",false,\",\n MAT_VALUE,\n \");\"\n );\n } else {\n switch (type) {\n case GL_FLOAT$7:\n infix = \"1f\";\n break;\n case GL_FLOAT_VEC2:\n infix = \"2f\";\n break;\n case GL_FLOAT_VEC3:\n infix = \"3f\";\n break;\n case GL_FLOAT_VEC4:\n infix = \"4f\";\n break;\n case GL_BOOL:\n infix = \"1i\";\n break;\n case GL_INT$2:\n infix = \"1i\";\n break;\n case GL_BOOL_VEC2:\n infix = \"2i\";\n break;\n case GL_INT_VEC2:\n infix = \"2i\";\n break;\n case GL_BOOL_VEC3:\n infix = \"3i\";\n break;\n case GL_INT_VEC3:\n infix = \"3i\";\n break;\n case GL_BOOL_VEC4:\n infix = \"4i\";\n break;\n case GL_INT_VEC4:\n infix = \"4i\";\n break;\n }\n scope(\n GL,\n \".uniform\",\n infix,\n \"(\",\n LOCATION,\n \",\",\n isArrayLike(value) ? Array.prototype.slice.call(value) : value,\n \");\"\n );\n }\n continue;\n } else {\n VALUE = arg.append(env, scope);\n }\n } else {\n if (!filter(SCOPE_DECL)) {\n continue;\n }\n VALUE = scope.def(shared.uniforms, \"[\", stringStore.id(name), \"]\");\n }\n if (type === GL_SAMPLER_2D) {\n scope(\n \"if(\",\n VALUE,\n \"&&\",\n VALUE,\n '._reglType===\"framebuffer\"){',\n VALUE,\n \"=\",\n VALUE,\n \".color[0];\",\n \"}\"\n );\n } else if (type === GL_SAMPLER_CUBE) {\n scope(\n \"if(\",\n VALUE,\n \"&&\",\n VALUE,\n '._reglType===\"framebufferCube\"){',\n VALUE,\n \"=\",\n VALUE,\n \".color[0];\",\n \"}\"\n );\n }\n var unroll = 1;\n switch (type) {\n case GL_SAMPLER_2D:\n case GL_SAMPLER_CUBE:\n var TEX = scope.def(VALUE, \"._texture\");\n scope(GL, \".uniform1i(\", LOCATION, \",\", TEX, \".bind());\");\n scope.exit(TEX, \".unbind();\");\n continue;\n case GL_INT$2:\n case GL_BOOL:\n infix = \"1i\";\n break;\n case GL_INT_VEC2:\n case GL_BOOL_VEC2:\n infix = \"2i\";\n unroll = 2;\n break;\n case GL_INT_VEC3:\n case GL_BOOL_VEC3:\n infix = \"3i\";\n unroll = 3;\n break;\n case GL_INT_VEC4:\n case GL_BOOL_VEC4:\n infix = \"4i\";\n unroll = 4;\n break;\n case GL_FLOAT$7:\n infix = \"1f\";\n break;\n case GL_FLOAT_VEC2:\n infix = \"2f\";\n unroll = 2;\n break;\n case GL_FLOAT_VEC3:\n infix = \"3f\";\n unroll = 3;\n break;\n case GL_FLOAT_VEC4:\n infix = \"4f\";\n unroll = 4;\n break;\n case GL_FLOAT_MAT2:\n infix = \"Matrix2fv\";\n break;\n case GL_FLOAT_MAT3:\n infix = \"Matrix3fv\";\n break;\n case GL_FLOAT_MAT4:\n infix = \"Matrix4fv\";\n break;\n }\n if (infix.charAt(0) === \"M\") {\n scope(GL, \".uniform\", infix, \"(\", LOCATION, \",\");\n var matSize = Math.pow(type - GL_FLOAT_MAT2 + 2, 2);\n var STORAGE = env.global.def(\"new Float32Array(\", matSize, \")\");\n if (Array.isArray(VALUE)) {\n scope(\n \"false,(\",\n loop(matSize, function(i2) {\n return STORAGE + \"[\" + i2 + \"]=\" + VALUE[i2];\n }),\n \",\",\n STORAGE,\n \")\"\n );\n } else {\n scope(\n \"false,(Array.isArray(\",\n VALUE,\n \")||\",\n VALUE,\n \" instanceof Float32Array)?\",\n VALUE,\n \":(\",\n loop(matSize, function(i2) {\n return STORAGE + \"[\" + i2 + \"]=\" + VALUE + \"[\" + i2 + \"]\";\n }),\n \",\",\n STORAGE,\n \")\"\n );\n }\n scope(\");\");\n } else if (unroll > 1) {\n var prev = [];\n var cur = [];\n for (var j = 0; j < unroll; ++j) {\n if (Array.isArray(VALUE)) {\n cur.push(VALUE[j]);\n } else {\n cur.push(scope.def(VALUE + \"[\" + j + \"]\"));\n }\n if (isBatchInnerLoop) {\n prev.push(scope.def());\n }\n }\n if (isBatchInnerLoop) {\n scope(\"if(!\", env.batchId, \"||\", prev.map(function(p, i2) {\n return p + \"!==\" + cur[i2];\n }).join(\"||\"), \"){\", prev.map(function(p, i2) {\n return p + \"=\" + cur[i2] + \";\";\n }).join(\"\"));\n }\n scope(GL, \".uniform\", infix, \"(\", LOCATION, \",\", cur.join(\",\"), \");\");\n if (isBatchInnerLoop) {\n scope(\"}\");\n }\n } else {\n if (isBatchInnerLoop) {\n var prevS = scope.def();\n scope(\n \"if(!\",\n env.batchId,\n \"||\",\n prevS,\n \"!==\",\n VALUE,\n \"){\",\n prevS,\n \"=\",\n VALUE,\n \";\"\n );\n }\n scope(GL, \".uniform\", infix, \"(\", LOCATION, \",\", VALUE, \");\");\n if (isBatchInnerLoop) {\n scope(\"}\");\n }\n }\n }\n }\n function emitDraw(env, outer, inner, args) {\n var shared = env.shared;\n var GL = shared.gl;\n var DRAW_STATE = shared.draw;\n var drawOptions = args.draw;\n function emitElements() {\n var defn = drawOptions.elements;\n var ELEMENTS2;\n var scope = outer;\n if (defn) {\n if (defn.contextDep && args.contextDynamic || defn.propDep) {\n scope = inner;\n }\n ELEMENTS2 = defn.append(env, scope);\n if (drawOptions.elementsActive) {\n scope(\n \"if(\" + ELEMENTS2 + \")\" + GL + \".bindBuffer(\" + GL_ELEMENT_ARRAY_BUFFER$2 + \",\" + ELEMENTS2 + \".buffer.buffer);\"\n );\n }\n } else {\n ELEMENTS2 = scope.def();\n scope(\n ELEMENTS2,\n \"=\",\n DRAW_STATE,\n \".\",\n S_ELEMENTS,\n \";\",\n \"if(\",\n ELEMENTS2,\n \"){\",\n GL,\n \".bindBuffer(\",\n GL_ELEMENT_ARRAY_BUFFER$2,\n \",\",\n ELEMENTS2,\n \".buffer.buffer);}\",\n \"else if(\",\n shared.vao,\n \".currentVAO){\",\n ELEMENTS2,\n \"=\",\n env.shared.elements + \".getElements(\" + shared.vao,\n \".currentVAO.elements);\",\n !extVertexArrays ? \"if(\" + ELEMENTS2 + \")\" + GL + \".bindBuffer(\" + GL_ELEMENT_ARRAY_BUFFER$2 + \",\" + ELEMENTS2 + \".buffer.buffer);\" : \"\",\n \"}\"\n );\n }\n return ELEMENTS2;\n }\n function emitCount() {\n var defn = drawOptions.count;\n var COUNT2;\n var scope = outer;\n if (defn) {\n if (defn.contextDep && args.contextDynamic || defn.propDep) {\n scope = inner;\n }\n COUNT2 = defn.append(env, scope);\n } else {\n COUNT2 = scope.def(DRAW_STATE, \".\", S_COUNT);\n }\n return COUNT2;\n }\n var ELEMENTS = emitElements();\n function emitValue(name) {\n var defn = drawOptions[name];\n if (defn) {\n if (defn.contextDep && args.contextDynamic || defn.propDep) {\n return defn.append(env, inner);\n } else {\n return defn.append(env, outer);\n }\n } else {\n return outer.def(DRAW_STATE, \".\", name);\n }\n }\n var PRIMITIVE = emitValue(S_PRIMITIVE);\n var OFFSET = emitValue(S_OFFSET);\n var COUNT = emitCount();\n if (typeof COUNT === \"number\") {\n if (COUNT === 0) {\n return;\n }\n } else {\n inner(\"if(\", COUNT, \"){\");\n inner.exit(\"}\");\n }\n var INSTANCES, EXT_INSTANCING;\n if (extInstancing) {\n INSTANCES = emitValue(S_INSTANCES);\n EXT_INSTANCING = env.instancing;\n }\n var ELEMENT_TYPE = ELEMENTS + \".type\";\n var elementsStatic = drawOptions.elements && isStatic(drawOptions.elements) && !drawOptions.vaoActive;\n function emitInstancing() {\n function drawElements() {\n inner(EXT_INSTANCING, \".drawElementsInstancedANGLE(\", [\n PRIMITIVE,\n COUNT,\n ELEMENT_TYPE,\n OFFSET + \"<<((\" + ELEMENT_TYPE + \"-\" + GL_UNSIGNED_BYTE$7 + \")>>1)\",\n INSTANCES\n ], \");\");\n }\n function drawArrays() {\n inner(\n EXT_INSTANCING,\n \".drawArraysInstancedANGLE(\",\n [PRIMITIVE, OFFSET, COUNT, INSTANCES],\n \");\"\n );\n }\n if (ELEMENTS && ELEMENTS !== \"null\") {\n if (!elementsStatic) {\n inner(\"if(\", ELEMENTS, \"){\");\n drawElements();\n inner(\"}else{\");\n drawArrays();\n inner(\"}\");\n } else {\n drawElements();\n }\n } else {\n drawArrays();\n }\n }\n function emitRegular() {\n function drawElements() {\n inner(GL + \".drawElements(\" + [\n PRIMITIVE,\n COUNT,\n ELEMENT_TYPE,\n OFFSET + \"<<((\" + ELEMENT_TYPE + \"-\" + GL_UNSIGNED_BYTE$7 + \")>>1)\"\n ] + \");\");\n }\n function drawArrays() {\n inner(GL + \".drawArrays(\" + [PRIMITIVE, OFFSET, COUNT] + \");\");\n }\n if (ELEMENTS && ELEMENTS !== \"null\") {\n if (!elementsStatic) {\n inner(\"if(\", ELEMENTS, \"){\");\n drawElements();\n inner(\"}else{\");\n drawArrays();\n inner(\"}\");\n } else {\n drawElements();\n }\n } else {\n drawArrays();\n }\n }\n if (extInstancing && (typeof INSTANCES !== \"number\" || INSTANCES >= 0)) {\n if (typeof INSTANCES === \"string\") {\n inner(\"if(\", INSTANCES, \">0){\");\n emitInstancing();\n inner(\"}else if(\", INSTANCES, \"<0){\");\n emitRegular();\n inner(\"}\");\n } else {\n emitInstancing();\n }\n } else {\n emitRegular();\n }\n }\n function createBody(emitBody, parentEnv, args, program, count) {\n var env = createREGLEnvironment();\n var scope = env.proc(\"body\", count);\n if (extInstancing) {\n env.instancing = scope.def(\n env.shared.extensions,\n \".angle_instanced_arrays\"\n );\n }\n emitBody(env, scope, args, program);\n return env.compile().body;\n }\n function emitDrawBody(env, draw, args, program) {\n injectExtensions(env, draw);\n if (args.useVAO) {\n if (args.drawVAO) {\n draw(env.shared.vao, \".setVAO(\", args.drawVAO.append(env, draw), \");\");\n } else {\n draw(env.shared.vao, \".setVAO(\", env.shared.vao, \".targetVAO);\");\n }\n } else {\n draw(env.shared.vao, \".setVAO(null);\");\n emitAttributes(env, draw, args, program.attributes, function() {\n return true;\n });\n }\n emitUniforms(env, draw, args, program.uniforms, function() {\n return true;\n }, false);\n emitDraw(env, draw, draw, args);\n }\n function emitDrawProc(env, args) {\n var draw = env.proc(\"draw\", 1);\n injectExtensions(env, draw);\n emitContext(env, draw, args.context);\n emitPollFramebuffer(env, draw, args.framebuffer);\n emitPollState(env, draw, args);\n emitSetOptions(env, draw, args.state);\n emitProfile(env, draw, args, false, true);\n var program = args.shader.progVar.append(env, draw);\n draw(env.shared.gl, \".useProgram(\", program, \".program);\");\n if (args.shader.program) {\n emitDrawBody(env, draw, args, args.shader.program);\n } else {\n draw(env.shared.vao, \".setVAO(null);\");\n var drawCache = env.global.def(\"{}\");\n var PROG_ID = draw.def(program, \".id\");\n var CACHED_PROC = draw.def(drawCache, \"[\", PROG_ID, \"]\");\n draw(\n env.cond(CACHED_PROC).then(CACHED_PROC, \".call(this,a0);\").else(\n CACHED_PROC,\n \"=\",\n drawCache,\n \"[\",\n PROG_ID,\n \"]=\",\n env.link(function(program2) {\n return createBody(emitDrawBody, env, args, program2, 1);\n }),\n \"(\",\n program,\n \");\",\n CACHED_PROC,\n \".call(this,a0);\"\n )\n );\n }\n if (Object.keys(args.state).length > 0) {\n draw(env.shared.current, \".dirty=true;\");\n }\n if (env.shared.vao) {\n draw(env.shared.vao, \".setVAO(null);\");\n }\n }\n function emitBatchDynamicShaderBody(env, scope, args, program) {\n env.batchId = \"a1\";\n injectExtensions(env, scope);\n function all() {\n return true;\n }\n emitAttributes(env, scope, args, program.attributes, all);\n emitUniforms(env, scope, args, program.uniforms, all, false);\n emitDraw(env, scope, scope, args);\n }\n function emitBatchBody(env, scope, args, program) {\n injectExtensions(env, scope);\n var contextDynamic = args.contextDep;\n var BATCH_ID = scope.def();\n var PROP_LIST = \"a0\";\n var NUM_PROPS = \"a1\";\n var PROPS = scope.def();\n env.shared.props = PROPS;\n env.batchId = BATCH_ID;\n var outer = env.scope();\n var inner = env.scope();\n scope(\n outer.entry,\n \"for(\",\n BATCH_ID,\n \"=0;\",\n BATCH_ID,\n \"<\",\n NUM_PROPS,\n \";++\",\n BATCH_ID,\n \"){\",\n PROPS,\n \"=\",\n PROP_LIST,\n \"[\",\n BATCH_ID,\n \"];\",\n inner,\n \"}\",\n outer.exit\n );\n function isInnerDefn(defn) {\n return defn.contextDep && contextDynamic || defn.propDep;\n }\n function isOuterDefn(defn) {\n return !isInnerDefn(defn);\n }\n if (args.needsContext) {\n emitContext(env, inner, args.context);\n }\n if (args.needsFramebuffer) {\n emitPollFramebuffer(env, inner, args.framebuffer);\n }\n emitSetOptions(env, inner, args.state, isInnerDefn);\n if (args.profile && isInnerDefn(args.profile)) {\n emitProfile(env, inner, args, false, true);\n }\n if (!program) {\n var progCache = env.global.def(\"{}\");\n var PROGRAM = args.shader.progVar.append(env, inner);\n var PROG_ID = inner.def(PROGRAM, \".id\");\n var CACHED_PROC = inner.def(progCache, \"[\", PROG_ID, \"]\");\n inner(\n env.shared.gl,\n \".useProgram(\",\n PROGRAM,\n \".program);\",\n \"if(!\",\n CACHED_PROC,\n \"){\",\n CACHED_PROC,\n \"=\",\n progCache,\n \"[\",\n PROG_ID,\n \"]=\",\n env.link(function(program2) {\n return createBody(\n emitBatchDynamicShaderBody,\n env,\n args,\n program2,\n 2\n );\n }),\n \"(\",\n PROGRAM,\n \");}\",\n CACHED_PROC,\n \".call(this,a0[\",\n BATCH_ID,\n \"],\",\n BATCH_ID,\n \");\"\n );\n } else {\n if (args.useVAO) {\n if (args.drawVAO) {\n if (isInnerDefn(args.drawVAO)) {\n inner(env.shared.vao, \".setVAO(\", args.drawVAO.append(env, inner), \");\");\n } else {\n outer(env.shared.vao, \".setVAO(\", args.drawVAO.append(env, outer), \");\");\n }\n } else {\n outer(env.shared.vao, \".setVAO(\", env.shared.vao, \".targetVAO);\");\n }\n } else {\n outer(env.shared.vao, \".setVAO(null);\");\n emitAttributes(env, outer, args, program.attributes, isOuterDefn);\n emitAttributes(env, inner, args, program.attributes, isInnerDefn);\n }\n emitUniforms(env, outer, args, program.uniforms, isOuterDefn, false);\n emitUniforms(env, inner, args, program.uniforms, isInnerDefn, true);\n emitDraw(env, outer, inner, args);\n }\n }\n function emitBatchProc(env, args) {\n var batch = env.proc(\"batch\", 2);\n env.batchId = \"0\";\n injectExtensions(env, batch);\n var contextDynamic = false;\n var needsContext = true;\n Object.keys(args.context).forEach(function(name) {\n contextDynamic = contextDynamic || args.context[name].propDep;\n });\n if (!contextDynamic) {\n emitContext(env, batch, args.context);\n needsContext = false;\n }\n var framebuffer = args.framebuffer;\n var needsFramebuffer = false;\n if (framebuffer) {\n if (framebuffer.propDep) {\n contextDynamic = needsFramebuffer = true;\n } else if (framebuffer.contextDep && contextDynamic) {\n needsFramebuffer = true;\n }\n if (!needsFramebuffer) {\n emitPollFramebuffer(env, batch, framebuffer);\n }\n } else {\n emitPollFramebuffer(env, batch, null);\n }\n if (args.state.viewport && args.state.viewport.propDep) {\n contextDynamic = true;\n }\n function isInnerDefn(defn) {\n return defn.contextDep && contextDynamic || defn.propDep;\n }\n emitPollState(env, batch, args);\n emitSetOptions(env, batch, args.state, function(defn) {\n return !isInnerDefn(defn);\n });\n if (!args.profile || !isInnerDefn(args.profile)) {\n emitProfile(env, batch, args, false, \"a1\");\n }\n args.contextDep = contextDynamic;\n args.needsContext = needsContext;\n args.needsFramebuffer = needsFramebuffer;\n var progDefn = args.shader.progVar;\n if (progDefn.contextDep && contextDynamic || progDefn.propDep) {\n emitBatchBody(\n env,\n batch,\n args,\n null\n );\n } else {\n var PROGRAM = progDefn.append(env, batch);\n batch(env.shared.gl, \".useProgram(\", PROGRAM, \".program);\");\n if (args.shader.program) {\n emitBatchBody(\n env,\n batch,\n args,\n args.shader.program\n );\n } else {\n batch(env.shared.vao, \".setVAO(null);\");\n var batchCache = env.global.def(\"{}\");\n var PROG_ID = batch.def(PROGRAM, \".id\");\n var CACHED_PROC = batch.def(batchCache, \"[\", PROG_ID, \"]\");\n batch(\n env.cond(CACHED_PROC).then(CACHED_PROC, \".call(this,a0,a1);\").else(\n CACHED_PROC,\n \"=\",\n batchCache,\n \"[\",\n PROG_ID,\n \"]=\",\n env.link(function(program) {\n return createBody(emitBatchBody, env, args, program, 2);\n }),\n \"(\",\n PROGRAM,\n \");\",\n CACHED_PROC,\n \".call(this,a0,a1);\"\n )\n );\n }\n }\n if (Object.keys(args.state).length > 0) {\n batch(env.shared.current, \".dirty=true;\");\n }\n if (env.shared.vao) {\n batch(env.shared.vao, \".setVAO(null);\");\n }\n }\n function emitScopeProc(env, args) {\n var scope = env.proc(\"scope\", 3);\n env.batchId = \"a2\";\n var shared = env.shared;\n var CURRENT_STATE = shared.current;\n emitContext(env, scope, args.context);\n if (args.framebuffer) {\n args.framebuffer.append(env, scope);\n }\n sortState(Object.keys(args.state)).forEach(function(name) {\n var defn = args.state[name];\n var value = defn.append(env, scope);\n if (isArrayLike(value)) {\n value.forEach(function(v, i) {\n if (hasVariableReference(v)) {\n scope.set(env.next[name], \"[\" + i + \"]\", v);\n } else {\n scope.set(env.next[name], \"[\" + i + \"]\", env.link(v, { stable: true }));\n }\n });\n } else {\n if (isStatic(defn)) {\n scope.set(shared.next, \".\" + name, env.link(value, { stable: true }));\n } else {\n scope.set(shared.next, \".\" + name, value);\n }\n }\n });\n emitProfile(env, scope, args, true, true);\n [S_ELEMENTS, S_OFFSET, S_COUNT, S_INSTANCES, S_PRIMITIVE].forEach(\n function(opt) {\n var variable = args.draw[opt];\n if (!variable) {\n return;\n }\n var VARIABLE2 = variable.append(env, scope);\n if (hasVariableReference(VARIABLE2)) {\n scope.set(shared.draw, \".\" + opt, VARIABLE2);\n } else {\n scope.set(shared.draw, \".\" + opt, env.link(VARIABLE2), { stable: true });\n }\n }\n );\n Object.keys(args.uniforms).forEach(function(opt) {\n var value = args.uniforms[opt].append(env, scope);\n if (Array.isArray(value)) {\n value = \"[\" + value.map(function(v) {\n if (hasVariableReference(v)) {\n return v;\n } else {\n return env.link(v, { stable: true });\n }\n }) + \"]\";\n }\n scope.set(\n shared.uniforms,\n \"[\" + env.link(stringStore.id(opt), { stable: true }) + \"]\",\n value\n );\n });\n Object.keys(args.attributes).forEach(function(name) {\n var record = args.attributes[name].append(env, scope);\n var scopeAttrib = env.scopeAttrib(name);\n Object.keys(new AttributeRecord2()).forEach(function(prop) {\n scope.set(scopeAttrib, \".\" + prop, record[prop]);\n });\n });\n if (args.scopeVAO) {\n var VARIABLE = args.scopeVAO.append(env, scope);\n if (hasVariableReference(VARIABLE)) {\n scope.set(shared.vao, \".targetVAO\", VARIABLE);\n } else {\n scope.set(shared.vao, \".targetVAO\", env.link(VARIABLE, { stable: true }));\n }\n }\n function saveShader(name) {\n var shader = args.shader[name];\n if (shader) {\n var VARIABLE2 = shader.append(env, scope);\n if (hasVariableReference(VARIABLE2)) {\n scope.set(shared.shader, \".\" + name, VARIABLE2);\n } else {\n scope.set(shared.shader, \".\" + name, env.link(VARIABLE2, { stable: true }));\n }\n }\n }\n saveShader(S_VERT);\n saveShader(S_FRAG);\n if (Object.keys(args.state).length > 0) {\n scope(CURRENT_STATE, \".dirty=true;\");\n scope.exit(CURRENT_STATE, \".dirty=true;\");\n }\n scope(\"a1(\", env.shared.context, \",a0,\", env.batchId, \");\");\n }\n function isDynamicObject(object) {\n if (typeof object !== \"object\" || isArrayLike(object)) {\n return;\n }\n var props = Object.keys(object);\n for (var i = 0; i < props.length; ++i) {\n if (dynamic.isDynamic(object[props[i]])) {\n return true;\n }\n }\n return false;\n }\n function splatObject(env, options, name) {\n var object = options.static[name];\n if (!object || !isDynamicObject(object)) {\n return;\n }\n var globals = env.global;\n var keys = Object.keys(object);\n var thisDep = false;\n var contextDep = false;\n var propDep = false;\n var objectRef = env.global.def(\"{}\");\n keys.forEach(function(key) {\n var value = object[key];\n if (dynamic.isDynamic(value)) {\n if (typeof value === \"function\") {\n value = object[key] = dynamic.unbox(value);\n }\n var deps = createDynamicDecl(value, null);\n thisDep = thisDep || deps.thisDep;\n propDep = propDep || deps.propDep;\n contextDep = contextDep || deps.contextDep;\n } else {\n globals(objectRef, \".\", key, \"=\");\n switch (typeof value) {\n case \"number\":\n globals(value);\n break;\n case \"string\":\n globals('\"', value, '\"');\n break;\n case \"object\":\n if (Array.isArray(value)) {\n globals(\"[\", value.join(), \"]\");\n }\n break;\n default:\n globals(env.link(value));\n break;\n }\n globals(\";\");\n }\n });\n function appendBlock(env2, block) {\n keys.forEach(function(key) {\n var value = object[key];\n if (!dynamic.isDynamic(value)) {\n return;\n }\n var ref = env2.invoke(block, value);\n block(objectRef, \".\", key, \"=\", ref, \";\");\n });\n }\n options.dynamic[name] = new dynamic.DynamicVariable(DYN_THUNK, {\n thisDep,\n contextDep,\n propDep,\n ref: objectRef,\n append: appendBlock\n });\n delete options.static[name];\n }\n function compileCommand(options, attributes, uniforms, context, stats2) {\n var env = createREGLEnvironment();\n env.stats = env.link(stats2);\n Object.keys(attributes.static).forEach(function(key) {\n splatObject(env, attributes, key);\n });\n NESTED_OPTIONS.forEach(function(name) {\n splatObject(env, options, name);\n });\n var args = parseArguments(options, attributes, uniforms, context, env);\n if (args.shader.program) {\n args.shader.program.attributes.sort(function(a, b) {\n return a.name < b.name ? -1 : 1;\n });\n args.shader.program.uniforms.sort(function(a, b) {\n return a.name < b.name ? -1 : 1;\n });\n }\n emitDrawProc(env, args);\n emitScopeProc(env, args);\n emitBatchProc(env, args);\n return extend(env.compile(), {\n destroy: function() {\n args.shader.program.destroy();\n }\n });\n }\n return {\n next: nextState,\n current: currentState,\n procs: function() {\n var env = createREGLEnvironment();\n var poll = env.proc(\"poll\");\n var refresh = env.proc(\"refresh\");\n var common = env.block();\n poll(common);\n refresh(common);\n var shared = env.shared;\n var GL = shared.gl;\n var NEXT_STATE = shared.next;\n var CURRENT_STATE = shared.current;\n common(CURRENT_STATE, \".dirty=false;\");\n emitPollFramebuffer(env, poll);\n emitPollFramebuffer(env, refresh, null, true);\n var INSTANCING;\n if (extInstancing) {\n INSTANCING = env.link(extInstancing);\n }\n if (extensions.oes_vertex_array_object) {\n refresh(env.link(extensions.oes_vertex_array_object), \".bindVertexArrayOES(null);\");\n }\n var BINDING = refresh.def(shared.attributes);\n var TEMP_BINDING = refresh.def(0);\n var ifte = env.cond(TEMP_BINDING, \".buffer\");\n ifte.then(\n GL,\n \".enableVertexAttribArray(i);\",\n GL,\n \".bindBuffer(\",\n GL_ARRAY_BUFFER$2,\n \",\",\n TEMP_BINDING,\n \".buffer.buffer);\",\n GL,\n \".vertexAttribPointer(i,\",\n TEMP_BINDING,\n \".size,\",\n TEMP_BINDING,\n \".type,\",\n TEMP_BINDING,\n \".normalized,\",\n TEMP_BINDING,\n \".stride,\",\n TEMP_BINDING,\n \".offset);\"\n ).else(\n GL,\n \".disableVertexAttribArray(i);\",\n GL,\n \".vertexAttrib4f(i,\",\n TEMP_BINDING,\n \".x,\",\n TEMP_BINDING,\n \".y,\",\n TEMP_BINDING,\n \".z,\",\n TEMP_BINDING,\n \".w);\",\n TEMP_BINDING,\n \".buffer=null;\"\n );\n var MAX_ATTRIBUTES = env.link(limits.maxAttributes, { stable: true });\n refresh(\n \"for(var i=0;i<\",\n MAX_ATTRIBUTES,\n \";++i){\",\n TEMP_BINDING,\n \"=\",\n BINDING,\n \"[i];\",\n ifte,\n \"}\"\n );\n if (extInstancing) {\n refresh(\n \"for(var i=0;i<\",\n MAX_ATTRIBUTES,\n \";++i){\",\n INSTANCING,\n \".vertexAttribDivisorANGLE(i,\",\n BINDING,\n \"[i].divisor);\",\n \"}\"\n );\n }\n refresh(\n env.shared.vao,\n \".currentVAO=null;\",\n env.shared.vao,\n \".setVAO(\",\n env.shared.vao,\n \".targetVAO);\"\n );\n Object.keys(GL_FLAGS).forEach(function(flag) {\n var cap = GL_FLAGS[flag];\n var NEXT = common.def(NEXT_STATE, \".\", flag);\n var block = env.block();\n block(\n \"if(\",\n NEXT,\n \"){\",\n GL,\n \".enable(\",\n cap,\n \")}else{\",\n GL,\n \".disable(\",\n cap,\n \")}\",\n CURRENT_STATE,\n \".\",\n flag,\n \"=\",\n NEXT,\n \";\"\n );\n refresh(block);\n poll(\n \"if(\",\n NEXT,\n \"!==\",\n CURRENT_STATE,\n \".\",\n flag,\n \"){\",\n block,\n \"}\"\n );\n });\n Object.keys(GL_VARIABLES).forEach(function(name) {\n var func = GL_VARIABLES[name];\n var init = currentState[name];\n var NEXT, CURRENT;\n var block = env.block();\n block(GL, \".\", func, \"(\");\n if (isArrayLike(init)) {\n var n = init.length;\n NEXT = env.global.def(NEXT_STATE, \".\", name);\n CURRENT = env.global.def(CURRENT_STATE, \".\", name);\n block(\n loop(n, function(i) {\n return NEXT + \"[\" + i + \"]\";\n }),\n \");\",\n loop(n, function(i) {\n return CURRENT + \"[\" + i + \"]=\" + NEXT + \"[\" + i + \"];\";\n }).join(\"\")\n );\n poll(\n \"if(\",\n loop(n, function(i) {\n return NEXT + \"[\" + i + \"]!==\" + CURRENT + \"[\" + i + \"]\";\n }).join(\"||\"),\n \"){\",\n block,\n \"}\"\n );\n } else {\n NEXT = common.def(NEXT_STATE, \".\", name);\n CURRENT = common.def(CURRENT_STATE, \".\", name);\n block(\n NEXT,\n \");\",\n CURRENT_STATE,\n \".\",\n name,\n \"=\",\n NEXT,\n \";\"\n );\n poll(\n \"if(\",\n NEXT,\n \"!==\",\n CURRENT,\n \"){\",\n block,\n \"}\"\n );\n }\n refresh(block);\n });\n return env.compile();\n }(),\n compile: compileCommand\n };\n }\n function stats() {\n return {\n vaoCount: 0,\n bufferCount: 0,\n elementsCount: 0,\n framebufferCount: 0,\n shaderCount: 0,\n textureCount: 0,\n cubeCount: 0,\n renderbufferCount: 0,\n maxTextureUnits: 0\n };\n }\n var GL_QUERY_RESULT_EXT = 34918;\n var GL_QUERY_RESULT_AVAILABLE_EXT = 34919;\n var GL_TIME_ELAPSED_EXT = 35007;\n var createTimer = function(gl, extensions) {\n if (!extensions.ext_disjoint_timer_query) {\n return null;\n }\n var queryPool = [];\n function allocQuery() {\n return queryPool.pop() || extensions.ext_disjoint_timer_query.createQueryEXT();\n }\n function freeQuery(query) {\n queryPool.push(query);\n }\n var pendingQueries = [];\n function beginQuery(stats2) {\n var query = allocQuery();\n extensions.ext_disjoint_timer_query.beginQueryEXT(GL_TIME_ELAPSED_EXT, query);\n pendingQueries.push(query);\n pushScopeStats(pendingQueries.length - 1, pendingQueries.length, stats2);\n }\n function endQuery() {\n extensions.ext_disjoint_timer_query.endQueryEXT(GL_TIME_ELAPSED_EXT);\n }\n function PendingStats() {\n this.startQueryIndex = -1;\n this.endQueryIndex = -1;\n this.sum = 0;\n this.stats = null;\n }\n var pendingStatsPool = [];\n function allocPendingStats() {\n return pendingStatsPool.pop() || new PendingStats();\n }\n function freePendingStats(pendingStats2) {\n pendingStatsPool.push(pendingStats2);\n }\n var pendingStats = [];\n function pushScopeStats(start, end, stats2) {\n var ps = allocPendingStats();\n ps.startQueryIndex = start;\n ps.endQueryIndex = end;\n ps.sum = 0;\n ps.stats = stats2;\n pendingStats.push(ps);\n }\n var timeSum = [];\n var queryPtr = [];\n function update() {\n var ptr, i;\n var n = pendingQueries.length;\n if (n === 0) {\n return;\n }\n queryPtr.length = Math.max(queryPtr.length, n + 1);\n timeSum.length = Math.max(timeSum.length, n + 1);\n timeSum[0] = 0;\n queryPtr[0] = 0;\n var queryTime = 0;\n ptr = 0;\n for (i = 0; i < pendingQueries.length; ++i) {\n var query = pendingQueries[i];\n if (extensions.ext_disjoint_timer_query.getQueryObjectEXT(query, GL_QUERY_RESULT_AVAILABLE_EXT)) {\n queryTime += extensions.ext_disjoint_timer_query.getQueryObjectEXT(query, GL_QUERY_RESULT_EXT);\n freeQuery(query);\n } else {\n pendingQueries[ptr++] = query;\n }\n timeSum[i + 1] = queryTime;\n queryPtr[i + 1] = ptr;\n }\n pendingQueries.length = ptr;\n ptr = 0;\n for (i = 0; i < pendingStats.length; ++i) {\n var stats2 = pendingStats[i];\n var start = stats2.startQueryIndex;\n var end = stats2.endQueryIndex;\n stats2.sum += timeSum[end] - timeSum[start];\n var startPtr = queryPtr[start];\n var endPtr = queryPtr[end];\n if (endPtr === startPtr) {\n stats2.stats.gpuTime += stats2.sum / 1e6;\n freePendingStats(stats2);\n } else {\n stats2.startQueryIndex = startPtr;\n stats2.endQueryIndex = endPtr;\n pendingStats[ptr++] = stats2;\n }\n }\n pendingStats.length = ptr;\n }\n return {\n beginQuery,\n endQuery,\n pushScopeStats,\n update,\n getNumPendingQueries: function() {\n return pendingQueries.length;\n },\n clear: function() {\n queryPool.push.apply(queryPool, pendingQueries);\n for (var i = 0; i < queryPool.length; i++) {\n extensions.ext_disjoint_timer_query.deleteQueryEXT(queryPool[i]);\n }\n pendingQueries.length = 0;\n queryPool.length = 0;\n },\n restore: function() {\n pendingQueries.length = 0;\n queryPool.length = 0;\n }\n };\n };\n var GL_COLOR_BUFFER_BIT = 16384;\n var GL_DEPTH_BUFFER_BIT = 256;\n var GL_STENCIL_BUFFER_BIT = 1024;\n var GL_ARRAY_BUFFER = 34962;\n var CONTEXT_LOST_EVENT = \"webglcontextlost\";\n var CONTEXT_RESTORED_EVENT = \"webglcontextrestored\";\n var DYN_PROP = 1;\n var DYN_CONTEXT = 2;\n var DYN_STATE = 3;\n function find(haystack, needle) {\n for (var i = 0; i < haystack.length; ++i) {\n if (haystack[i] === needle) {\n return i;\n }\n }\n return -1;\n }\n function wrapREGL(args) {\n var config = parseArgs(args);\n if (!config) {\n return null;\n }\n var gl = config.gl;\n var glAttributes = gl.getContextAttributes();\n var contextLost = gl.isContextLost();\n var extensionState = createExtensionCache(gl, config);\n if (!extensionState) {\n return null;\n }\n var stringStore = createStringStore();\n var stats$$1 = stats();\n var cachedCode = config.cachedCode || {};\n var extensions = extensionState.extensions;\n var timer = createTimer(gl, extensions);\n var START_TIME = clock();\n var WIDTH = gl.drawingBufferWidth;\n var HEIGHT = gl.drawingBufferHeight;\n var contextState = {\n tick: 0,\n time: 0,\n viewportWidth: WIDTH,\n viewportHeight: HEIGHT,\n framebufferWidth: WIDTH,\n framebufferHeight: HEIGHT,\n drawingBufferWidth: WIDTH,\n drawingBufferHeight: HEIGHT,\n pixelRatio: config.pixelRatio\n };\n var uniformState = {};\n var drawState = {\n elements: null,\n primitive: 4,\n // GL_TRIANGLES\n count: -1,\n offset: 0,\n instances: -1\n };\n var limits = wrapLimits(gl, extensions);\n var bufferState = wrapBufferState(\n gl,\n stats$$1,\n config,\n destroyBuffer\n );\n var elementState = wrapElementsState(gl, extensions, bufferState, stats$$1);\n var attributeState = wrapAttributeState(\n gl,\n extensions,\n limits,\n stats$$1,\n bufferState,\n elementState,\n drawState\n );\n function destroyBuffer(buffer) {\n return attributeState.destroyBuffer(buffer);\n }\n var shaderState = wrapShaderState(gl, stringStore, stats$$1, config);\n var textureState = createTextureSet(\n gl,\n extensions,\n limits,\n function() {\n core.procs.poll();\n },\n contextState,\n stats$$1,\n config\n );\n var renderbufferState = wrapRenderbuffers(gl, extensions, limits, stats$$1, config);\n var framebufferState = wrapFBOState(\n gl,\n extensions,\n limits,\n textureState,\n renderbufferState,\n stats$$1\n );\n var core = reglCore(\n gl,\n stringStore,\n extensions,\n limits,\n bufferState,\n elementState,\n textureState,\n framebufferState,\n uniformState,\n attributeState,\n shaderState,\n drawState,\n contextState,\n timer,\n cachedCode,\n config\n );\n var readPixels = wrapReadPixels(\n gl,\n framebufferState,\n core.procs.poll,\n contextState,\n glAttributes,\n extensions,\n limits\n );\n var nextState = core.next;\n var canvas = gl.canvas;\n var rafCallbacks = [];\n var lossCallbacks = [];\n var restoreCallbacks = [];\n var destroyCallbacks = [config.onDestroy];\n var activeRAF = null;\n function handleRAF() {\n if (rafCallbacks.length === 0) {\n if (timer) {\n timer.update();\n }\n activeRAF = null;\n return;\n }\n activeRAF = raf.next(handleRAF);\n poll();\n for (var i = rafCallbacks.length - 1; i >= 0; --i) {\n var cb = rafCallbacks[i];\n if (cb) {\n cb(contextState, null, 0);\n }\n }\n gl.flush();\n if (timer) {\n timer.update();\n }\n }\n function startRAF() {\n if (!activeRAF && rafCallbacks.length > 0) {\n activeRAF = raf.next(handleRAF);\n }\n }\n function stopRAF() {\n if (activeRAF) {\n raf.cancel(handleRAF);\n activeRAF = null;\n }\n }\n function handleContextLoss(event) {\n event.preventDefault();\n contextLost = true;\n stopRAF();\n lossCallbacks.forEach(function(cb) {\n cb();\n });\n }\n function handleContextRestored(event) {\n gl.getError();\n contextLost = false;\n extensionState.restore();\n shaderState.restore();\n bufferState.restore();\n textureState.restore();\n renderbufferState.restore();\n framebufferState.restore();\n attributeState.restore();\n if (timer) {\n timer.restore();\n }\n core.procs.refresh();\n startRAF();\n restoreCallbacks.forEach(function(cb) {\n cb();\n });\n }\n if (canvas) {\n canvas.addEventListener(CONTEXT_LOST_EVENT, handleContextLoss, false);\n canvas.addEventListener(CONTEXT_RESTORED_EVENT, handleContextRestored, false);\n }\n function destroy() {\n rafCallbacks.length = 0;\n stopRAF();\n if (canvas) {\n canvas.removeEventListener(CONTEXT_LOST_EVENT, handleContextLoss);\n canvas.removeEventListener(CONTEXT_RESTORED_EVENT, handleContextRestored);\n }\n shaderState.clear();\n framebufferState.clear();\n renderbufferState.clear();\n attributeState.clear();\n textureState.clear();\n elementState.clear();\n bufferState.clear();\n if (timer) {\n timer.clear();\n }\n destroyCallbacks.forEach(function(cb) {\n cb();\n });\n }\n function compileProcedure(options) {\n function flattenNestedOptions(options2) {\n var result = extend({}, options2);\n delete result.uniforms;\n delete result.attributes;\n delete result.context;\n delete result.vao;\n if (\"stencil\" in result && result.stencil.op) {\n result.stencil.opBack = result.stencil.opFront = result.stencil.op;\n delete result.stencil.op;\n }\n function merge(name) {\n if (name in result) {\n var child = result[name];\n delete result[name];\n Object.keys(child).forEach(function(prop) {\n result[name + \".\" + prop] = child[prop];\n });\n }\n }\n merge(\"blend\");\n merge(\"depth\");\n merge(\"cull\");\n merge(\"stencil\");\n merge(\"polygonOffset\");\n merge(\"scissor\");\n merge(\"sample\");\n if (\"vao\" in options2) {\n result.vao = options2.vao;\n }\n return result;\n }\n function separateDynamic(object, useArrays) {\n var staticItems = {};\n var dynamicItems = {};\n Object.keys(object).forEach(function(option) {\n var value = object[option];\n if (dynamic.isDynamic(value)) {\n dynamicItems[option] = dynamic.unbox(value, option);\n return;\n } else if (useArrays && Array.isArray(value)) {\n for (var i = 0; i < value.length; ++i) {\n if (dynamic.isDynamic(value[i])) {\n dynamicItems[option] = dynamic.unbox(value, option);\n return;\n }\n }\n }\n staticItems[option] = value;\n });\n return {\n dynamic: dynamicItems,\n static: staticItems\n };\n }\n var context = separateDynamic(options.context || {}, true);\n var uniforms = separateDynamic(options.uniforms || {}, true);\n var attributes = separateDynamic(options.attributes || {}, false);\n var opts = separateDynamic(flattenNestedOptions(options), false);\n var stats$$12 = {\n gpuTime: 0,\n cpuTime: 0,\n count: 0\n };\n var compiled = core.compile(opts, attributes, uniforms, context, stats$$12);\n var draw = compiled.draw;\n var batch = compiled.batch;\n var scope = compiled.scope;\n var EMPTY_ARRAY = [];\n function reserve(count) {\n while (EMPTY_ARRAY.length < count) {\n EMPTY_ARRAY.push(null);\n }\n return EMPTY_ARRAY;\n }\n function REGLCommand(args2, body) {\n var i;\n if (contextLost) {\n }\n if (typeof args2 === \"function\") {\n return scope.call(this, null, args2, 0);\n } else if (typeof body === \"function\") {\n if (typeof args2 === \"number\") {\n for (i = 0; i < args2; ++i) {\n scope.call(this, null, body, i);\n }\n } else if (Array.isArray(args2)) {\n for (i = 0; i < args2.length; ++i) {\n scope.call(this, args2[i], body, i);\n }\n } else {\n return scope.call(this, args2, body, 0);\n }\n } else if (typeof args2 === \"number\") {\n if (args2 > 0) {\n return batch.call(this, reserve(args2 | 0), args2 | 0);\n }\n } else if (Array.isArray(args2)) {\n if (args2.length) {\n return batch.call(this, args2, args2.length);\n }\n } else {\n return draw.call(this, args2);\n }\n }\n return extend(REGLCommand, {\n stats: stats$$12,\n destroy: function() {\n compiled.destroy();\n }\n });\n }\n var setFBO = framebufferState.setFBO = compileProcedure({\n framebuffer: dynamic.define.call(null, DYN_PROP, \"framebuffer\")\n });\n function clearImpl(_, options) {\n var clearFlags = 0;\n core.procs.poll();\n var c = options.color;\n if (c) {\n gl.clearColor(+c[0] || 0, +c[1] || 0, +c[2] || 0, +c[3] || 0);\n clearFlags |= GL_COLOR_BUFFER_BIT;\n }\n if (\"depth\" in options) {\n gl.clearDepth(+options.depth);\n clearFlags |= GL_DEPTH_BUFFER_BIT;\n }\n if (\"stencil\" in options) {\n gl.clearStencil(options.stencil | 0);\n clearFlags |= GL_STENCIL_BUFFER_BIT;\n }\n gl.clear(clearFlags);\n }\n function clear(options) {\n if (\"framebuffer\" in options) {\n if (options.framebuffer && options.framebuffer_reglType === \"framebufferCube\") {\n for (var i = 0; i < 6; ++i) {\n setFBO(extend({\n framebuffer: options.framebuffer.faces[i]\n }, options), clearImpl);\n }\n } else {\n setFBO(options, clearImpl);\n }\n } else {\n clearImpl(null, options);\n }\n }\n function frame(cb) {\n rafCallbacks.push(cb);\n function cancel() {\n var i = find(rafCallbacks, cb);\n function pendingCancel() {\n var index = find(rafCallbacks, pendingCancel);\n rafCallbacks[index] = rafCallbacks[rafCallbacks.length - 1];\n rafCallbacks.length -= 1;\n if (rafCallbacks.length <= 0) {\n stopRAF();\n }\n }\n rafCallbacks[i] = pendingCancel;\n }\n startRAF();\n return {\n cancel\n };\n }\n function pollViewport() {\n var viewport = nextState.viewport;\n var scissorBox = nextState.scissor_box;\n viewport[0] = viewport[1] = scissorBox[0] = scissorBox[1] = 0;\n contextState.viewportWidth = contextState.framebufferWidth = contextState.drawingBufferWidth = viewport[2] = scissorBox[2] = gl.drawingBufferWidth;\n contextState.viewportHeight = contextState.framebufferHeight = contextState.drawingBufferHeight = viewport[3] = scissorBox[3] = gl.drawingBufferHeight;\n }\n function poll() {\n contextState.tick += 1;\n contextState.time = now();\n pollViewport();\n core.procs.poll();\n }\n function refresh() {\n textureState.refresh();\n pollViewport();\n core.procs.refresh();\n if (timer) {\n timer.update();\n }\n }\n function now() {\n return (clock() - START_TIME) / 1e3;\n }\n refresh();\n function addListener(event, callback) {\n var callbacks;\n switch (event) {\n case \"frame\":\n return frame(callback);\n case \"lost\":\n callbacks = lossCallbacks;\n break;\n case \"restore\":\n callbacks = restoreCallbacks;\n break;\n case \"destroy\":\n callbacks = destroyCallbacks;\n break;\n default:\n }\n callbacks.push(callback);\n return {\n cancel: function() {\n for (var i = 0; i < callbacks.length; ++i) {\n if (callbacks[i] === callback) {\n callbacks[i] = callbacks[callbacks.length - 1];\n callbacks.pop();\n return;\n }\n }\n }\n };\n }\n function getCachedCode() {\n return cachedCode;\n }\n function preloadCachedCode(moreCache) {\n Object.entries(moreCache).forEach(function(kv) {\n cachedCode[kv[0]] = kv[1];\n });\n }\n var regl = extend(compileProcedure, {\n // Clear current FBO\n clear,\n // Short cuts for dynamic variables\n prop: dynamic.define.bind(null, DYN_PROP),\n context: dynamic.define.bind(null, DYN_CONTEXT),\n this: dynamic.define.bind(null, DYN_STATE),\n // executes an empty draw command\n draw: compileProcedure({}),\n // Resources\n buffer: function(options) {\n return bufferState.create(options, GL_ARRAY_BUFFER, false, false);\n },\n elements: function(options) {\n return elementState.create(options, false);\n },\n texture: textureState.create2D,\n cube: textureState.createCube,\n renderbuffer: renderbufferState.create,\n framebuffer: framebufferState.create,\n framebufferCube: framebufferState.createCube,\n vao: attributeState.createVAO,\n // Expose context attributes\n attributes: glAttributes,\n // Frame rendering\n frame,\n on: addListener,\n // System limits\n limits,\n hasExtension: function(name) {\n return limits.extensions.indexOf(name.toLowerCase()) >= 0;\n },\n // Read pixels\n read: readPixels,\n // Destroy regl and all associated resources\n destroy,\n // Direct GL state manipulation\n _gl: gl,\n _refresh: refresh,\n poll: function() {\n poll();\n if (timer) {\n timer.update();\n }\n },\n // Current time\n now,\n // regl Statistics Information\n stats: stats$$1,\n // cache generated code\n getCachedCode,\n preloadCachedCode\n });\n config.onDone(null, regl);\n return regl;\n }\n return wrapREGL;\n });\n }\n });\n\n // node_modules/gl-util/context.js\n var require_context = __commonJS({\n \"node_modules/gl-util/context.js\"(exports, module) {\n \"use strict\";\n var pick = require_pick_by_alias();\n module.exports = function setContext(o) {\n if (!o) o = {};\n else if (typeof o === \"string\") o = { container: o };\n if (isCanvas(o)) {\n o = { container: o };\n } else if (isElement(o)) {\n o = { container: o };\n } else if (isContext(o)) {\n o = { gl: o };\n } else {\n o = pick(o, {\n container: \"container target element el canvas holder parent parentNode wrapper use ref root node\",\n gl: \"gl context webgl glContext\",\n attrs: \"attributes attrs contextAttributes\",\n pixelRatio: \"pixelRatio pxRatio px ratio pxratio pixelratio\",\n width: \"w width\",\n height: \"h height\"\n }, true);\n }\n if (!o.pixelRatio) o.pixelRatio = window.pixelRatio || 1;\n if (o.gl) {\n return o.gl;\n }\n if (o.canvas) {\n o.container = o.canvas.parentNode;\n }\n if (o.container) {\n if (typeof o.container === \"string\") {\n var c = document.querySelector(o.container);\n if (!c) throw Error(\"Element \" + o.container + \" is not found\");\n o.container = c;\n }\n if (isCanvas(o.container)) {\n o.canvas = o.container;\n o.container = o.canvas.parentNode;\n } else if (!o.canvas) {\n o.canvas = createCanvas();\n o.container.appendChild(o.canvas);\n resize(o);\n }\n } else if (!o.canvas) {\n if (typeof document !== \"undefined\") {\n o.container = document.body || document.documentElement;\n o.canvas = createCanvas();\n o.container.appendChild(o.canvas);\n resize(o);\n } else {\n throw Error(\"Not DOM environment. Use headless-gl.\");\n }\n }\n if (!o.gl) {\n [\"webgl\", \"experimental-webgl\", \"webgl-experimental\"].some(function(c2) {\n try {\n o.gl = o.canvas.getContext(c2, o.attrs);\n } catch (e) {\n }\n return o.gl;\n });\n }\n return o.gl;\n };\n function resize(o) {\n if (o.container) {\n if (o.container == document.body) {\n if (!document.body.style.width) o.canvas.width = o.width || o.pixelRatio * window.innerWidth;\n if (!document.body.style.height) o.canvas.height = o.height || o.pixelRatio * window.innerHeight;\n } else {\n var bounds = o.container.getBoundingClientRect();\n o.canvas.width = o.width || bounds.right - bounds.left;\n o.canvas.height = o.height || bounds.bottom - bounds.top;\n }\n }\n }\n function isCanvas(e) {\n return typeof e.getContext === \"function\" && \"width\" in e && \"height\" in e;\n }\n function isElement(e) {\n return typeof e.nodeName === \"string\" && typeof e.appendChild === \"function\" && typeof e.getBoundingClientRect === \"function\";\n }\n function isContext(e) {\n return typeof e.drawArrays === \"function\" || typeof e.drawElements === \"function\";\n }\n function createCanvas() {\n var canvas = document.createElement(\"canvas\");\n canvas.style.position = \"absolute\";\n canvas.style.top = 0;\n canvas.style.left = 0;\n return canvas;\n }\n }\n });\n\n // node_modules/font-atlas/index.js\n var require_font_atlas = __commonJS({\n \"node_modules/font-atlas/index.js\"(exports, module) {\n \"use strict\";\n var stringifyFont = require_stringify();\n var defaultChars = [32, 126];\n module.exports = atlas;\n function atlas(options) {\n options = options || {};\n var shape = options.shape ? options.shape : options.canvas ? [options.canvas.width, options.canvas.height] : [512, 512];\n var canvas = options.canvas || document.createElement(\"canvas\");\n var font = options.font;\n var step = typeof options.step === \"number\" ? [options.step, options.step] : options.step || [32, 32];\n var chars = options.chars || defaultChars;\n if (font && typeof font !== \"string\") font = stringifyFont(font);\n if (!Array.isArray(chars)) {\n chars = String(chars).split(\"\");\n } else if (chars.length === 2 && typeof chars[0] === \"number\" && typeof chars[1] === \"number\") {\n var newchars = [];\n for (var i = chars[0], j = 0; i <= chars[1]; i++) {\n newchars[j++] = String.fromCharCode(i);\n }\n chars = newchars;\n }\n shape = shape.slice();\n canvas.width = shape[0];\n canvas.height = shape[1];\n var ctx = canvas.getContext(\"2d\");\n ctx.fillStyle = \"#000\";\n ctx.fillRect(0, 0, canvas.width, canvas.height);\n ctx.font = font;\n ctx.textAlign = \"center\";\n ctx.textBaseline = \"middle\";\n ctx.fillStyle = \"#fff\";\n var x = step[0] / 2;\n var y = step[1] / 2;\n for (var i = 0; i < chars.length; i++) {\n ctx.fillText(chars[i], x, y);\n if ((x += step[0]) > shape[0] - step[0] / 2) x = step[0] / 2, y += step[1];\n }\n return canvas;\n }\n }\n });\n\n // node_modules/bit-twiddle/twiddle.js\n var require_twiddle = __commonJS({\n \"node_modules/bit-twiddle/twiddle.js\"(exports) {\n \"use strict\";\n \"use restrict\";\n var INT_BITS = 32;\n exports.INT_BITS = INT_BITS;\n exports.INT_MAX = 2147483647;\n exports.INT_MIN = -1 << INT_BITS - 1;\n exports.sign = function(v) {\n return (v > 0) - (v < 0);\n };\n exports.abs = function(v) {\n var mask = v >> INT_BITS - 1;\n return (v ^ mask) - mask;\n };\n exports.min = function(x, y) {\n return y ^ (x ^ y) & -(x < y);\n };\n exports.max = function(x, y) {\n return x ^ (x ^ y) & -(x < y);\n };\n exports.isPow2 = function(v) {\n return !(v & v - 1) && !!v;\n };\n exports.log2 = function(v) {\n var r, shift;\n r = (v > 65535) << 4;\n v >>>= r;\n shift = (v > 255) << 3;\n v >>>= shift;\n r |= shift;\n shift = (v > 15) << 2;\n v >>>= shift;\n r |= shift;\n shift = (v > 3) << 1;\n v >>>= shift;\n r |= shift;\n return r | v >> 1;\n };\n exports.log10 = function(v) {\n return v >= 1e9 ? 9 : v >= 1e8 ? 8 : v >= 1e7 ? 7 : v >= 1e6 ? 6 : v >= 1e5 ? 5 : v >= 1e4 ? 4 : v >= 1e3 ? 3 : v >= 100 ? 2 : v >= 10 ? 1 : 0;\n };\n exports.popCount = function(v) {\n v = v - (v >>> 1 & 1431655765);\n v = (v & 858993459) + (v >>> 2 & 858993459);\n return (v + (v >>> 4) & 252645135) * 16843009 >>> 24;\n };\n function countTrailingZeros(v) {\n var c = 32;\n v &= -v;\n if (v) c--;\n if (v & 65535) c -= 16;\n if (v & 16711935) c -= 8;\n if (v & 252645135) c -= 4;\n if (v & 858993459) c -= 2;\n if (v & 1431655765) c -= 1;\n return c;\n }\n exports.countTrailingZeros = countTrailingZeros;\n exports.nextPow2 = function(v) {\n v += v === 0;\n --v;\n v |= v >>> 1;\n v |= v >>> 2;\n v |= v >>> 4;\n v |= v >>> 8;\n v |= v >>> 16;\n return v + 1;\n };\n exports.prevPow2 = function(v) {\n v |= v >>> 1;\n v |= v >>> 2;\n v |= v >>> 4;\n v |= v >>> 8;\n v |= v >>> 16;\n return v - (v >>> 1);\n };\n exports.parity = function(v) {\n v ^= v >>> 16;\n v ^= v >>> 8;\n v ^= v >>> 4;\n v &= 15;\n return 27030 >>> v & 1;\n };\n var REVERSE_TABLE = new Array(256);\n (function(tab) {\n for (var i = 0; i < 256; ++i) {\n var v = i, r = i, s = 7;\n for (v >>>= 1; v; v >>>= 1) {\n r <<= 1;\n r |= v & 1;\n --s;\n }\n tab[i] = r << s & 255;\n }\n })(REVERSE_TABLE);\n exports.reverse = function(v) {\n return REVERSE_TABLE[v & 255] << 24 | REVERSE_TABLE[v >>> 8 & 255] << 16 | REVERSE_TABLE[v >>> 16 & 255] << 8 | REVERSE_TABLE[v >>> 24 & 255];\n };\n exports.interleave2 = function(x, y) {\n x &= 65535;\n x = (x | x << 8) & 16711935;\n x = (x | x << 4) & 252645135;\n x = (x | x << 2) & 858993459;\n x = (x | x << 1) & 1431655765;\n y &= 65535;\n y = (y | y << 8) & 16711935;\n y = (y | y << 4) & 252645135;\n y = (y | y << 2) & 858993459;\n y = (y | y << 1) & 1431655765;\n return x | y << 1;\n };\n exports.deinterleave2 = function(v, n) {\n v = v >>> n & 1431655765;\n v = (v | v >>> 1) & 858993459;\n v = (v | v >>> 2) & 252645135;\n v = (v | v >>> 4) & 16711935;\n v = (v | v >>> 16) & 65535;\n return v << 16 >> 16;\n };\n exports.interleave3 = function(x, y, z) {\n x &= 1023;\n x = (x | x << 16) & 4278190335;\n x = (x | x << 8) & 251719695;\n x = (x | x << 4) & 3272356035;\n x = (x | x << 2) & 1227133513;\n y &= 1023;\n y = (y | y << 16) & 4278190335;\n y = (y | y << 8) & 251719695;\n y = (y | y << 4) & 3272356035;\n y = (y | y << 2) & 1227133513;\n x |= y << 1;\n z &= 1023;\n z = (z | z << 16) & 4278190335;\n z = (z | z << 8) & 251719695;\n z = (z | z << 4) & 3272356035;\n z = (z | z << 2) & 1227133513;\n return x | z << 2;\n };\n exports.deinterleave3 = function(v, n) {\n v = v >>> n & 1227133513;\n v = (v | v >>> 2) & 3272356035;\n v = (v | v >>> 4) & 251719695;\n v = (v | v >>> 8) & 4278190335;\n v = (v | v >>> 16) & 1023;\n return v << 22 >> 22;\n };\n exports.nextCombination = function(v) {\n var t = v | v - 1;\n return t + 1 | (~t & -~t) - 1 >>> countTrailingZeros(v) + 1;\n };\n }\n });\n\n // node_modules/dup/dup.js\n var require_dup = __commonJS({\n \"node_modules/dup/dup.js\"(exports, module) {\n \"use strict\";\n function dupe_array(count, value, i) {\n var c = count[i] | 0;\n if (c <= 0) {\n return [];\n }\n var result = new Array(c), j;\n if (i === count.length - 1) {\n for (j = 0; j < c; ++j) {\n result[j] = value;\n }\n } else {\n for (j = 0; j < c; ++j) {\n result[j] = dupe_array(count, value, i + 1);\n }\n }\n return result;\n }\n function dupe_number(count, value) {\n var result, i;\n result = new Array(count);\n for (i = 0; i < count; ++i) {\n result[i] = value;\n }\n return result;\n }\n function dupe(count, value) {\n if (typeof value === \"undefined\") {\n value = 0;\n }\n switch (typeof count) {\n case \"number\":\n if (count > 0) {\n return dupe_number(count | 0, value);\n }\n break;\n case \"object\":\n if (typeof count.length === \"number\") {\n return dupe_array(count, value, 0);\n }\n break;\n }\n return [];\n }\n module.exports = dupe;\n }\n });\n\n // node_modules/base64-js/index.js\n var require_base64_js = __commonJS({\n \"node_modules/base64-js/index.js\"(exports) {\n \"use strict\";\n exports.byteLength = byteLength;\n exports.toByteArray = toByteArray;\n exports.fromByteArray = fromByteArray;\n var lookup = [];\n var revLookup = [];\n var Arr = typeof Uint8Array !== \"undefined\" ? Uint8Array : Array;\n var code = \"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/\";\n for (i = 0, len = code.length; i < len; ++i) {\n lookup[i] = code[i];\n revLookup[code.charCodeAt(i)] = i;\n }\n var i;\n var len;\n revLookup[\"-\".charCodeAt(0)] = 62;\n revLookup[\"_\".charCodeAt(0)] = 63;\n function getLens(b64) {\n var len2 = b64.length;\n if (len2 % 4 > 0) {\n throw new Error(\"Invalid string. Length must be a multiple of 4\");\n }\n var validLen = b64.indexOf(\"=\");\n if (validLen === -1) validLen = len2;\n var placeHoldersLen = validLen === len2 ? 0 : 4 - validLen % 4;\n return [validLen, placeHoldersLen];\n }\n function byteLength(b64) {\n var lens = getLens(b64);\n var validLen = lens[0];\n var placeHoldersLen = lens[1];\n return (validLen + placeHoldersLen) * 3 / 4 - placeHoldersLen;\n }\n function _byteLength(b64, validLen, placeHoldersLen) {\n return (validLen + placeHoldersLen) * 3 / 4 - placeHoldersLen;\n }\n function toByteArray(b64) {\n var tmp;\n var lens = getLens(b64);\n var validLen = lens[0];\n var placeHoldersLen = lens[1];\n var arr = new Arr(_byteLength(b64, validLen, placeHoldersLen));\n var curByte = 0;\n var len2 = placeHoldersLen > 0 ? validLen - 4 : validLen;\n var i2;\n for (i2 = 0; i2 < len2; i2 += 4) {\n tmp = revLookup[b64.charCodeAt(i2)] << 18 | revLookup[b64.charCodeAt(i2 + 1)] << 12 | revLookup[b64.charCodeAt(i2 + 2)] << 6 | revLookup[b64.charCodeAt(i2 + 3)];\n arr[curByte++] = tmp >> 16 & 255;\n arr[curByte++] = tmp >> 8 & 255;\n arr[curByte++] = tmp & 255;\n }\n if (placeHoldersLen === 2) {\n tmp = revLookup[b64.charCodeAt(i2)] << 2 | revLookup[b64.charCodeAt(i2 + 1)] >> 4;\n arr[curByte++] = tmp & 255;\n }\n if (placeHoldersLen === 1) {\n tmp = revLookup[b64.charCodeAt(i2)] << 10 | revLookup[b64.charCodeAt(i2 + 1)] << 4 | revLookup[b64.charCodeAt(i2 + 2)] >> 2;\n arr[curByte++] = tmp >> 8 & 255;\n arr[curByte++] = tmp & 255;\n }\n return arr;\n }\n function tripletToBase64(num) {\n return lookup[num >> 18 & 63] + lookup[num >> 12 & 63] + lookup[num >> 6 & 63] + lookup[num & 63];\n }\n function encodeChunk(uint8, start, end) {\n var tmp;\n var output = [];\n for (var i2 = start; i2 < end; i2 += 3) {\n tmp = (uint8[i2] << 16 & 16711680) + (uint8[i2 + 1] << 8 & 65280) + (uint8[i2 + 2] & 255);\n output.push(tripletToBase64(tmp));\n }\n return output.join(\"\");\n }\n function fromByteArray(uint8) {\n var tmp;\n var len2 = uint8.length;\n var extraBytes = len2 % 3;\n var parts = [];\n var maxChunkLength = 16383;\n for (var i2 = 0, len22 = len2 - extraBytes; i2 < len22; i2 += maxChunkLength) {\n parts.push(encodeChunk(\n uint8,\n i2,\n i2 + maxChunkLength > len22 ? len22 : i2 + maxChunkLength\n ));\n }\n if (extraBytes === 1) {\n tmp = uint8[len2 - 1];\n parts.push(\n lookup[tmp >> 2] + lookup[tmp << 4 & 63] + \"==\"\n );\n } else if (extraBytes === 2) {\n tmp = (uint8[len2 - 2] << 8) + uint8[len2 - 1];\n parts.push(\n lookup[tmp >> 10] + lookup[tmp >> 4 & 63] + lookup[tmp << 2 & 63] + \"=\"\n );\n }\n return parts.join(\"\");\n }\n }\n });\n\n // node_modules/ieee754/index.js\n var require_ieee754 = __commonJS({\n \"node_modules/ieee754/index.js\"(exports) {\n exports.read = function(buffer, offset, isLE, mLen, nBytes) {\n var e, m;\n var eLen = nBytes * 8 - mLen - 1;\n var eMax = (1 << eLen) - 1;\n var eBias = eMax >> 1;\n var nBits = -7;\n var i = isLE ? nBytes - 1 : 0;\n var d = isLE ? -1 : 1;\n var s = buffer[offset + i];\n i += d;\n e = s & (1 << -nBits) - 1;\n s >>= -nBits;\n nBits += eLen;\n for (; nBits > 0; e = e * 256 + buffer[offset + i], i += d, nBits -= 8) {\n }\n m = e & (1 << -nBits) - 1;\n e >>= -nBits;\n nBits += mLen;\n for (; nBits > 0; m = m * 256 + buffer[offset + i], i += d, nBits -= 8) {\n }\n if (e === 0) {\n e = 1 - eBias;\n } else if (e === eMax) {\n return m ? NaN : (s ? -1 : 1) * Infinity;\n } else {\n m = m + Math.pow(2, mLen);\n e = e - eBias;\n }\n return (s ? -1 : 1) * m * Math.pow(2, e - mLen);\n };\n exports.write = function(buffer, value, offset, isLE, mLen, nBytes) {\n var e, m, c;\n var eLen = nBytes * 8 - mLen - 1;\n var eMax = (1 << eLen) - 1;\n var eBias = eMax >> 1;\n var rt = mLen === 23 ? Math.pow(2, -24) - Math.pow(2, -77) : 0;\n var i = isLE ? 0 : nBytes - 1;\n var d = isLE ? 1 : -1;\n var s = value < 0 || value === 0 && 1 / value < 0 ? 1 : 0;\n value = Math.abs(value);\n if (isNaN(value) || value === Infinity) {\n m = isNaN(value) ? 1 : 0;\n e = eMax;\n } else {\n e = Math.floor(Math.log(value) / Math.LN2);\n if (value * (c = Math.pow(2, -e)) < 1) {\n e--;\n c *= 2;\n }\n if (e + eBias >= 1) {\n value += rt / c;\n } else {\n value += rt * Math.pow(2, 1 - eBias);\n }\n if (value * c >= 2) {\n e++;\n c /= 2;\n }\n if (e + eBias >= eMax) {\n m = 0;\n e = eMax;\n } else if (e + eBias >= 1) {\n m = (value * c - 1) * Math.pow(2, mLen);\n e = e + eBias;\n } else {\n m = value * Math.pow(2, eBias - 1) * Math.pow(2, mLen);\n e = 0;\n }\n }\n for (; mLen >= 8; buffer[offset + i] = m & 255, i += d, m /= 256, mLen -= 8) {\n }\n e = e << mLen | m;\n eLen += mLen;\n for (; eLen > 0; buffer[offset + i] = e & 255, i += d, e /= 256, eLen -= 8) {\n }\n buffer[offset + i - d] |= s * 128;\n };\n }\n });\n\n // node_modules/buffer/index.js\n var require_buffer = __commonJS({\n \"node_modules/buffer/index.js\"(exports) {\n \"use strict\";\n var base64 = require_base64_js();\n var ieee754 = require_ieee754();\n var customInspectSymbol = typeof Symbol === \"function\" && typeof Symbol[\"for\"] === \"function\" ? Symbol[\"for\"](\"nodejs.util.inspect.custom\") : null;\n exports.Buffer = Buffer2;\n exports.SlowBuffer = SlowBuffer;\n exports.INSPECT_MAX_BYTES = 50;\n var K_MAX_LENGTH = 2147483647;\n exports.kMaxLength = K_MAX_LENGTH;\n Buffer2.TYPED_ARRAY_SUPPORT = typedArraySupport();\n if (!Buffer2.TYPED_ARRAY_SUPPORT && typeof console !== \"undefined\" && typeof console.error === \"function\") {\n console.error(\n \"This browser lacks typed array (Uint8Array) support which is required by `buffer` v5.x. Use `buffer` v4.x if you require old browser support.\"\n );\n }\n function typedArraySupport() {\n try {\n const arr = new Uint8Array(1);\n const proto = { foo: function() {\n return 42;\n } };\n Object.setPrototypeOf(proto, Uint8Array.prototype);\n Object.setPrototypeOf(arr, proto);\n return arr.foo() === 42;\n } catch (e) {\n return false;\n }\n }\n Object.defineProperty(Buffer2.prototype, \"parent\", {\n enumerable: true,\n get: function() {\n if (!Buffer2.isBuffer(this)) return void 0;\n return this.buffer;\n }\n });\n Object.defineProperty(Buffer2.prototype, \"offset\", {\n enumerable: true,\n get: function() {\n if (!Buffer2.isBuffer(this)) return void 0;\n return this.byteOffset;\n }\n });\n function createBuffer(length) {\n if (length > K_MAX_LENGTH) {\n throw new RangeError('The value \"' + length + '\" is invalid for option \"size\"');\n }\n const buf = new Uint8Array(length);\n Object.setPrototypeOf(buf, Buffer2.prototype);\n return buf;\n }\n function Buffer2(arg, encodingOrOffset, length) {\n if (typeof arg === \"number\") {\n if (typeof encodingOrOffset === \"string\") {\n throw new TypeError(\n 'The \"string\" argument must be of type string. Received type number'\n );\n }\n return allocUnsafe(arg);\n }\n return from(arg, encodingOrOffset, length);\n }\n Buffer2.poolSize = 8192;\n function from(value, encodingOrOffset, length) {\n if (typeof value === \"string\") {\n return fromString(value, encodingOrOffset);\n }\n if (ArrayBuffer.isView(value)) {\n return fromArrayView(value);\n }\n if (value == null) {\n throw new TypeError(\n \"The first argument must be one of type string, Buffer, ArrayBuffer, Array, or Array-like Object. Received type \" + typeof value\n );\n }\n if (isInstance(value, ArrayBuffer) || value && isInstance(value.buffer, ArrayBuffer)) {\n return fromArrayBuffer(value, encodingOrOffset, length);\n }\n if (typeof SharedArrayBuffer !== \"undefined\" && (isInstance(value, SharedArrayBuffer) || value && isInstance(value.buffer, SharedArrayBuffer))) {\n return fromArrayBuffer(value, encodingOrOffset, length);\n }\n if (typeof value === \"number\") {\n throw new TypeError(\n 'The \"value\" argument must not be of type number. Received type number'\n );\n }\n const valueOf = value.valueOf && value.valueOf();\n if (valueOf != null && valueOf !== value) {\n return Buffer2.from(valueOf, encodingOrOffset, length);\n }\n const b = fromObject(value);\n if (b) return b;\n if (typeof Symbol !== \"undefined\" && Symbol.toPrimitive != null && typeof value[Symbol.toPrimitive] === \"function\") {\n return Buffer2.from(value[Symbol.toPrimitive](\"string\"), encodingOrOffset, length);\n }\n throw new TypeError(\n \"The first argument must be one of type string, Buffer, ArrayBuffer, Array, or Array-like Object. Received type \" + typeof value\n );\n }\n Buffer2.from = function(value, encodingOrOffset, length) {\n return from(value, encodingOrOffset, length);\n };\n Object.setPrototypeOf(Buffer2.prototype, Uint8Array.prototype);\n Object.setPrototypeOf(Buffer2, Uint8Array);\n function assertSize(size) {\n if (typeof size !== \"number\") {\n throw new TypeError('\"size\" argument must be of type number');\n } else if (size < 0) {\n throw new RangeError('The value \"' + size + '\" is invalid for option \"size\"');\n }\n }\n function alloc(size, fill, encoding) {\n assertSize(size);\n if (size <= 0) {\n return createBuffer(size);\n }\n if (fill !== void 0) {\n return typeof encoding === \"string\" ? createBuffer(size).fill(fill, encoding) : createBuffer(size).fill(fill);\n }\n return createBuffer(size);\n }\n Buffer2.alloc = function(size, fill, encoding) {\n return alloc(size, fill, encoding);\n };\n function allocUnsafe(size) {\n assertSize(size);\n return createBuffer(size < 0 ? 0 : checked(size) | 0);\n }\n Buffer2.allocUnsafe = function(size) {\n return allocUnsafe(size);\n };\n Buffer2.allocUnsafeSlow = function(size) {\n return allocUnsafe(size);\n };\n function fromString(string, encoding) {\n if (typeof encoding !== \"string\" || encoding === \"\") {\n encoding = \"utf8\";\n }\n if (!Buffer2.isEncoding(encoding)) {\n throw new TypeError(\"Unknown encoding: \" + encoding);\n }\n const length = byteLength(string, encoding) | 0;\n let buf = createBuffer(length);\n const actual = buf.write(string, encoding);\n if (actual !== length) {\n buf = buf.slice(0, actual);\n }\n return buf;\n }\n function fromArrayLike(array) {\n const length = array.length < 0 ? 0 : checked(array.length) | 0;\n const buf = createBuffer(length);\n for (let i = 0; i < length; i += 1) {\n buf[i] = array[i] & 255;\n }\n return buf;\n }\n function fromArrayView(arrayView) {\n if (isInstance(arrayView, Uint8Array)) {\n const copy = new Uint8Array(arrayView);\n return fromArrayBuffer(copy.buffer, copy.byteOffset, copy.byteLength);\n }\n return fromArrayLike(arrayView);\n }\n function fromArrayBuffer(array, byteOffset, length) {\n if (byteOffset < 0 || array.byteLength < byteOffset) {\n throw new RangeError('\"offset\" is outside of buffer bounds');\n }\n if (array.byteLength < byteOffset + (length || 0)) {\n throw new RangeError('\"length\" is outside of buffer bounds');\n }\n let buf;\n if (byteOffset === void 0 && length === void 0) {\n buf = new Uint8Array(array);\n } else if (length === void 0) {\n buf = new Uint8Array(array, byteOffset);\n } else {\n buf = new Uint8Array(array, byteOffset, length);\n }\n Object.setPrototypeOf(buf, Buffer2.prototype);\n return buf;\n }\n function fromObject(obj) {\n if (Buffer2.isBuffer(obj)) {\n const len = checked(obj.length) | 0;\n const buf = createBuffer(len);\n if (buf.length === 0) {\n return buf;\n }\n obj.copy(buf, 0, 0, len);\n return buf;\n }\n if (obj.length !== void 0) {\n if (typeof obj.length !== \"number\" || numberIsNaN(obj.length)) {\n return createBuffer(0);\n }\n return fromArrayLike(obj);\n }\n if (obj.type === \"Buffer\" && Array.isArray(obj.data)) {\n return fromArrayLike(obj.data);\n }\n }\n function checked(length) {\n if (length >= K_MAX_LENGTH) {\n throw new RangeError(\"Attempt to allocate Buffer larger than maximum size: 0x\" + K_MAX_LENGTH.toString(16) + \" bytes\");\n }\n return length | 0;\n }\n function SlowBuffer(length) {\n if (+length != length) {\n length = 0;\n }\n return Buffer2.alloc(+length);\n }\n Buffer2.isBuffer = function isBuffer(b) {\n return b != null && b._isBuffer === true && b !== Buffer2.prototype;\n };\n Buffer2.compare = function compare(a, b) {\n if (isInstance(a, Uint8Array)) a = Buffer2.from(a, a.offset, a.byteLength);\n if (isInstance(b, Uint8Array)) b = Buffer2.from(b, b.offset, b.byteLength);\n if (!Buffer2.isBuffer(a) || !Buffer2.isBuffer(b)) {\n throw new TypeError(\n 'The \"buf1\", \"buf2\" arguments must be one of type Buffer or Uint8Array'\n );\n }\n if (a === b) return 0;\n let x = a.length;\n let y = b.length;\n for (let i = 0, len = Math.min(x, y); i < len; ++i) {\n if (a[i] !== b[i]) {\n x = a[i];\n y = b[i];\n break;\n }\n }\n if (x < y) return -1;\n if (y < x) return 1;\n return 0;\n };\n Buffer2.isEncoding = function isEncoding(encoding) {\n switch (String(encoding).toLowerCase()) {\n case \"hex\":\n case \"utf8\":\n case \"utf-8\":\n case \"ascii\":\n case \"latin1\":\n case \"binary\":\n case \"base64\":\n case \"ucs2\":\n case \"ucs-2\":\n case \"utf16le\":\n case \"utf-16le\":\n return true;\n default:\n return false;\n }\n };\n Buffer2.concat = function concat(list, length) {\n if (!Array.isArray(list)) {\n throw new TypeError('\"list\" argument must be an Array of Buffers');\n }\n if (list.length === 0) {\n return Buffer2.alloc(0);\n }\n let i;\n if (length === void 0) {\n length = 0;\n for (i = 0; i < list.length; ++i) {\n length += list[i].length;\n }\n }\n const buffer = Buffer2.allocUnsafe(length);\n let pos = 0;\n for (i = 0; i < list.length; ++i) {\n let buf = list[i];\n if (isInstance(buf, Uint8Array)) {\n if (pos + buf.length > buffer.length) {\n if (!Buffer2.isBuffer(buf)) buf = Buffer2.from(buf);\n buf.copy(buffer, pos);\n } else {\n Uint8Array.prototype.set.call(\n buffer,\n buf,\n pos\n );\n }\n } else if (!Buffer2.isBuffer(buf)) {\n throw new TypeError('\"list\" argument must be an Array of Buffers');\n } else {\n buf.copy(buffer, pos);\n }\n pos += buf.length;\n }\n return buffer;\n };\n function byteLength(string, encoding) {\n if (Buffer2.isBuffer(string)) {\n return string.length;\n }\n if (ArrayBuffer.isView(string) || isInstance(string, ArrayBuffer)) {\n return string.byteLength;\n }\n if (typeof string !== \"string\") {\n throw new TypeError(\n 'The \"string\" argument must be one of type string, Buffer, or ArrayBuffer. Received type ' + typeof string\n );\n }\n const len = string.length;\n const mustMatch = arguments.length > 2 && arguments[2] === true;\n if (!mustMatch && len === 0) return 0;\n let loweredCase = false;\n for (; ; ) {\n switch (encoding) {\n case \"ascii\":\n case \"latin1\":\n case \"binary\":\n return len;\n case \"utf8\":\n case \"utf-8\":\n return utf8ToBytes(string).length;\n case \"ucs2\":\n case \"ucs-2\":\n case \"utf16le\":\n case \"utf-16le\":\n return len * 2;\n case \"hex\":\n return len >>> 1;\n case \"base64\":\n return base64ToBytes(string).length;\n default:\n if (loweredCase) {\n return mustMatch ? -1 : utf8ToBytes(string).length;\n }\n encoding = (\"\" + encoding).toLowerCase();\n loweredCase = true;\n }\n }\n }\n Buffer2.byteLength = byteLength;\n function slowToString(encoding, start, end) {\n let loweredCase = false;\n if (start === void 0 || start < 0) {\n start = 0;\n }\n if (start > this.length) {\n return \"\";\n }\n if (end === void 0 || end > this.length) {\n end = this.length;\n }\n if (end <= 0) {\n return \"\";\n }\n end >>>= 0;\n start >>>= 0;\n if (end <= start) {\n return \"\";\n }\n if (!encoding) encoding = \"utf8\";\n while (true) {\n switch (encoding) {\n case \"hex\":\n return hexSlice(this, start, end);\n case \"utf8\":\n case \"utf-8\":\n return utf8Slice(this, start, end);\n case \"ascii\":\n return asciiSlice(this, start, end);\n case \"latin1\":\n case \"binary\":\n return latin1Slice(this, start, end);\n case \"base64\":\n return base64Slice(this, start, end);\n case \"ucs2\":\n case \"ucs-2\":\n case \"utf16le\":\n case \"utf-16le\":\n return utf16leSlice(this, start, end);\n default:\n if (loweredCase) throw new TypeError(\"Unknown encoding: \" + encoding);\n encoding = (encoding + \"\").toLowerCase();\n loweredCase = true;\n }\n }\n }\n Buffer2.prototype._isBuffer = true;\n function swap(b, n, m) {\n const i = b[n];\n b[n] = b[m];\n b[m] = i;\n }\n Buffer2.prototype.swap16 = function swap16() {\n const len = this.length;\n if (len % 2 !== 0) {\n throw new RangeError(\"Buffer size must be a multiple of 16-bits\");\n }\n for (let i = 0; i < len; i += 2) {\n swap(this, i, i + 1);\n }\n return this;\n };\n Buffer2.prototype.swap32 = function swap32() {\n const len = this.length;\n if (len % 4 !== 0) {\n throw new RangeError(\"Buffer size must be a multiple of 32-bits\");\n }\n for (let i = 0; i < len; i += 4) {\n swap(this, i, i + 3);\n swap(this, i + 1, i + 2);\n }\n return this;\n };\n Buffer2.prototype.swap64 = function swap64() {\n const len = this.length;\n if (len % 8 !== 0) {\n throw new RangeError(\"Buffer size must be a multiple of 64-bits\");\n }\n for (let i = 0; i < len; i += 8) {\n swap(this, i, i + 7);\n swap(this, i + 1, i + 6);\n swap(this, i + 2, i + 5);\n swap(this, i + 3, i + 4);\n }\n return this;\n };\n Buffer2.prototype.toString = function toString() {\n const length = this.length;\n if (length === 0) return \"\";\n if (arguments.length === 0) return utf8Slice(this, 0, length);\n return slowToString.apply(this, arguments);\n };\n Buffer2.prototype.toLocaleString = Buffer2.prototype.toString;\n Buffer2.prototype.equals = function equals(b) {\n if (!Buffer2.isBuffer(b)) throw new TypeError(\"Argument must be a Buffer\");\n if (this === b) return true;\n return Buffer2.compare(this, b) === 0;\n };\n Buffer2.prototype.inspect = function inspect() {\n let str = \"\";\n const max = exports.INSPECT_MAX_BYTES;\n str = this.toString(\"hex\", 0, max).replace(/(.{2})/g, \"$1 \").trim();\n if (this.length > max) str += \" ... \";\n return \"\";\n };\n if (customInspectSymbol) {\n Buffer2.prototype[customInspectSymbol] = Buffer2.prototype.inspect;\n }\n Buffer2.prototype.compare = function compare(target, start, end, thisStart, thisEnd) {\n if (isInstance(target, Uint8Array)) {\n target = Buffer2.from(target, target.offset, target.byteLength);\n }\n if (!Buffer2.isBuffer(target)) {\n throw new TypeError(\n 'The \"target\" argument must be one of type Buffer or Uint8Array. Received type ' + typeof target\n );\n }\n if (start === void 0) {\n start = 0;\n }\n if (end === void 0) {\n end = target ? target.length : 0;\n }\n if (thisStart === void 0) {\n thisStart = 0;\n }\n if (thisEnd === void 0) {\n thisEnd = this.length;\n }\n if (start < 0 || end > target.length || thisStart < 0 || thisEnd > this.length) {\n throw new RangeError(\"out of range index\");\n }\n if (thisStart >= thisEnd && start >= end) {\n return 0;\n }\n if (thisStart >= thisEnd) {\n return -1;\n }\n if (start >= end) {\n return 1;\n }\n start >>>= 0;\n end >>>= 0;\n thisStart >>>= 0;\n thisEnd >>>= 0;\n if (this === target) return 0;\n let x = thisEnd - thisStart;\n let y = end - start;\n const len = Math.min(x, y);\n const thisCopy = this.slice(thisStart, thisEnd);\n const targetCopy = target.slice(start, end);\n for (let i = 0; i < len; ++i) {\n if (thisCopy[i] !== targetCopy[i]) {\n x = thisCopy[i];\n y = targetCopy[i];\n break;\n }\n }\n if (x < y) return -1;\n if (y < x) return 1;\n return 0;\n };\n function bidirectionalIndexOf(buffer, val, byteOffset, encoding, dir) {\n if (buffer.length === 0) return -1;\n if (typeof byteOffset === \"string\") {\n encoding = byteOffset;\n byteOffset = 0;\n } else if (byteOffset > 2147483647) {\n byteOffset = 2147483647;\n } else if (byteOffset < -2147483648) {\n byteOffset = -2147483648;\n }\n byteOffset = +byteOffset;\n if (numberIsNaN(byteOffset)) {\n byteOffset = dir ? 0 : buffer.length - 1;\n }\n if (byteOffset < 0) byteOffset = buffer.length + byteOffset;\n if (byteOffset >= buffer.length) {\n if (dir) return -1;\n else byteOffset = buffer.length - 1;\n } else if (byteOffset < 0) {\n if (dir) byteOffset = 0;\n else return -1;\n }\n if (typeof val === \"string\") {\n val = Buffer2.from(val, encoding);\n }\n if (Buffer2.isBuffer(val)) {\n if (val.length === 0) {\n return -1;\n }\n return arrayIndexOf(buffer, val, byteOffset, encoding, dir);\n } else if (typeof val === \"number\") {\n val = val & 255;\n if (typeof Uint8Array.prototype.indexOf === \"function\") {\n if (dir) {\n return Uint8Array.prototype.indexOf.call(buffer, val, byteOffset);\n } else {\n return Uint8Array.prototype.lastIndexOf.call(buffer, val, byteOffset);\n }\n }\n return arrayIndexOf(buffer, [val], byteOffset, encoding, dir);\n }\n throw new TypeError(\"val must be string, number or Buffer\");\n }\n function arrayIndexOf(arr, val, byteOffset, encoding, dir) {\n let indexSize = 1;\n let arrLength = arr.length;\n let valLength = val.length;\n if (encoding !== void 0) {\n encoding = String(encoding).toLowerCase();\n if (encoding === \"ucs2\" || encoding === \"ucs-2\" || encoding === \"utf16le\" || encoding === \"utf-16le\") {\n if (arr.length < 2 || val.length < 2) {\n return -1;\n }\n indexSize = 2;\n arrLength /= 2;\n valLength /= 2;\n byteOffset /= 2;\n }\n }\n function read(buf, i2) {\n if (indexSize === 1) {\n return buf[i2];\n } else {\n return buf.readUInt16BE(i2 * indexSize);\n }\n }\n let i;\n if (dir) {\n let foundIndex = -1;\n for (i = byteOffset; i < arrLength; i++) {\n if (read(arr, i) === read(val, foundIndex === -1 ? 0 : i - foundIndex)) {\n if (foundIndex === -1) foundIndex = i;\n if (i - foundIndex + 1 === valLength) return foundIndex * indexSize;\n } else {\n if (foundIndex !== -1) i -= i - foundIndex;\n foundIndex = -1;\n }\n }\n } else {\n if (byteOffset + valLength > arrLength) byteOffset = arrLength - valLength;\n for (i = byteOffset; i >= 0; i--) {\n let found = true;\n for (let j = 0; j < valLength; j++) {\n if (read(arr, i + j) !== read(val, j)) {\n found = false;\n break;\n }\n }\n if (found) return i;\n }\n }\n return -1;\n }\n Buffer2.prototype.includes = function includes(val, byteOffset, encoding) {\n return this.indexOf(val, byteOffset, encoding) !== -1;\n };\n Buffer2.prototype.indexOf = function indexOf(val, byteOffset, encoding) {\n return bidirectionalIndexOf(this, val, byteOffset, encoding, true);\n };\n Buffer2.prototype.lastIndexOf = function lastIndexOf(val, byteOffset, encoding) {\n return bidirectionalIndexOf(this, val, byteOffset, encoding, false);\n };\n function hexWrite(buf, string, offset, length) {\n offset = Number(offset) || 0;\n const remaining = buf.length - offset;\n if (!length) {\n length = remaining;\n } else {\n length = Number(length);\n if (length > remaining) {\n length = remaining;\n }\n }\n const strLen = string.length;\n if (length > strLen / 2) {\n length = strLen / 2;\n }\n let i;\n for (i = 0; i < length; ++i) {\n const parsed = parseInt(string.substr(i * 2, 2), 16);\n if (numberIsNaN(parsed)) return i;\n buf[offset + i] = parsed;\n }\n return i;\n }\n function utf8Write(buf, string, offset, length) {\n return blitBuffer(utf8ToBytes(string, buf.length - offset), buf, offset, length);\n }\n function asciiWrite(buf, string, offset, length) {\n return blitBuffer(asciiToBytes(string), buf, offset, length);\n }\n function base64Write(buf, string, offset, length) {\n return blitBuffer(base64ToBytes(string), buf, offset, length);\n }\n function ucs2Write(buf, string, offset, length) {\n return blitBuffer(utf16leToBytes(string, buf.length - offset), buf, offset, length);\n }\n Buffer2.prototype.write = function write(string, offset, length, encoding) {\n if (offset === void 0) {\n encoding = \"utf8\";\n length = this.length;\n offset = 0;\n } else if (length === void 0 && typeof offset === \"string\") {\n encoding = offset;\n length = this.length;\n offset = 0;\n } else if (isFinite(offset)) {\n offset = offset >>> 0;\n if (isFinite(length)) {\n length = length >>> 0;\n if (encoding === void 0) encoding = \"utf8\";\n } else {\n encoding = length;\n length = void 0;\n }\n } else {\n throw new Error(\n \"Buffer.write(string, encoding, offset[, length]) is no longer supported\"\n );\n }\n const remaining = this.length - offset;\n if (length === void 0 || length > remaining) length = remaining;\n if (string.length > 0 && (length < 0 || offset < 0) || offset > this.length) {\n throw new RangeError(\"Attempt to write outside buffer bounds\");\n }\n if (!encoding) encoding = \"utf8\";\n let loweredCase = false;\n for (; ; ) {\n switch (encoding) {\n case \"hex\":\n return hexWrite(this, string, offset, length);\n case \"utf8\":\n case \"utf-8\":\n return utf8Write(this, string, offset, length);\n case \"ascii\":\n case \"latin1\":\n case \"binary\":\n return asciiWrite(this, string, offset, length);\n case \"base64\":\n return base64Write(this, string, offset, length);\n case \"ucs2\":\n case \"ucs-2\":\n case \"utf16le\":\n case \"utf-16le\":\n return ucs2Write(this, string, offset, length);\n default:\n if (loweredCase) throw new TypeError(\"Unknown encoding: \" + encoding);\n encoding = (\"\" + encoding).toLowerCase();\n loweredCase = true;\n }\n }\n };\n Buffer2.prototype.toJSON = function toJSON() {\n return {\n type: \"Buffer\",\n data: Array.prototype.slice.call(this._arr || this, 0)\n };\n };\n function base64Slice(buf, start, end) {\n if (start === 0 && end === buf.length) {\n return base64.fromByteArray(buf);\n } else {\n return base64.fromByteArray(buf.slice(start, end));\n }\n }\n function utf8Slice(buf, start, end) {\n end = Math.min(buf.length, end);\n const res = [];\n let i = start;\n while (i < end) {\n const firstByte = buf[i];\n let codePoint = null;\n let bytesPerSequence = firstByte > 239 ? 4 : firstByte > 223 ? 3 : firstByte > 191 ? 2 : 1;\n if (i + bytesPerSequence <= end) {\n let secondByte, thirdByte, fourthByte, tempCodePoint;\n switch (bytesPerSequence) {\n case 1:\n if (firstByte < 128) {\n codePoint = firstByte;\n }\n break;\n case 2:\n secondByte = buf[i + 1];\n if ((secondByte & 192) === 128) {\n tempCodePoint = (firstByte & 31) << 6 | secondByte & 63;\n if (tempCodePoint > 127) {\n codePoint = tempCodePoint;\n }\n }\n break;\n case 3:\n secondByte = buf[i + 1];\n thirdByte = buf[i + 2];\n if ((secondByte & 192) === 128 && (thirdByte & 192) === 128) {\n tempCodePoint = (firstByte & 15) << 12 | (secondByte & 63) << 6 | thirdByte & 63;\n if (tempCodePoint > 2047 && (tempCodePoint < 55296 || tempCodePoint > 57343)) {\n codePoint = tempCodePoint;\n }\n }\n break;\n case 4:\n secondByte = buf[i + 1];\n thirdByte = buf[i + 2];\n fourthByte = buf[i + 3];\n if ((secondByte & 192) === 128 && (thirdByte & 192) === 128 && (fourthByte & 192) === 128) {\n tempCodePoint = (firstByte & 15) << 18 | (secondByte & 63) << 12 | (thirdByte & 63) << 6 | fourthByte & 63;\n if (tempCodePoint > 65535 && tempCodePoint < 1114112) {\n codePoint = tempCodePoint;\n }\n }\n }\n }\n if (codePoint === null) {\n codePoint = 65533;\n bytesPerSequence = 1;\n } else if (codePoint > 65535) {\n codePoint -= 65536;\n res.push(codePoint >>> 10 & 1023 | 55296);\n codePoint = 56320 | codePoint & 1023;\n }\n res.push(codePoint);\n i += bytesPerSequence;\n }\n return decodeCodePointsArray(res);\n }\n var MAX_ARGUMENTS_LENGTH = 4096;\n function decodeCodePointsArray(codePoints) {\n const len = codePoints.length;\n if (len <= MAX_ARGUMENTS_LENGTH) {\n return String.fromCharCode.apply(String, codePoints);\n }\n let res = \"\";\n let i = 0;\n while (i < len) {\n res += String.fromCharCode.apply(\n String,\n codePoints.slice(i, i += MAX_ARGUMENTS_LENGTH)\n );\n }\n return res;\n }\n function asciiSlice(buf, start, end) {\n let ret = \"\";\n end = Math.min(buf.length, end);\n for (let i = start; i < end; ++i) {\n ret += String.fromCharCode(buf[i] & 127);\n }\n return ret;\n }\n function latin1Slice(buf, start, end) {\n let ret = \"\";\n end = Math.min(buf.length, end);\n for (let i = start; i < end; ++i) {\n ret += String.fromCharCode(buf[i]);\n }\n return ret;\n }\n function hexSlice(buf, start, end) {\n const len = buf.length;\n if (!start || start < 0) start = 0;\n if (!end || end < 0 || end > len) end = len;\n let out = \"\";\n for (let i = start; i < end; ++i) {\n out += hexSliceLookupTable[buf[i]];\n }\n return out;\n }\n function utf16leSlice(buf, start, end) {\n const bytes = buf.slice(start, end);\n let res = \"\";\n for (let i = 0; i < bytes.length - 1; i += 2) {\n res += String.fromCharCode(bytes[i] + bytes[i + 1] * 256);\n }\n return res;\n }\n Buffer2.prototype.slice = function slice(start, end) {\n const len = this.length;\n start = ~~start;\n end = end === void 0 ? len : ~~end;\n if (start < 0) {\n start += len;\n if (start < 0) start = 0;\n } else if (start > len) {\n start = len;\n }\n if (end < 0) {\n end += len;\n if (end < 0) end = 0;\n } else if (end > len) {\n end = len;\n }\n if (end < start) end = start;\n const newBuf = this.subarray(start, end);\n Object.setPrototypeOf(newBuf, Buffer2.prototype);\n return newBuf;\n };\n function checkOffset(offset, ext, length) {\n if (offset % 1 !== 0 || offset < 0) throw new RangeError(\"offset is not uint\");\n if (offset + ext > length) throw new RangeError(\"Trying to access beyond buffer length\");\n }\n Buffer2.prototype.readUintLE = Buffer2.prototype.readUIntLE = function readUIntLE(offset, byteLength2, noAssert) {\n offset = offset >>> 0;\n byteLength2 = byteLength2 >>> 0;\n if (!noAssert) checkOffset(offset, byteLength2, this.length);\n let val = this[offset];\n let mul = 1;\n let i = 0;\n while (++i < byteLength2 && (mul *= 256)) {\n val += this[offset + i] * mul;\n }\n return val;\n };\n Buffer2.prototype.readUintBE = Buffer2.prototype.readUIntBE = function readUIntBE(offset, byteLength2, noAssert) {\n offset = offset >>> 0;\n byteLength2 = byteLength2 >>> 0;\n if (!noAssert) {\n checkOffset(offset, byteLength2, this.length);\n }\n let val = this[offset + --byteLength2];\n let mul = 1;\n while (byteLength2 > 0 && (mul *= 256)) {\n val += this[offset + --byteLength2] * mul;\n }\n return val;\n };\n Buffer2.prototype.readUint8 = Buffer2.prototype.readUInt8 = function readUInt8(offset, noAssert) {\n offset = offset >>> 0;\n if (!noAssert) checkOffset(offset, 1, this.length);\n return this[offset];\n };\n Buffer2.prototype.readUint16LE = Buffer2.prototype.readUInt16LE = function readUInt16LE(offset, noAssert) {\n offset = offset >>> 0;\n if (!noAssert) checkOffset(offset, 2, this.length);\n return this[offset] | this[offset + 1] << 8;\n };\n Buffer2.prototype.readUint16BE = Buffer2.prototype.readUInt16BE = function readUInt16BE(offset, noAssert) {\n offset = offset >>> 0;\n if (!noAssert) checkOffset(offset, 2, this.length);\n return this[offset] << 8 | this[offset + 1];\n };\n Buffer2.prototype.readUint32LE = Buffer2.prototype.readUInt32LE = function readUInt32LE(offset, noAssert) {\n offset = offset >>> 0;\n if (!noAssert) checkOffset(offset, 4, this.length);\n return (this[offset] | this[offset + 1] << 8 | this[offset + 2] << 16) + this[offset + 3] * 16777216;\n };\n Buffer2.prototype.readUint32BE = Buffer2.prototype.readUInt32BE = function readUInt32BE(offset, noAssert) {\n offset = offset >>> 0;\n if (!noAssert) checkOffset(offset, 4, this.length);\n return this[offset] * 16777216 + (this[offset + 1] << 16 | this[offset + 2] << 8 | this[offset + 3]);\n };\n Buffer2.prototype.readBigUInt64LE = defineBigIntMethod(function readBigUInt64LE(offset) {\n offset = offset >>> 0;\n validateNumber(offset, \"offset\");\n const first = this[offset];\n const last = this[offset + 7];\n if (first === void 0 || last === void 0) {\n boundsError(offset, this.length - 8);\n }\n const lo = first + this[++offset] * 2 ** 8 + this[++offset] * 2 ** 16 + this[++offset] * 2 ** 24;\n const hi = this[++offset] + this[++offset] * 2 ** 8 + this[++offset] * 2 ** 16 + last * 2 ** 24;\n return BigInt(lo) + (BigInt(hi) << BigInt(32));\n });\n Buffer2.prototype.readBigUInt64BE = defineBigIntMethod(function readBigUInt64BE(offset) {\n offset = offset >>> 0;\n validateNumber(offset, \"offset\");\n const first = this[offset];\n const last = this[offset + 7];\n if (first === void 0 || last === void 0) {\n boundsError(offset, this.length - 8);\n }\n const hi = first * 2 ** 24 + this[++offset] * 2 ** 16 + this[++offset] * 2 ** 8 + this[++offset];\n const lo = this[++offset] * 2 ** 24 + this[++offset] * 2 ** 16 + this[++offset] * 2 ** 8 + last;\n return (BigInt(hi) << BigInt(32)) + BigInt(lo);\n });\n Buffer2.prototype.readIntLE = function readIntLE(offset, byteLength2, noAssert) {\n offset = offset >>> 0;\n byteLength2 = byteLength2 >>> 0;\n if (!noAssert) checkOffset(offset, byteLength2, this.length);\n let val = this[offset];\n let mul = 1;\n let i = 0;\n while (++i < byteLength2 && (mul *= 256)) {\n val += this[offset + i] * mul;\n }\n mul *= 128;\n if (val >= mul) val -= Math.pow(2, 8 * byteLength2);\n return val;\n };\n Buffer2.prototype.readIntBE = function readIntBE(offset, byteLength2, noAssert) {\n offset = offset >>> 0;\n byteLength2 = byteLength2 >>> 0;\n if (!noAssert) checkOffset(offset, byteLength2, this.length);\n let i = byteLength2;\n let mul = 1;\n let val = this[offset + --i];\n while (i > 0 && (mul *= 256)) {\n val += this[offset + --i] * mul;\n }\n mul *= 128;\n if (val >= mul) val -= Math.pow(2, 8 * byteLength2);\n return val;\n };\n Buffer2.prototype.readInt8 = function readInt8(offset, noAssert) {\n offset = offset >>> 0;\n if (!noAssert) checkOffset(offset, 1, this.length);\n if (!(this[offset] & 128)) return this[offset];\n return (255 - this[offset] + 1) * -1;\n };\n Buffer2.prototype.readInt16LE = function readInt16LE(offset, noAssert) {\n offset = offset >>> 0;\n if (!noAssert) checkOffset(offset, 2, this.length);\n const val = this[offset] | this[offset + 1] << 8;\n return val & 32768 ? val | 4294901760 : val;\n };\n Buffer2.prototype.readInt16BE = function readInt16BE(offset, noAssert) {\n offset = offset >>> 0;\n if (!noAssert) checkOffset(offset, 2, this.length);\n const val = this[offset + 1] | this[offset] << 8;\n return val & 32768 ? val | 4294901760 : val;\n };\n Buffer2.prototype.readInt32LE = function readInt32LE(offset, noAssert) {\n offset = offset >>> 0;\n if (!noAssert) checkOffset(offset, 4, this.length);\n return this[offset] | this[offset + 1] << 8 | this[offset + 2] << 16 | this[offset + 3] << 24;\n };\n Buffer2.prototype.readInt32BE = function readInt32BE(offset, noAssert) {\n offset = offset >>> 0;\n if (!noAssert) checkOffset(offset, 4, this.length);\n return this[offset] << 24 | this[offset + 1] << 16 | this[offset + 2] << 8 | this[offset + 3];\n };\n Buffer2.prototype.readBigInt64LE = defineBigIntMethod(function readBigInt64LE(offset) {\n offset = offset >>> 0;\n validateNumber(offset, \"offset\");\n const first = this[offset];\n const last = this[offset + 7];\n if (first === void 0 || last === void 0) {\n boundsError(offset, this.length - 8);\n }\n const val = this[offset + 4] + this[offset + 5] * 2 ** 8 + this[offset + 6] * 2 ** 16 + (last << 24);\n return (BigInt(val) << BigInt(32)) + BigInt(first + this[++offset] * 2 ** 8 + this[++offset] * 2 ** 16 + this[++offset] * 2 ** 24);\n });\n Buffer2.prototype.readBigInt64BE = defineBigIntMethod(function readBigInt64BE(offset) {\n offset = offset >>> 0;\n validateNumber(offset, \"offset\");\n const first = this[offset];\n const last = this[offset + 7];\n if (first === void 0 || last === void 0) {\n boundsError(offset, this.length - 8);\n }\n const val = (first << 24) + // Overflow\n this[++offset] * 2 ** 16 + this[++offset] * 2 ** 8 + this[++offset];\n return (BigInt(val) << BigInt(32)) + BigInt(this[++offset] * 2 ** 24 + this[++offset] * 2 ** 16 + this[++offset] * 2 ** 8 + last);\n });\n Buffer2.prototype.readFloatLE = function readFloatLE(offset, noAssert) {\n offset = offset >>> 0;\n if (!noAssert) checkOffset(offset, 4, this.length);\n return ieee754.read(this, offset, true, 23, 4);\n };\n Buffer2.prototype.readFloatBE = function readFloatBE(offset, noAssert) {\n offset = offset >>> 0;\n if (!noAssert) checkOffset(offset, 4, this.length);\n return ieee754.read(this, offset, false, 23, 4);\n };\n Buffer2.prototype.readDoubleLE = function readDoubleLE(offset, noAssert) {\n offset = offset >>> 0;\n if (!noAssert) checkOffset(offset, 8, this.length);\n return ieee754.read(this, offset, true, 52, 8);\n };\n Buffer2.prototype.readDoubleBE = function readDoubleBE(offset, noAssert) {\n offset = offset >>> 0;\n if (!noAssert) checkOffset(offset, 8, this.length);\n return ieee754.read(this, offset, false, 52, 8);\n };\n function checkInt(buf, value, offset, ext, max, min) {\n if (!Buffer2.isBuffer(buf)) throw new TypeError('\"buffer\" argument must be a Buffer instance');\n if (value > max || value < min) throw new RangeError('\"value\" argument is out of bounds');\n if (offset + ext > buf.length) throw new RangeError(\"Index out of range\");\n }\n Buffer2.prototype.writeUintLE = Buffer2.prototype.writeUIntLE = function writeUIntLE(value, offset, byteLength2, noAssert) {\n value = +value;\n offset = offset >>> 0;\n byteLength2 = byteLength2 >>> 0;\n if (!noAssert) {\n const maxBytes = Math.pow(2, 8 * byteLength2) - 1;\n checkInt(this, value, offset, byteLength2, maxBytes, 0);\n }\n let mul = 1;\n let i = 0;\n this[offset] = value & 255;\n while (++i < byteLength2 && (mul *= 256)) {\n this[offset + i] = value / mul & 255;\n }\n return offset + byteLength2;\n };\n Buffer2.prototype.writeUintBE = Buffer2.prototype.writeUIntBE = function writeUIntBE(value, offset, byteLength2, noAssert) {\n value = +value;\n offset = offset >>> 0;\n byteLength2 = byteLength2 >>> 0;\n if (!noAssert) {\n const maxBytes = Math.pow(2, 8 * byteLength2) - 1;\n checkInt(this, value, offset, byteLength2, maxBytes, 0);\n }\n let i = byteLength2 - 1;\n let mul = 1;\n this[offset + i] = value & 255;\n while (--i >= 0 && (mul *= 256)) {\n this[offset + i] = value / mul & 255;\n }\n return offset + byteLength2;\n };\n Buffer2.prototype.writeUint8 = Buffer2.prototype.writeUInt8 = function writeUInt8(value, offset, noAssert) {\n value = +value;\n offset = offset >>> 0;\n if (!noAssert) checkInt(this, value, offset, 1, 255, 0);\n this[offset] = value & 255;\n return offset + 1;\n };\n Buffer2.prototype.writeUint16LE = Buffer2.prototype.writeUInt16LE = function writeUInt16LE(value, offset, noAssert) {\n value = +value;\n offset = offset >>> 0;\n if (!noAssert) checkInt(this, value, offset, 2, 65535, 0);\n this[offset] = value & 255;\n this[offset + 1] = value >>> 8;\n return offset + 2;\n };\n Buffer2.prototype.writeUint16BE = Buffer2.prototype.writeUInt16BE = function writeUInt16BE(value, offset, noAssert) {\n value = +value;\n offset = offset >>> 0;\n if (!noAssert) checkInt(this, value, offset, 2, 65535, 0);\n this[offset] = value >>> 8;\n this[offset + 1] = value & 255;\n return offset + 2;\n };\n Buffer2.prototype.writeUint32LE = Buffer2.prototype.writeUInt32LE = function writeUInt32LE(value, offset, noAssert) {\n value = +value;\n offset = offset >>> 0;\n if (!noAssert) checkInt(this, value, offset, 4, 4294967295, 0);\n this[offset + 3] = value >>> 24;\n this[offset + 2] = value >>> 16;\n this[offset + 1] = value >>> 8;\n this[offset] = value & 255;\n return offset + 4;\n };\n Buffer2.prototype.writeUint32BE = Buffer2.prototype.writeUInt32BE = function writeUInt32BE(value, offset, noAssert) {\n value = +value;\n offset = offset >>> 0;\n if (!noAssert) checkInt(this, value, offset, 4, 4294967295, 0);\n this[offset] = value >>> 24;\n this[offset + 1] = value >>> 16;\n this[offset + 2] = value >>> 8;\n this[offset + 3] = value & 255;\n return offset + 4;\n };\n function wrtBigUInt64LE(buf, value, offset, min, max) {\n checkIntBI(value, min, max, buf, offset, 7);\n let lo = Number(value & BigInt(4294967295));\n buf[offset++] = lo;\n lo = lo >> 8;\n buf[offset++] = lo;\n lo = lo >> 8;\n buf[offset++] = lo;\n lo = lo >> 8;\n buf[offset++] = lo;\n let hi = Number(value >> BigInt(32) & BigInt(4294967295));\n buf[offset++] = hi;\n hi = hi >> 8;\n buf[offset++] = hi;\n hi = hi >> 8;\n buf[offset++] = hi;\n hi = hi >> 8;\n buf[offset++] = hi;\n return offset;\n }\n function wrtBigUInt64BE(buf, value, offset, min, max) {\n checkIntBI(value, min, max, buf, offset, 7);\n let lo = Number(value & BigInt(4294967295));\n buf[offset + 7] = lo;\n lo = lo >> 8;\n buf[offset + 6] = lo;\n lo = lo >> 8;\n buf[offset + 5] = lo;\n lo = lo >> 8;\n buf[offset + 4] = lo;\n let hi = Number(value >> BigInt(32) & BigInt(4294967295));\n buf[offset + 3] = hi;\n hi = hi >> 8;\n buf[offset + 2] = hi;\n hi = hi >> 8;\n buf[offset + 1] = hi;\n hi = hi >> 8;\n buf[offset] = hi;\n return offset + 8;\n }\n Buffer2.prototype.writeBigUInt64LE = defineBigIntMethod(function writeBigUInt64LE(value, offset = 0) {\n return wrtBigUInt64LE(this, value, offset, BigInt(0), BigInt(\"0xffffffffffffffff\"));\n });\n Buffer2.prototype.writeBigUInt64BE = defineBigIntMethod(function writeBigUInt64BE(value, offset = 0) {\n return wrtBigUInt64BE(this, value, offset, BigInt(0), BigInt(\"0xffffffffffffffff\"));\n });\n Buffer2.prototype.writeIntLE = function writeIntLE(value, offset, byteLength2, noAssert) {\n value = +value;\n offset = offset >>> 0;\n if (!noAssert) {\n const limit = Math.pow(2, 8 * byteLength2 - 1);\n checkInt(this, value, offset, byteLength2, limit - 1, -limit);\n }\n let i = 0;\n let mul = 1;\n let sub = 0;\n this[offset] = value & 255;\n while (++i < byteLength2 && (mul *= 256)) {\n if (value < 0 && sub === 0 && this[offset + i - 1] !== 0) {\n sub = 1;\n }\n this[offset + i] = (value / mul >> 0) - sub & 255;\n }\n return offset + byteLength2;\n };\n Buffer2.prototype.writeIntBE = function writeIntBE(value, offset, byteLength2, noAssert) {\n value = +value;\n offset = offset >>> 0;\n if (!noAssert) {\n const limit = Math.pow(2, 8 * byteLength2 - 1);\n checkInt(this, value, offset, byteLength2, limit - 1, -limit);\n }\n let i = byteLength2 - 1;\n let mul = 1;\n let sub = 0;\n this[offset + i] = value & 255;\n while (--i >= 0 && (mul *= 256)) {\n if (value < 0 && sub === 0 && this[offset + i + 1] !== 0) {\n sub = 1;\n }\n this[offset + i] = (value / mul >> 0) - sub & 255;\n }\n return offset + byteLength2;\n };\n Buffer2.prototype.writeInt8 = function writeInt8(value, offset, noAssert) {\n value = +value;\n offset = offset >>> 0;\n if (!noAssert) checkInt(this, value, offset, 1, 127, -128);\n if (value < 0) value = 255 + value + 1;\n this[offset] = value & 255;\n return offset + 1;\n };\n Buffer2.prototype.writeInt16LE = function writeInt16LE(value, offset, noAssert) {\n value = +value;\n offset = offset >>> 0;\n if (!noAssert) checkInt(this, value, offset, 2, 32767, -32768);\n this[offset] = value & 255;\n this[offset + 1] = value >>> 8;\n return offset + 2;\n };\n Buffer2.prototype.writeInt16BE = function writeInt16BE(value, offset, noAssert) {\n value = +value;\n offset = offset >>> 0;\n if (!noAssert) checkInt(this, value, offset, 2, 32767, -32768);\n this[offset] = value >>> 8;\n this[offset + 1] = value & 255;\n return offset + 2;\n };\n Buffer2.prototype.writeInt32LE = function writeInt32LE(value, offset, noAssert) {\n value = +value;\n offset = offset >>> 0;\n if (!noAssert) checkInt(this, value, offset, 4, 2147483647, -2147483648);\n this[offset] = value & 255;\n this[offset + 1] = value >>> 8;\n this[offset + 2] = value >>> 16;\n this[offset + 3] = value >>> 24;\n return offset + 4;\n };\n Buffer2.prototype.writeInt32BE = function writeInt32BE(value, offset, noAssert) {\n value = +value;\n offset = offset >>> 0;\n if (!noAssert) checkInt(this, value, offset, 4, 2147483647, -2147483648);\n if (value < 0) value = 4294967295 + value + 1;\n this[offset] = value >>> 24;\n this[offset + 1] = value >>> 16;\n this[offset + 2] = value >>> 8;\n this[offset + 3] = value & 255;\n return offset + 4;\n };\n Buffer2.prototype.writeBigInt64LE = defineBigIntMethod(function writeBigInt64LE(value, offset = 0) {\n return wrtBigUInt64LE(this, value, offset, -BigInt(\"0x8000000000000000\"), BigInt(\"0x7fffffffffffffff\"));\n });\n Buffer2.prototype.writeBigInt64BE = defineBigIntMethod(function writeBigInt64BE(value, offset = 0) {\n return wrtBigUInt64BE(this, value, offset, -BigInt(\"0x8000000000000000\"), BigInt(\"0x7fffffffffffffff\"));\n });\n function checkIEEE754(buf, value, offset, ext, max, min) {\n if (offset + ext > buf.length) throw new RangeError(\"Index out of range\");\n if (offset < 0) throw new RangeError(\"Index out of range\");\n }\n function writeFloat(buf, value, offset, littleEndian, noAssert) {\n value = +value;\n offset = offset >>> 0;\n if (!noAssert) {\n checkIEEE754(buf, value, offset, 4, 34028234663852886e22, -34028234663852886e22);\n }\n ieee754.write(buf, value, offset, littleEndian, 23, 4);\n return offset + 4;\n }\n Buffer2.prototype.writeFloatLE = function writeFloatLE(value, offset, noAssert) {\n return writeFloat(this, value, offset, true, noAssert);\n };\n Buffer2.prototype.writeFloatBE = function writeFloatBE(value, offset, noAssert) {\n return writeFloat(this, value, offset, false, noAssert);\n };\n function writeDouble(buf, value, offset, littleEndian, noAssert) {\n value = +value;\n offset = offset >>> 0;\n if (!noAssert) {\n checkIEEE754(buf, value, offset, 8, 17976931348623157e292, -17976931348623157e292);\n }\n ieee754.write(buf, value, offset, littleEndian, 52, 8);\n return offset + 8;\n }\n Buffer2.prototype.writeDoubleLE = function writeDoubleLE(value, offset, noAssert) {\n return writeDouble(this, value, offset, true, noAssert);\n };\n Buffer2.prototype.writeDoubleBE = function writeDoubleBE(value, offset, noAssert) {\n return writeDouble(this, value, offset, false, noAssert);\n };\n Buffer2.prototype.copy = function copy(target, targetStart, start, end) {\n if (!Buffer2.isBuffer(target)) throw new TypeError(\"argument should be a Buffer\");\n if (!start) start = 0;\n if (!end && end !== 0) end = this.length;\n if (targetStart >= target.length) targetStart = target.length;\n if (!targetStart) targetStart = 0;\n if (end > 0 && end < start) end = start;\n if (end === start) return 0;\n if (target.length === 0 || this.length === 0) return 0;\n if (targetStart < 0) {\n throw new RangeError(\"targetStart out of bounds\");\n }\n if (start < 0 || start >= this.length) throw new RangeError(\"Index out of range\");\n if (end < 0) throw new RangeError(\"sourceEnd out of bounds\");\n if (end > this.length) end = this.length;\n if (target.length - targetStart < end - start) {\n end = target.length - targetStart + start;\n }\n const len = end - start;\n if (this === target && typeof Uint8Array.prototype.copyWithin === \"function\") {\n this.copyWithin(targetStart, start, end);\n } else {\n Uint8Array.prototype.set.call(\n target,\n this.subarray(start, end),\n targetStart\n );\n }\n return len;\n };\n Buffer2.prototype.fill = function fill(val, start, end, encoding) {\n if (typeof val === \"string\") {\n if (typeof start === \"string\") {\n encoding = start;\n start = 0;\n end = this.length;\n } else if (typeof end === \"string\") {\n encoding = end;\n end = this.length;\n }\n if (encoding !== void 0 && typeof encoding !== \"string\") {\n throw new TypeError(\"encoding must be a string\");\n }\n if (typeof encoding === \"string\" && !Buffer2.isEncoding(encoding)) {\n throw new TypeError(\"Unknown encoding: \" + encoding);\n }\n if (val.length === 1) {\n const code = val.charCodeAt(0);\n if (encoding === \"utf8\" && code < 128 || encoding === \"latin1\") {\n val = code;\n }\n }\n } else if (typeof val === \"number\") {\n val = val & 255;\n } else if (typeof val === \"boolean\") {\n val = Number(val);\n }\n if (start < 0 || this.length < start || this.length < end) {\n throw new RangeError(\"Out of range index\");\n }\n if (end <= start) {\n return this;\n }\n start = start >>> 0;\n end = end === void 0 ? this.length : end >>> 0;\n if (!val) val = 0;\n let i;\n if (typeof val === \"number\") {\n for (i = start; i < end; ++i) {\n this[i] = val;\n }\n } else {\n const bytes = Buffer2.isBuffer(val) ? val : Buffer2.from(val, encoding);\n const len = bytes.length;\n if (len === 0) {\n throw new TypeError('The value \"' + val + '\" is invalid for argument \"value\"');\n }\n for (i = 0; i < end - start; ++i) {\n this[i + start] = bytes[i % len];\n }\n }\n return this;\n };\n var errors = {};\n function E(sym, getMessage, Base) {\n errors[sym] = class NodeError extends Base {\n constructor() {\n super();\n Object.defineProperty(this, \"message\", {\n value: getMessage.apply(this, arguments),\n writable: true,\n configurable: true\n });\n this.name = `${this.name} [${sym}]`;\n this.stack;\n delete this.name;\n }\n get code() {\n return sym;\n }\n set code(value) {\n Object.defineProperty(this, \"code\", {\n configurable: true,\n enumerable: true,\n value,\n writable: true\n });\n }\n toString() {\n return `${this.name} [${sym}]: ${this.message}`;\n }\n };\n }\n E(\n \"ERR_BUFFER_OUT_OF_BOUNDS\",\n function(name) {\n if (name) {\n return `${name} is outside of buffer bounds`;\n }\n return \"Attempt to access memory outside buffer bounds\";\n },\n RangeError\n );\n E(\n \"ERR_INVALID_ARG_TYPE\",\n function(name, actual) {\n return `The \"${name}\" argument must be of type number. Received type ${typeof actual}`;\n },\n TypeError\n );\n E(\n \"ERR_OUT_OF_RANGE\",\n function(str, range, input) {\n let msg = `The value of \"${str}\" is out of range.`;\n let received = input;\n if (Number.isInteger(input) && Math.abs(input) > 2 ** 32) {\n received = addNumericalSeparator(String(input));\n } else if (typeof input === \"bigint\") {\n received = String(input);\n if (input > BigInt(2) ** BigInt(32) || input < -(BigInt(2) ** BigInt(32))) {\n received = addNumericalSeparator(received);\n }\n received += \"n\";\n }\n msg += ` It must be ${range}. Received ${received}`;\n return msg;\n },\n RangeError\n );\n function addNumericalSeparator(val) {\n let res = \"\";\n let i = val.length;\n const start = val[0] === \"-\" ? 1 : 0;\n for (; i >= start + 4; i -= 3) {\n res = `_${val.slice(i - 3, i)}${res}`;\n }\n return `${val.slice(0, i)}${res}`;\n }\n function checkBounds(buf, offset, byteLength2) {\n validateNumber(offset, \"offset\");\n if (buf[offset] === void 0 || buf[offset + byteLength2] === void 0) {\n boundsError(offset, buf.length - (byteLength2 + 1));\n }\n }\n function checkIntBI(value, min, max, buf, offset, byteLength2) {\n if (value > max || value < min) {\n const n = typeof min === \"bigint\" ? \"n\" : \"\";\n let range;\n if (byteLength2 > 3) {\n if (min === 0 || min === BigInt(0)) {\n range = `>= 0${n} and < 2${n} ** ${(byteLength2 + 1) * 8}${n}`;\n } else {\n range = `>= -(2${n} ** ${(byteLength2 + 1) * 8 - 1}${n}) and < 2 ** ${(byteLength2 + 1) * 8 - 1}${n}`;\n }\n } else {\n range = `>= ${min}${n} and <= ${max}${n}`;\n }\n throw new errors.ERR_OUT_OF_RANGE(\"value\", range, value);\n }\n checkBounds(buf, offset, byteLength2);\n }\n function validateNumber(value, name) {\n if (typeof value !== \"number\") {\n throw new errors.ERR_INVALID_ARG_TYPE(name, \"number\", value);\n }\n }\n function boundsError(value, length, type) {\n if (Math.floor(value) !== value) {\n validateNumber(value, type);\n throw new errors.ERR_OUT_OF_RANGE(type || \"offset\", \"an integer\", value);\n }\n if (length < 0) {\n throw new errors.ERR_BUFFER_OUT_OF_BOUNDS();\n }\n throw new errors.ERR_OUT_OF_RANGE(\n type || \"offset\",\n `>= ${type ? 1 : 0} and <= ${length}`,\n value\n );\n }\n var INVALID_BASE64_RE = /[^+/0-9A-Za-z-_]/g;\n function base64clean(str) {\n str = str.split(\"=\")[0];\n str = str.trim().replace(INVALID_BASE64_RE, \"\");\n if (str.length < 2) return \"\";\n while (str.length % 4 !== 0) {\n str = str + \"=\";\n }\n return str;\n }\n function utf8ToBytes(string, units) {\n units = units || Infinity;\n let codePoint;\n const length = string.length;\n let leadSurrogate = null;\n const bytes = [];\n for (let i = 0; i < length; ++i) {\n codePoint = string.charCodeAt(i);\n if (codePoint > 55295 && codePoint < 57344) {\n if (!leadSurrogate) {\n if (codePoint > 56319) {\n if ((units -= 3) > -1) bytes.push(239, 191, 189);\n continue;\n } else if (i + 1 === length) {\n if ((units -= 3) > -1) bytes.push(239, 191, 189);\n continue;\n }\n leadSurrogate = codePoint;\n continue;\n }\n if (codePoint < 56320) {\n if ((units -= 3) > -1) bytes.push(239, 191, 189);\n leadSurrogate = codePoint;\n continue;\n }\n codePoint = (leadSurrogate - 55296 << 10 | codePoint - 56320) + 65536;\n } else if (leadSurrogate) {\n if ((units -= 3) > -1) bytes.push(239, 191, 189);\n }\n leadSurrogate = null;\n if (codePoint < 128) {\n if ((units -= 1) < 0) break;\n bytes.push(codePoint);\n } else if (codePoint < 2048) {\n if ((units -= 2) < 0) break;\n bytes.push(\n codePoint >> 6 | 192,\n codePoint & 63 | 128\n );\n } else if (codePoint < 65536) {\n if ((units -= 3) < 0) break;\n bytes.push(\n codePoint >> 12 | 224,\n codePoint >> 6 & 63 | 128,\n codePoint & 63 | 128\n );\n } else if (codePoint < 1114112) {\n if ((units -= 4) < 0) break;\n bytes.push(\n codePoint >> 18 | 240,\n codePoint >> 12 & 63 | 128,\n codePoint >> 6 & 63 | 128,\n codePoint & 63 | 128\n );\n } else {\n throw new Error(\"Invalid code point\");\n }\n }\n return bytes;\n }\n function asciiToBytes(str) {\n const byteArray = [];\n for (let i = 0; i < str.length; ++i) {\n byteArray.push(str.charCodeAt(i) & 255);\n }\n return byteArray;\n }\n function utf16leToBytes(str, units) {\n let c, hi, lo;\n const byteArray = [];\n for (let i = 0; i < str.length; ++i) {\n if ((units -= 2) < 0) break;\n c = str.charCodeAt(i);\n hi = c >> 8;\n lo = c % 256;\n byteArray.push(lo);\n byteArray.push(hi);\n }\n return byteArray;\n }\n function base64ToBytes(str) {\n return base64.toByteArray(base64clean(str));\n }\n function blitBuffer(src, dst, offset, length) {\n let i;\n for (i = 0; i < length; ++i) {\n if (i + offset >= dst.length || i >= src.length) break;\n dst[i + offset] = src[i];\n }\n return i;\n }\n function isInstance(obj, type) {\n return obj instanceof type || obj != null && obj.constructor != null && obj.constructor.name != null && obj.constructor.name === type.name;\n }\n function numberIsNaN(obj) {\n return obj !== obj;\n }\n var hexSliceLookupTable = function() {\n const alphabet = \"0123456789abcdef\";\n const table = new Array(256);\n for (let i = 0; i < 16; ++i) {\n const i16 = i * 16;\n for (let j = 0; j < 16; ++j) {\n table[i16 + j] = alphabet[i] + alphabet[j];\n }\n }\n return table;\n }();\n function defineBigIntMethod(fn) {\n return typeof BigInt === \"undefined\" ? BufferBigIntNotDefined : fn;\n }\n function BufferBigIntNotDefined() {\n throw new Error(\"BigInt not supported\");\n }\n }\n });\n\n // node_modules/typedarray-pool/pool.js\n var require_pool = __commonJS({\n \"node_modules/typedarray-pool/pool.js\"(exports) {\n \"use strict\";\n var bits = require_twiddle();\n var dup = require_dup();\n var Buffer2 = require_buffer().Buffer;\n if (!window.__TYPEDARRAY_POOL) {\n window.__TYPEDARRAY_POOL = {\n UINT8: dup([32, 0]),\n UINT16: dup([32, 0]),\n UINT32: dup([32, 0]),\n BIGUINT64: dup([32, 0]),\n INT8: dup([32, 0]),\n INT16: dup([32, 0]),\n INT32: dup([32, 0]),\n BIGINT64: dup([32, 0]),\n FLOAT: dup([32, 0]),\n DOUBLE: dup([32, 0]),\n DATA: dup([32, 0]),\n UINT8C: dup([32, 0]),\n BUFFER: dup([32, 0])\n };\n }\n var hasUint8C = typeof Uint8ClampedArray !== \"undefined\";\n var hasBigUint64 = typeof BigUint64Array !== \"undefined\";\n var hasBigInt64 = typeof BigInt64Array !== \"undefined\";\n var POOL = window.__TYPEDARRAY_POOL;\n if (!POOL.UINT8C) {\n POOL.UINT8C = dup([32, 0]);\n }\n if (!POOL.BIGUINT64) {\n POOL.BIGUINT64 = dup([32, 0]);\n }\n if (!POOL.BIGINT64) {\n POOL.BIGINT64 = dup([32, 0]);\n }\n if (!POOL.BUFFER) {\n POOL.BUFFER = dup([32, 0]);\n }\n var DATA = POOL.DATA;\n var BUFFER = POOL.BUFFER;\n exports.free = function free(array) {\n if (Buffer2.isBuffer(array)) {\n BUFFER[bits.log2(array.length)].push(array);\n } else {\n if (Object.prototype.toString.call(array) !== \"[object ArrayBuffer]\") {\n array = array.buffer;\n }\n if (!array) {\n return;\n }\n var n = array.length || array.byteLength;\n var log_n = bits.log2(n) | 0;\n DATA[log_n].push(array);\n }\n };\n function freeArrayBuffer(buffer) {\n if (!buffer) {\n return;\n }\n var n = buffer.length || buffer.byteLength;\n var log_n = bits.log2(n);\n DATA[log_n].push(buffer);\n }\n function freeTypedArray(array) {\n freeArrayBuffer(array.buffer);\n }\n exports.freeUint8 = exports.freeUint16 = exports.freeUint32 = exports.freeBigUint64 = exports.freeInt8 = exports.freeInt16 = exports.freeInt32 = exports.freeBigInt64 = exports.freeFloat32 = exports.freeFloat = exports.freeFloat64 = exports.freeDouble = exports.freeUint8Clamped = exports.freeDataView = freeTypedArray;\n exports.freeArrayBuffer = freeArrayBuffer;\n exports.freeBuffer = function freeBuffer(array) {\n BUFFER[bits.log2(array.length)].push(array);\n };\n exports.malloc = function malloc(n, dtype) {\n if (dtype === void 0 || dtype === \"arraybuffer\") {\n return mallocArrayBuffer(n);\n } else {\n switch (dtype) {\n case \"uint8\":\n return mallocUint8(n);\n case \"uint16\":\n return mallocUint16(n);\n case \"uint32\":\n return mallocUint32(n);\n case \"int8\":\n return mallocInt8(n);\n case \"int16\":\n return mallocInt16(n);\n case \"int32\":\n return mallocInt32(n);\n case \"float\":\n case \"float32\":\n return mallocFloat(n);\n case \"double\":\n case \"float64\":\n return mallocDouble(n);\n case \"uint8_clamped\":\n return mallocUint8Clamped(n);\n case \"bigint64\":\n return mallocBigInt64(n);\n case \"biguint64\":\n return mallocBigUint64(n);\n case \"buffer\":\n return mallocBuffer(n);\n case \"data\":\n case \"dataview\":\n return mallocDataView(n);\n default:\n return null;\n }\n }\n return null;\n };\n function mallocArrayBuffer(n) {\n var n = bits.nextPow2(n);\n var log_n = bits.log2(n);\n var d = DATA[log_n];\n if (d.length > 0) {\n return d.pop();\n }\n return new ArrayBuffer(n);\n }\n exports.mallocArrayBuffer = mallocArrayBuffer;\n function mallocUint8(n) {\n return new Uint8Array(mallocArrayBuffer(n), 0, n);\n }\n exports.mallocUint8 = mallocUint8;\n function mallocUint16(n) {\n return new Uint16Array(mallocArrayBuffer(2 * n), 0, n);\n }\n exports.mallocUint16 = mallocUint16;\n function mallocUint32(n) {\n return new Uint32Array(mallocArrayBuffer(4 * n), 0, n);\n }\n exports.mallocUint32 = mallocUint32;\n function mallocInt8(n) {\n return new Int8Array(mallocArrayBuffer(n), 0, n);\n }\n exports.mallocInt8 = mallocInt8;\n function mallocInt16(n) {\n return new Int16Array(mallocArrayBuffer(2 * n), 0, n);\n }\n exports.mallocInt16 = mallocInt16;\n function mallocInt32(n) {\n return new Int32Array(mallocArrayBuffer(4 * n), 0, n);\n }\n exports.mallocInt32 = mallocInt32;\n function mallocFloat(n) {\n return new Float32Array(mallocArrayBuffer(4 * n), 0, n);\n }\n exports.mallocFloat32 = exports.mallocFloat = mallocFloat;\n function mallocDouble(n) {\n return new Float64Array(mallocArrayBuffer(8 * n), 0, n);\n }\n exports.mallocFloat64 = exports.mallocDouble = mallocDouble;\n function mallocUint8Clamped(n) {\n if (hasUint8C) {\n return new Uint8ClampedArray(mallocArrayBuffer(n), 0, n);\n } else {\n return mallocUint8(n);\n }\n }\n exports.mallocUint8Clamped = mallocUint8Clamped;\n function mallocBigUint64(n) {\n if (hasBigUint64) {\n return new BigUint64Array(mallocArrayBuffer(8 * n), 0, n);\n } else {\n return null;\n }\n }\n exports.mallocBigUint64 = mallocBigUint64;\n function mallocBigInt64(n) {\n if (hasBigInt64) {\n return new BigInt64Array(mallocArrayBuffer(8 * n), 0, n);\n } else {\n return null;\n }\n }\n exports.mallocBigInt64 = mallocBigInt64;\n function mallocDataView(n) {\n return new DataView(mallocArrayBuffer(n), 0, n);\n }\n exports.mallocDataView = mallocDataView;\n function mallocBuffer(n) {\n n = bits.nextPow2(n);\n var log_n = bits.log2(n);\n var cache = BUFFER[log_n];\n if (cache.length > 0) {\n return cache.pop();\n }\n return new Buffer2(n);\n }\n exports.mallocBuffer = mallocBuffer;\n exports.clearCache = function clearCache() {\n for (var i = 0; i < 32; ++i) {\n POOL.UINT8[i].length = 0;\n POOL.UINT16[i].length = 0;\n POOL.UINT32[i].length = 0;\n POOL.INT8[i].length = 0;\n POOL.INT16[i].length = 0;\n POOL.INT32[i].length = 0;\n POOL.FLOAT[i].length = 0;\n POOL.DOUBLE[i].length = 0;\n POOL.BIGUINT64[i].length = 0;\n POOL.BIGINT64[i].length = 0;\n POOL.UINT8C[i].length = 0;\n DATA[i].length = 0;\n BUFFER[i].length = 0;\n }\n };\n }\n });\n\n // node_modules/is-plain-obj/index.js\n var require_is_plain_obj = __commonJS({\n \"node_modules/is-plain-obj/index.js\"(exports, module) {\n \"use strict\";\n var toString = Object.prototype.toString;\n module.exports = function(x) {\n var prototype;\n return toString.call(x) === \"[object Object]\" && (prototype = Object.getPrototypeOf(x), prototype === null || prototype === Object.getPrototypeOf({}));\n };\n }\n });\n\n // node_modules/parse-unit/index.js\n var require_parse_unit = __commonJS({\n \"node_modules/parse-unit/index.js\"(exports, module) {\n module.exports = function parseUnit(str, out) {\n if (!out)\n out = [0, \"\"];\n str = String(str);\n var num = parseFloat(str, 10);\n out[0] = num;\n out[1] = str.match(/[\\d.\\-\\+]*\\s*(.*)/)[1] || \"\";\n return out;\n };\n }\n });\n\n // node_modules/to-px/topx.js\n var require_topx = __commonJS({\n \"node_modules/to-px/topx.js\"(exports, module) {\n \"use strict\";\n var parseUnit = require_parse_unit();\n module.exports = toPX;\n var PIXELS_PER_INCH = 96;\n function getPropertyInPX(element, prop) {\n var parts = parseUnit(getComputedStyle(element).getPropertyValue(prop));\n return parts[0] * toPX(parts[1], element);\n }\n function getSizeBrutal(unit, element) {\n var testDIV = document.createElement(\"div\");\n testDIV.style[\"font-size\"] = \"128\" + unit;\n element.appendChild(testDIV);\n var size = getPropertyInPX(testDIV, \"font-size\") / 128;\n element.removeChild(testDIV);\n return size;\n }\n function toPX(str, element) {\n element = element || document.body;\n str = (str || \"px\").trim().toLowerCase();\n if (element === window || element === document) {\n element = document.body;\n }\n switch (str) {\n case \"%\":\n return element.clientHeight / 100;\n case \"ch\":\n case \"ex\":\n return getSizeBrutal(str, element);\n case \"em\":\n return getPropertyInPX(element, \"font-size\");\n case \"rem\":\n return getPropertyInPX(document.body, \"font-size\");\n case \"vw\":\n return window.innerWidth / 100;\n case \"vh\":\n return window.innerHeight / 100;\n case \"vmin\":\n return Math.min(window.innerWidth, window.innerHeight) / 100;\n case \"vmax\":\n return Math.max(window.innerWidth, window.innerHeight) / 100;\n case \"in\":\n return PIXELS_PER_INCH;\n case \"cm\":\n return PIXELS_PER_INCH / 2.54;\n case \"mm\":\n return PIXELS_PER_INCH / 25.4;\n case \"pt\":\n return PIXELS_PER_INCH / 72;\n case \"pc\":\n return PIXELS_PER_INCH / 6;\n }\n return 1;\n }\n }\n });\n\n // node_modules/detect-kerning/index.js\n var require_detect_kerning = __commonJS({\n \"node_modules/detect-kerning/index.js\"(exports, module) {\n \"use strict\";\n module.exports = kerning;\n var canvas = kerning.canvas = document.createElement(\"canvas\");\n var ctx = canvas.getContext(\"2d\");\n var asciiPairs = createPairs([32, 126]);\n kerning.createPairs = createPairs;\n kerning.ascii = asciiPairs;\n function kerning(family, o) {\n if (Array.isArray(family)) family = family.join(\", \");\n var table = {}, pairs, fs = 16, threshold = 0.05;\n if (o) {\n if (o.length === 2 && typeof o[0] === \"number\") {\n pairs = createPairs(o);\n } else if (Array.isArray(o)) {\n pairs = o;\n } else {\n if (o.o) pairs = createPairs(o.o);\n else if (o.pairs) pairs = o.pairs;\n if (o.fontSize) fs = o.fontSize;\n if (o.threshold != null) threshold = o.threshold;\n }\n }\n if (!pairs) pairs = asciiPairs;\n ctx.font = fs + \"px \" + family;\n for (var i = 0; i < pairs.length; i++) {\n var pair = pairs[i];\n var width = ctx.measureText(pair[0]).width + ctx.measureText(pair[1]).width;\n var kerningWidth = ctx.measureText(pair).width;\n if (Math.abs(width - kerningWidth) > fs * threshold) {\n var emWidth = (kerningWidth - width) / fs;\n table[pair] = emWidth * 1e3;\n }\n }\n return table;\n }\n function createPairs(range) {\n var pairs = [];\n for (var i = range[0]; i <= range[1]; i++) {\n var leftChar = String.fromCharCode(i);\n for (var j = range[0]; j < range[1]; j++) {\n var rightChar = String.fromCharCode(j);\n var pair = leftChar + rightChar;\n pairs.push(pair);\n }\n }\n return pairs;\n }\n }\n });\n\n // node_modules/font-measure/index.js\n var require_font_measure = __commonJS({\n \"node_modules/font-measure/index.js\"(exports, module) {\n \"use strict\";\n module.exports = measure;\n measure.canvas = document.createElement(\"canvas\");\n measure.cache = {};\n function measure(font, o) {\n if (!o) o = {};\n if (typeof font === \"string\" || Array.isArray(font)) {\n o.family = font;\n }\n var family = Array.isArray(o.family) ? o.family.join(\", \") : o.family;\n if (!family) throw Error(\"`family` must be defined\");\n var fs = o.size || o.fontSize || o.em || 48;\n var weight = o.weight || o.fontWeight || \"\";\n var style = o.style || o.fontStyle || \"\";\n var font = [style, weight, fs].join(\" \") + \"px \" + family;\n var origin = o.origin || \"top\";\n if (measure.cache[family]) {\n if (fs <= measure.cache[family].em) {\n return applyOrigin(measure.cache[family], origin);\n }\n }\n var canvas = o.canvas || measure.canvas;\n var ctx = canvas.getContext(\"2d\");\n var chars = {\n upper: o.upper !== void 0 ? o.upper : \"H\",\n lower: o.lower !== void 0 ? o.lower : \"x\",\n descent: o.descent !== void 0 ? o.descent : \"p\",\n ascent: o.ascent !== void 0 ? o.ascent : \"h\",\n tittle: o.tittle !== void 0 ? o.tittle : \"i\",\n overshoot: o.overshoot !== void 0 ? o.overshoot : \"O\"\n };\n var l = Math.ceil(fs * 1.5);\n canvas.height = l;\n canvas.width = l * 0.5;\n ctx.font = font;\n var char = \"H\";\n var result = {\n top: 0\n };\n ctx.clearRect(0, 0, l, l);\n ctx.textBaseline = \"top\";\n ctx.fillStyle = \"black\";\n ctx.fillText(char, 0, 0);\n var topPx = firstTop(ctx.getImageData(0, 0, l, l));\n ctx.clearRect(0, 0, l, l);\n ctx.textBaseline = \"bottom\";\n ctx.fillText(char, 0, l);\n var bottomPx = firstTop(ctx.getImageData(0, 0, l, l));\n result.lineHeight = result.bottom = l - bottomPx + topPx;\n ctx.clearRect(0, 0, l, l);\n ctx.textBaseline = \"alphabetic\";\n ctx.fillText(char, 0, l);\n var baselinePx = firstTop(ctx.getImageData(0, 0, l, l));\n var baseline = l - baselinePx - 1 + topPx;\n result.baseline = result.alphabetic = baseline;\n ctx.clearRect(0, 0, l, l);\n ctx.textBaseline = \"middle\";\n ctx.fillText(char, 0, l * 0.5);\n var medianPx = firstTop(ctx.getImageData(0, 0, l, l));\n result.median = result.middle = l - medianPx - 1 + topPx - l * 0.5;\n ctx.clearRect(0, 0, l, l);\n ctx.textBaseline = \"hanging\";\n ctx.fillText(char, 0, l * 0.5);\n var hangingPx = firstTop(ctx.getImageData(0, 0, l, l));\n result.hanging = l - hangingPx - 1 + topPx - l * 0.5;\n ctx.clearRect(0, 0, l, l);\n ctx.textBaseline = \"ideographic\";\n ctx.fillText(char, 0, l);\n var ideographicPx = firstTop(ctx.getImageData(0, 0, l, l));\n result.ideographic = l - ideographicPx - 1 + topPx;\n if (chars.upper) {\n ctx.clearRect(0, 0, l, l);\n ctx.textBaseline = \"top\";\n ctx.fillText(chars.upper, 0, 0);\n result.upper = firstTop(ctx.getImageData(0, 0, l, l));\n result.capHeight = result.baseline - result.upper;\n }\n if (chars.lower) {\n ctx.clearRect(0, 0, l, l);\n ctx.textBaseline = \"top\";\n ctx.fillText(chars.lower, 0, 0);\n result.lower = firstTop(ctx.getImageData(0, 0, l, l));\n result.xHeight = result.baseline - result.lower;\n }\n if (chars.tittle) {\n ctx.clearRect(0, 0, l, l);\n ctx.textBaseline = \"top\";\n ctx.fillText(chars.tittle, 0, 0);\n result.tittle = firstTop(ctx.getImageData(0, 0, l, l));\n }\n if (chars.ascent) {\n ctx.clearRect(0, 0, l, l);\n ctx.textBaseline = \"top\";\n ctx.fillText(chars.ascent, 0, 0);\n result.ascent = firstTop(ctx.getImageData(0, 0, l, l));\n }\n if (chars.descent) {\n ctx.clearRect(0, 0, l, l);\n ctx.textBaseline = \"top\";\n ctx.fillText(chars.descent, 0, 0);\n result.descent = firstBottom(ctx.getImageData(0, 0, l, l));\n }\n if (chars.overshoot) {\n ctx.clearRect(0, 0, l, l);\n ctx.textBaseline = \"top\";\n ctx.fillText(chars.overshoot, 0, 0);\n var overshootPx = firstBottom(ctx.getImageData(0, 0, l, l));\n result.overshoot = overshootPx - baseline;\n }\n for (var name in result) {\n result[name] /= fs;\n }\n result.em = fs;\n measure.cache[family] = result;\n return applyOrigin(result, origin);\n }\n function applyOrigin(obj, origin) {\n var res = {};\n if (typeof origin === \"string\") origin = obj[origin];\n for (var name in obj) {\n if (name === \"em\") continue;\n res[name] = obj[name] - origin;\n }\n return res;\n }\n function firstTop(iData) {\n var l = iData.height;\n var data = iData.data;\n for (var i = 3; i < data.length; i += 4) {\n if (data[i] !== 0) {\n return Math.floor((i - 3) * 0.25 / l);\n }\n }\n }\n function firstBottom(iData) {\n var l = iData.height;\n var data = iData.data;\n for (var i = data.length - 1; i > 0; i -= 4) {\n if (data[i] !== 0) {\n return Math.floor((i - 3) * 0.25 / l);\n }\n }\n }\n }\n });\n\n // node_modules/gl-text/dist.js\n var require_dist = __commonJS({\n \"node_modules/gl-text/dist.js\"(exports, module) {\n \"use strict\";\n var Font = require_css_font();\n var pick = require_pick_by_alias();\n var createRegl = require_regl_unchecked();\n var createGl = require_context();\n var WeakMap2 = require_es6_weak_map();\n var rgba = require_color_normalize();\n var fontAtlas = require_font_atlas();\n var pool = require_pool();\n var parseRect = require_parse_rect();\n var isObj = require_is_plain_obj();\n var parseUnit = require_parse_unit();\n var px = require_topx();\n var kerning = require_detect_kerning();\n var extend = require_object_assign();\n var metrics = require_font_measure();\n var flatten = require_flatten_vertex_data();\n var ref = require_twiddle();\n var nextPow2 = ref.nextPow2;\n var shaderCache = new WeakMap2();\n var isStretchSupported = false;\n if (document.body) {\n el = document.body.appendChild(document.createElement(\"div\"));\n el.style.font = \"italic small-caps bold condensed 16px/2 cursive\";\n if (getComputedStyle(el).fontStretch) {\n isStretchSupported = true;\n }\n document.body.removeChild(el);\n }\n var el;\n var GlText = function GlText2(o) {\n if (isRegl(o)) {\n o = { regl: o };\n this.gl = o.regl._gl;\n } else {\n this.gl = createGl(o);\n }\n this.shader = shaderCache.get(this.gl);\n if (!this.shader) {\n this.regl = o.regl || createRegl({ gl: this.gl });\n } else {\n this.regl = this.shader.regl;\n }\n this.charBuffer = this.regl.buffer({ type: \"uint8\", usage: \"stream\" });\n this.sizeBuffer = this.regl.buffer({ type: \"float\", usage: \"stream\" });\n if (!this.shader) {\n this.shader = this.createShader();\n shaderCache.set(this.gl, this.shader);\n }\n this.batch = [];\n this.fontSize = [];\n this.font = [];\n this.fontAtlas = [];\n this.draw = this.shader.draw.bind(this);\n this.render = function() {\n this.regl._refresh();\n this.draw(this.batch);\n };\n this.canvas = this.gl.canvas;\n this.update(isObj(o) ? o : {});\n };\n GlText.prototype.createShader = function createShader() {\n var regl = this.regl;\n var draw = regl({\n blend: {\n enable: true,\n color: [0, 0, 0, 1],\n func: {\n srcRGB: \"src alpha\",\n dstRGB: \"one minus src alpha\",\n srcAlpha: \"one minus dst alpha\",\n dstAlpha: \"one\"\n }\n },\n stencil: { enable: false },\n depth: { enable: false },\n count: regl.prop(\"count\"),\n offset: regl.prop(\"offset\"),\n attributes: {\n charOffset: {\n offset: 4,\n stride: 8,\n buffer: regl.this(\"sizeBuffer\")\n },\n width: {\n offset: 0,\n stride: 8,\n buffer: regl.this(\"sizeBuffer\")\n },\n char: regl.this(\"charBuffer\"),\n position: regl.this(\"position\")\n },\n uniforms: {\n atlasSize: function(c, p) {\n return [p.atlas.width, p.atlas.height];\n },\n atlasDim: function(c, p) {\n return [p.atlas.cols, p.atlas.rows];\n },\n atlas: function(c, p) {\n return p.atlas.texture;\n },\n charStep: function(c, p) {\n return p.atlas.step;\n },\n em: function(c, p) {\n return p.atlas.em;\n },\n color: regl.prop(\"color\"),\n opacity: regl.prop(\"opacity\"),\n viewport: regl.this(\"viewportArray\"),\n scale: regl.this(\"scale\"),\n align: regl.prop(\"align\"),\n baseline: regl.prop(\"baseline\"),\n translate: regl.this(\"translate\"),\n positionOffset: regl.prop(\"positionOffset\")\n },\n primitive: \"points\",\n viewport: regl.this(\"viewport\"),\n vert: \"\\n\t\t\tprecision highp float;\\n\t\t\tattribute float width, charOffset, char;\\n\t\t\tattribute vec2 position;\\n\t\t\tuniform float fontSize, charStep, em, align, baseline;\\n\t\t\tuniform vec4 viewport;\\n\t\t\tuniform vec4 color;\\n\t\t\tuniform vec2 atlasSize, atlasDim, scale, translate, positionOffset;\\n\t\t\tvarying vec2 charCoord, charId;\\n\t\t\tvarying float charWidth;\\n\t\t\tvarying vec4 fontColor;\\n\t\t\tvoid main () {\\n\t\t\t\tvec2 offset = floor(em * (vec2(align + charOffset, baseline)\\n\t\t\t\t\t+ vec2(positionOffset.x, -positionOffset.y)))\\n\t\t\t\t\t/ (viewport.zw * scale.xy);\\n\\n\t\t\t\tvec2 position = (position + translate) * scale;\\n\t\t\t\tposition += offset * scale;\\n\\n\t\t\t\tcharCoord = position * viewport.zw + viewport.xy;\\n\\n\t\t\t\tgl_Position = vec4(position * 2. - 1., 0, 1);\\n\\n\t\t\t\tgl_PointSize = charStep;\\n\\n\t\t\t\tcharId.x = mod(char, atlasDim.x);\\n\t\t\t\tcharId.y = floor(char / atlasDim.x);\\n\\n\t\t\t\tcharWidth = width * em;\\n\\n\t\t\t\tfontColor = color / 255.;\\n\t\t\t}\",\n frag: \"\\n\t\t\tprecision highp float;\\n\t\t\tuniform float fontSize, charStep, opacity;\\n\t\t\tuniform vec2 atlasSize;\\n\t\t\tuniform vec4 viewport;\\n\t\t\tuniform sampler2D atlas;\\n\t\t\tvarying vec4 fontColor;\\n\t\t\tvarying vec2 charCoord, charId;\\n\t\t\tvarying float charWidth;\\n\\n\t\t\tfloat lightness(vec4 color) {\\n\t\t\t\treturn color.r * 0.299 + color.g * 0.587 + color.b * 0.114;\\n\t\t\t}\\n\\n\t\t\tvoid main () {\\n\t\t\t\tvec2 uv = gl_FragCoord.xy - charCoord + charStep * .5;\\n\t\t\t\tfloat halfCharStep = floor(charStep * .5 + .5);\\n\\n\t\t\t\t// invert y and shift by 1px (FF expecially needs that)\\n\t\t\t\tuv.y = charStep - uv.y;\\n\\n\t\t\t\t// ignore points outside of character bounding box\\n\t\t\t\tfloat halfCharWidth = ceil(charWidth * .5);\\n\t\t\t\tif (floor(uv.x) > halfCharStep + halfCharWidth ||\\n\t\t\t\t\tfloor(uv.x) < halfCharStep - halfCharWidth) return;\\n\\n\t\t\t\tuv += charId * charStep;\\n\t\t\t\tuv = uv / atlasSize;\\n\\n\t\t\t\tvec4 color = fontColor;\\n\t\t\t\tvec4 mask = texture2D(atlas, uv);\\n\\n\t\t\t\tfloat maskY = lightness(mask);\\n\t\t\t\t// float colorY = lightness(color);\\n\t\t\t\tcolor.a *= maskY;\\n\t\t\t\tcolor.a *= opacity;\\n\\n\t\t\t\t// color.a += .1;\\n\\n\t\t\t\t// antialiasing, see yiq color space y-channel formula\\n\t\t\t\t// color.rgb += (1. - color.rgb) * (1. - mask.rgb);\\n\\n\t\t\t\tgl_FragColor = color;\\n\t\t\t}\"\n });\n var atlas = {};\n return { regl, draw, atlas };\n };\n GlText.prototype.update = function update(o) {\n var this$1 = this;\n if (typeof o === \"string\") {\n o = { text: o };\n } else if (!o) {\n return;\n }\n o = pick(o, {\n position: \"position positions coord coords coordinates\",\n font: \"font fontFace fontface typeface cssFont css-font family fontFamily\",\n fontSize: \"fontSize fontsize size font-size\",\n text: \"text texts chars characters value values symbols\",\n align: \"align alignment textAlign textbaseline\",\n baseline: \"baseline textBaseline textbaseline\",\n direction: \"dir direction textDirection\",\n color: \"color colour fill fill-color fillColor textColor textcolor\",\n kerning: \"kerning kern\",\n range: \"range dataBox\",\n viewport: \"vp viewport viewBox viewbox viewPort\",\n opacity: \"opacity alpha transparency visible visibility opaque\",\n offset: \"offset positionOffset padding shift indent indentation\"\n }, true);\n if (o.opacity != null) {\n if (Array.isArray(o.opacity)) {\n this.opacity = o.opacity.map(function(o2) {\n return parseFloat(o2);\n });\n } else {\n this.opacity = parseFloat(o.opacity);\n }\n }\n if (o.viewport != null) {\n this.viewport = parseRect(o.viewport);\n this.viewportArray = [this.viewport.x, this.viewport.y, this.viewport.width, this.viewport.height];\n }\n if (this.viewport == null) {\n this.viewport = {\n x: 0,\n y: 0,\n width: this.gl.drawingBufferWidth,\n height: this.gl.drawingBufferHeight\n };\n this.viewportArray = [this.viewport.x, this.viewport.y, this.viewport.width, this.viewport.height];\n }\n if (o.kerning != null) {\n this.kerning = o.kerning;\n }\n if (o.offset != null) {\n if (typeof o.offset === \"number\") {\n o.offset = [o.offset, 0];\n }\n this.positionOffset = flatten(o.offset);\n }\n if (o.direction) {\n this.direction = o.direction;\n }\n if (o.range) {\n this.range = o.range;\n this.scale = [1 / (o.range[2] - o.range[0]), 1 / (o.range[3] - o.range[1])];\n this.translate = [-o.range[0], -o.range[1]];\n }\n if (o.scale) {\n this.scale = o.scale;\n }\n if (o.translate) {\n this.translate = o.translate;\n }\n if (!this.scale) {\n this.scale = [1 / this.viewport.width, 1 / this.viewport.height];\n }\n if (!this.translate) {\n this.translate = [0, 0];\n }\n if (!this.font.length && !o.font) {\n o.font = GlText.baseFontSize + \"px sans-serif\";\n }\n var newFont = false, newFontSize = false;\n if (o.font) {\n (Array.isArray(o.font) ? o.font : [o.font]).forEach(function(font2, i2) {\n if (typeof font2 === \"string\") {\n try {\n font2 = Font.parse(font2);\n } catch (e) {\n font2 = Font.parse(GlText.baseFontSize + \"px \" + font2);\n }\n } else {\n var fontStyle = font2.style;\n var fontWeight = font2.weight;\n var fontStretch = font2.stretch;\n var fontVariant = font2.variant;\n font2 = Font.parse(Font.stringify(font2));\n if (fontStyle) font2.style = fontStyle;\n if (fontWeight) font2.weight = fontWeight;\n if (fontStretch) font2.stretch = fontStretch;\n if (fontVariant) font2.variant = fontVariant;\n }\n var baseString = Font.stringify({\n size: GlText.baseFontSize,\n family: font2.family,\n stretch: isStretchSupported ? font2.stretch : void 0,\n variant: font2.variant,\n weight: font2.weight,\n style: font2.style\n });\n var unit = parseUnit(font2.size);\n var fs = Math.round(unit[0] * px(unit[1]));\n if (fs !== this$1.fontSize[i2]) {\n newFontSize = true;\n this$1.fontSize[i2] = fs;\n }\n if (!this$1.font[i2] || baseString != this$1.font[i2].baseString) {\n newFont = true;\n this$1.font[i2] = GlText.fonts[baseString];\n if (!this$1.font[i2]) {\n var family = font2.family.join(\", \");\n var style = [font2.style];\n if (font2.style != font2.variant) {\n style.push(font2.variant);\n }\n if (font2.variant != font2.weight) {\n style.push(font2.weight);\n }\n if (isStretchSupported && font2.weight != font2.stretch) {\n style.push(font2.stretch);\n }\n this$1.font[i2] = {\n baseString,\n // typeface\n family,\n weight: font2.weight,\n stretch: font2.stretch,\n style: font2.style,\n variant: font2.variant,\n // widths of characters\n width: {},\n // kernin pairs offsets\n kerning: {},\n metrics: metrics(family, {\n origin: \"top\",\n fontSize: GlText.baseFontSize,\n fontStyle: style.join(\" \")\n })\n };\n GlText.fonts[baseString] = this$1.font[i2];\n }\n }\n });\n }\n if (newFont || newFontSize) {\n this.font.forEach(function(font2, i2) {\n var fontString = Font.stringify({\n size: this$1.fontSize[i2],\n family: font2.family,\n stretch: isStretchSupported ? font2.stretch : void 0,\n variant: font2.variant,\n weight: font2.weight,\n style: font2.style\n });\n this$1.fontAtlas[i2] = this$1.shader.atlas[fontString];\n if (!this$1.fontAtlas[i2]) {\n var metrics2 = font2.metrics;\n this$1.shader.atlas[fontString] = this$1.fontAtlas[i2] = {\n fontString,\n // even step is better for rendered characters\n step: Math.ceil(this$1.fontSize[i2] * metrics2.bottom * 0.5) * 2,\n em: this$1.fontSize[i2],\n cols: 0,\n rows: 0,\n height: 0,\n width: 0,\n chars: [],\n ids: {},\n texture: this$1.regl.texture()\n };\n }\n if (o.text == null) {\n o.text = this$1.text;\n }\n });\n }\n if (typeof o.text === \"string\" && o.position && o.position.length > 2) {\n var textArray = Array(o.position.length * 0.5);\n for (var i = 0; i < textArray.length; i++) {\n textArray[i] = o.text;\n }\n o.text = textArray;\n }\n var newAtlasChars;\n if (o.text != null || newFont) {\n this.textOffsets = [0];\n if (Array.isArray(o.text)) {\n this.count = o.text[0].length;\n this.counts = [this.count];\n for (var i$1 = 1; i$1 < o.text.length; i$1++) {\n this.textOffsets[i$1] = this.textOffsets[i$1 - 1] + o.text[i$1 - 1].length;\n this.count += o.text[i$1].length;\n this.counts.push(o.text[i$1].length);\n }\n this.text = o.text.join(\"\");\n } else {\n this.text = o.text;\n this.count = this.text.length;\n this.counts = [this.count];\n }\n newAtlasChars = [];\n this.font.forEach(function(font2, idx) {\n GlText.atlasContext.font = font2.baseString;\n var atlas2 = this$1.fontAtlas[idx];\n for (var i2 = 0; i2 < this$1.text.length; i2++) {\n var char2 = this$1.text.charAt(i2);\n if (atlas2.ids[char2] == null) {\n atlas2.ids[char2] = atlas2.chars.length;\n atlas2.chars.push(char2);\n newAtlasChars.push(char2);\n }\n if (font2.width[char2] == null) {\n font2.width[char2] = GlText.atlasContext.measureText(char2).width / GlText.baseFontSize;\n if (this$1.kerning) {\n var pairs = [];\n for (var baseChar in font2.width) {\n pairs.push(baseChar + char2, char2 + baseChar);\n }\n extend(font2.kerning, kerning(font2.family, {\n pairs\n }));\n }\n }\n }\n });\n }\n if (o.position) {\n if (o.position.length > 2) {\n var flat = !o.position[0].length;\n var positionData = pool.mallocFloat(this.count * 2);\n for (var i$2 = 0, ptr = 0; i$2 < this.counts.length; i$2++) {\n var count = this.counts[i$2];\n if (flat) {\n for (var j = 0; j < count; j++) {\n positionData[ptr++] = o.position[i$2 * 2];\n positionData[ptr++] = o.position[i$2 * 2 + 1];\n }\n } else {\n for (var j$1 = 0; j$1 < count; j$1++) {\n positionData[ptr++] = o.position[i$2][0];\n positionData[ptr++] = o.position[i$2][1];\n }\n }\n }\n if (this.position.call) {\n this.position({\n type: \"float\",\n data: positionData\n });\n } else {\n this.position = this.regl.buffer({\n type: \"float\",\n data: positionData\n });\n }\n pool.freeFloat(positionData);\n } else {\n if (this.position.destroy) {\n this.position.destroy();\n }\n this.position = {\n constant: o.position\n };\n }\n }\n if (o.text || newFont) {\n var charIds = pool.mallocUint8(this.count);\n var sizeData = pool.mallocFloat(this.count * 2);\n this.textWidth = [];\n for (var i$3 = 0, ptr$1 = 0; i$3 < this.counts.length; i$3++) {\n var count$1 = this.counts[i$3];\n var font = this.font[i$3] || this.font[0];\n var atlas = this.fontAtlas[i$3] || this.fontAtlas[0];\n for (var j$2 = 0; j$2 < count$1; j$2++) {\n var char = this.text.charAt(ptr$1);\n var prevChar = this.text.charAt(ptr$1 - 1);\n charIds[ptr$1] = atlas.ids[char];\n sizeData[ptr$1 * 2] = font.width[char];\n if (j$2) {\n var prevWidth = sizeData[ptr$1 * 2 - 2];\n var currWidth = sizeData[ptr$1 * 2];\n var prevOffset = sizeData[ptr$1 * 2 - 1];\n var offset = prevOffset + prevWidth * 0.5 + currWidth * 0.5;\n if (this.kerning) {\n var kerning$1 = font.kerning[prevChar + char];\n if (kerning$1) {\n offset += kerning$1 * 1e-3;\n }\n }\n sizeData[ptr$1 * 2 + 1] = offset;\n } else {\n sizeData[ptr$1 * 2 + 1] = sizeData[ptr$1 * 2] * 0.5;\n }\n ptr$1++;\n }\n this.textWidth.push(\n !sizeData.length ? 0 : (\n // last offset + half last width\n sizeData[ptr$1 * 2 - 2] * 0.5 + sizeData[ptr$1 * 2 - 1]\n )\n );\n }\n if (!o.align) {\n o.align = this.align;\n }\n this.charBuffer({ data: charIds, type: \"uint8\", usage: \"stream\" });\n this.sizeBuffer({ data: sizeData, type: \"float\", usage: \"stream\" });\n pool.freeUint8(charIds);\n pool.freeFloat(sizeData);\n if (newAtlasChars.length) {\n this.font.forEach(function(font2, i2) {\n var atlas2 = this$1.fontAtlas[i2];\n var step = atlas2.step;\n var maxCols = Math.floor(GlText.maxAtlasSize / step);\n var cols = Math.min(maxCols, atlas2.chars.length);\n var rows = Math.ceil(atlas2.chars.length / cols);\n var atlasWidth = nextPow2(cols * step);\n var atlasHeight = nextPow2(rows * step);\n atlas2.width = atlasWidth;\n atlas2.height = atlasHeight;\n atlas2.rows = rows;\n atlas2.cols = cols;\n if (!atlas2.em) {\n return;\n }\n atlas2.texture({\n data: fontAtlas({\n canvas: GlText.atlasCanvas,\n font: atlas2.fontString,\n chars: atlas2.chars,\n shape: [atlasWidth, atlasHeight],\n step: [step, step]\n })\n });\n });\n }\n }\n if (o.align) {\n this.align = o.align;\n this.alignOffset = this.textWidth.map(function(textWidth, i2) {\n var align = !Array.isArray(this$1.align) ? this$1.align : this$1.align.length > 1 ? this$1.align[i2] : this$1.align[0];\n if (typeof align === \"number\") {\n return align;\n }\n switch (align) {\n case \"right\":\n case \"end\":\n return -textWidth;\n case \"center\":\n case \"centre\":\n case \"middle\":\n return -textWidth * 0.5;\n }\n return 0;\n });\n }\n if (this.baseline == null && o.baseline == null) {\n o.baseline = 0;\n }\n if (o.baseline != null) {\n this.baseline = o.baseline;\n if (!Array.isArray(this.baseline)) {\n this.baseline = [this.baseline];\n }\n this.baselineOffset = this.baseline.map(function(baseline, i2) {\n var m = (this$1.font[i2] || this$1.font[0]).metrics;\n var base = 0;\n base += m.bottom * 0.5;\n if (typeof baseline === \"number\") {\n base += baseline - m.baseline;\n } else {\n base += -m[baseline];\n }\n base *= -1;\n return base;\n });\n }\n if (o.color != null) {\n if (!o.color) {\n o.color = \"transparent\";\n }\n if (typeof o.color === \"string\" || !isNaN(o.color)) {\n this.color = rgba(o.color, \"uint8\");\n } else {\n var colorData;\n if (typeof o.color[0] === \"number\" && o.color.length > this.counts.length) {\n var l = o.color.length;\n colorData = pool.mallocUint8(l);\n var sub = (o.color.subarray || o.color.slice).bind(o.color);\n for (var i$4 = 0; i$4 < l; i$4 += 4) {\n colorData.set(rgba(sub(i$4, i$4 + 4), \"uint8\"), i$4);\n }\n } else {\n var l$1 = o.color.length;\n colorData = pool.mallocUint8(l$1 * 4);\n for (var i$5 = 0; i$5 < l$1; i$5++) {\n colorData.set(rgba(o.color[i$5] || 0, \"uint8\"), i$5 * 4);\n }\n }\n this.color = colorData;\n }\n }\n if (o.position || o.text || o.color || o.baseline || o.align || o.font || o.offset || o.opacity) {\n var isBatch = this.color.length > 4 || this.baselineOffset.length > 1 || this.align && this.align.length > 1 || this.fontAtlas.length > 1 || this.positionOffset.length > 2;\n if (isBatch) {\n var length = Math.max(\n this.position.length * 0.5 || 0,\n this.color.length * 0.25 || 0,\n this.baselineOffset.length || 0,\n this.alignOffset.length || 0,\n this.font.length || 0,\n this.opacity.length || 0,\n this.positionOffset.length * 0.5 || 0\n );\n this.batch = Array(length);\n for (var i$6 = 0; i$6 < this.batch.length; i$6++) {\n this.batch[i$6] = {\n count: this.counts.length > 1 ? this.counts[i$6] : this.counts[0],\n offset: this.textOffsets.length > 1 ? this.textOffsets[i$6] : this.textOffsets[0],\n color: !this.color ? [0, 0, 0, 255] : this.color.length <= 4 ? this.color : this.color.subarray(i$6 * 4, i$6 * 4 + 4),\n opacity: Array.isArray(this.opacity) ? this.opacity[i$6] : this.opacity,\n baseline: this.baselineOffset[i$6] != null ? this.baselineOffset[i$6] : this.baselineOffset[0],\n align: !this.align ? 0 : this.alignOffset[i$6] != null ? this.alignOffset[i$6] : this.alignOffset[0],\n atlas: this.fontAtlas[i$6] || this.fontAtlas[0],\n positionOffset: this.positionOffset.length > 2 ? this.positionOffset.subarray(i$6 * 2, i$6 * 2 + 2) : this.positionOffset\n };\n }\n } else {\n if (this.count) {\n this.batch = [{\n count: this.count,\n offset: 0,\n color: this.color || [0, 0, 0, 255],\n opacity: Array.isArray(this.opacity) ? this.opacity[0] : this.opacity,\n baseline: this.baselineOffset[0],\n align: this.alignOffset ? this.alignOffset[0] : 0,\n atlas: this.fontAtlas[0],\n positionOffset: this.positionOffset\n }];\n } else {\n this.batch = [];\n }\n }\n }\n };\n GlText.prototype.destroy = function destroy() {\n };\n GlText.prototype.kerning = true;\n GlText.prototype.position = { constant: new Float32Array(2) };\n GlText.prototype.translate = null;\n GlText.prototype.scale = null;\n GlText.prototype.font = null;\n GlText.prototype.text = \"\";\n GlText.prototype.positionOffset = [0, 0];\n GlText.prototype.opacity = 1;\n GlText.prototype.color = new Uint8Array([0, 0, 0, 255]);\n GlText.prototype.alignOffset = [0, 0];\n GlText.maxAtlasSize = 1024;\n GlText.atlasCanvas = document.createElement(\"canvas\");\n GlText.atlasContext = GlText.atlasCanvas.getContext(\"2d\", { alpha: false });\n GlText.baseFontSize = 64;\n GlText.fonts = {};\n function isRegl(o) {\n return typeof o === \"function\" && o._gl && o.prop && o.texture && o.buffer;\n }\n module.exports = GlText;\n }\n });\n\n // src/lib/show_no_webgl_msg.js\n var require_show_no_webgl_msg = __commonJS({\n \"src/lib/show_no_webgl_msg.js\"(exports, module) {\n \"use strict\";\n var Color = require_color();\n var noop = function() {\n };\n module.exports = function showNoWebGlMsg(scene) {\n for (var prop in scene) {\n if (typeof scene[prop] === \"function\") scene[prop] = noop;\n }\n scene.destroy = function() {\n scene.container.parentNode.removeChild(scene.container);\n };\n var div = document.createElement(\"div\");\n div.className = \"no-webgl\";\n div.style.cursor = \"pointer\";\n div.style.fontSize = \"24px\";\n div.style.color = Color.defaults[0];\n div.style.position = \"absolute\";\n div.style.left = div.style.top = \"0px\";\n div.style.width = div.style.height = \"100%\";\n div.style[\"background-color\"] = Color.lightLine;\n div.style[\"z-index\"] = 30;\n var p = document.createElement(\"p\");\n p.textContent = \"WebGL is not supported by your browser - visit https://get.webgl.org for more info\";\n p.style.position = \"relative\";\n p.style.top = \"50%\";\n p.style.left = \"50%\";\n p.style.height = \"30%\";\n p.style.width = \"50%\";\n p.style.margin = \"-15% 0 0 -25%\";\n div.appendChild(p);\n scene.container.appendChild(div);\n scene.container.style.background = \"#FFFFFF\";\n scene.container.onclick = function() {\n window.open(\"https://get.webgl.org\");\n };\n return false;\n };\n }\n });\n\n // src/lib/prepare_regl.js\n var require_prepare_regl = __commonJS({\n \"src/lib/prepare_regl.js\"(exports, module) {\n \"use strict\";\n var showNoWebGlMsg = require_show_no_webgl_msg();\n var createRegl = require_regl_unchecked();\n module.exports = function prepareRegl(gd, extensions, reglPrecompiled) {\n var fullLayout = gd._fullLayout;\n var success = true;\n fullLayout._glcanvas.each(function(d) {\n if (d.regl) {\n d.regl.preloadCachedCode(reglPrecompiled);\n return;\n }\n if (d.pick && !fullLayout._has(\"parcoords\")) return;\n try {\n d.regl = createRegl({\n canvas: this,\n attributes: {\n antialias: !d.pick,\n preserveDrawingBuffer: true\n },\n pixelRatio: gd._context.plotGlPixelRatio || window.devicePixelRatio,\n extensions: extensions || [],\n cachedCode: reglPrecompiled || {}\n });\n } catch (e) {\n success = false;\n }\n if (!d.regl) success = false;\n if (success) {\n this.addEventListener(\"webglcontextlost\", function(event) {\n if (gd && gd.emit) {\n gd.emit(\"plotly_webglcontextlost\", {\n event,\n layer: d.key\n });\n }\n }, false);\n }\n });\n if (!success) {\n showNoWebGlMsg({ container: fullLayout._glcontainer.node() });\n }\n return success;\n };\n }\n });\n\n // src/traces/scattergl/plot.js\n var require_plot3 = __commonJS({\n \"src/traces/scattergl/plot.js\"(exports, module) {\n \"use strict\";\n var createScatter = require_bundle();\n var createLine = require_regl_line2d();\n var createError = require_regl_error2d();\n var Text = require_dist();\n var Lib = require_lib();\n var selectMode = require_helpers5().selectMode;\n var prepareRegl = require_prepare_regl();\n var subTypes = require_subtypes();\n var linkTraces = require_link_traces();\n var styleTextSelection = require_edit_style().styleTextSelection;\n var reglPrecompiled = {};\n function getViewport(fullLayout, xaxis, yaxis, plotGlPixelRatio) {\n var gs = fullLayout._size;\n var width = fullLayout.width * plotGlPixelRatio;\n var height = fullLayout.height * plotGlPixelRatio;\n var l = gs.l * plotGlPixelRatio;\n var b = gs.b * plotGlPixelRatio;\n var r = gs.r * plotGlPixelRatio;\n var t = gs.t * plotGlPixelRatio;\n var w = gs.w * plotGlPixelRatio;\n var h = gs.h * plotGlPixelRatio;\n return [\n l + xaxis.domain[0] * w,\n b + yaxis.domain[0] * h,\n width - r - (1 - xaxis.domain[1]) * w,\n height - t - (1 - yaxis.domain[1]) * h\n ];\n }\n var exports = module.exports = function plot(gd, subplot, cdata) {\n if (!cdata.length) return;\n var fullLayout = gd._fullLayout;\n var scene = subplot._scene;\n var xaxis = subplot.xaxis;\n var yaxis = subplot.yaxis;\n var i, j;\n if (!scene) return;\n var success = prepareRegl(gd, [\"ANGLE_instanced_arrays\", \"OES_element_index_uint\"], reglPrecompiled);\n if (!success) {\n scene.init();\n return;\n }\n var count = scene.count;\n var regl = fullLayout._glcanvas.data()[0].regl;\n linkTraces(gd, subplot, cdata);\n if (scene.dirty) {\n if ((scene.line2d || scene.error2d) && !(scene.scatter2d || scene.fill2d || scene.glText)) {\n regl.clear({});\n }\n if (scene.error2d === true) {\n scene.error2d = createError(regl);\n }\n if (scene.line2d === true) {\n scene.line2d = createLine(regl);\n }\n if (scene.scatter2d === true) {\n scene.scatter2d = createScatter(regl);\n }\n if (scene.fill2d === true) {\n scene.fill2d = createLine(regl);\n }\n if (scene.glText === true) {\n scene.glText = new Array(count);\n for (i = 0; i < count; i++) {\n scene.glText[i] = new Text(regl);\n }\n }\n if (scene.glText) {\n if (count > scene.glText.length) {\n var textsToAdd = count - scene.glText.length;\n for (i = 0; i < textsToAdd; i++) {\n scene.glText.push(new Text(regl));\n }\n } else if (count < scene.glText.length) {\n var textsToRemove = scene.glText.length - count;\n var removedTexts = scene.glText.splice(count, textsToRemove);\n removedTexts.forEach(function(text) {\n text.destroy();\n });\n }\n for (i = 0; i < count; i++) {\n scene.glText[i].update(scene.textOptions[i]);\n }\n }\n if (scene.line2d) {\n scene.line2d.update(scene.lineOptions);\n scene.lineOptions = scene.lineOptions.map(function(lineOptions) {\n if (lineOptions && lineOptions.positions) {\n var srcPos = lineOptions.positions;\n var firstptdef = 0;\n while (firstptdef < srcPos.length && (isNaN(srcPos[firstptdef]) || isNaN(srcPos[firstptdef + 1]))) {\n firstptdef += 2;\n }\n var lastptdef = srcPos.length - 2;\n while (lastptdef > firstptdef && (isNaN(srcPos[lastptdef]) || isNaN(srcPos[lastptdef + 1]))) {\n lastptdef -= 2;\n }\n lineOptions.positions = srcPos.slice(firstptdef, lastptdef + 2);\n }\n return lineOptions;\n });\n scene.line2d.update(scene.lineOptions);\n }\n if (scene.error2d) {\n var errorBatch = (scene.errorXOptions || []).concat(scene.errorYOptions || []);\n scene.error2d.update(errorBatch);\n }\n if (scene.scatter2d) {\n scene.scatter2d.update(scene.markerOptions);\n }\n scene.fillOrder = Lib.repeat(null, count);\n if (scene.fill2d) {\n scene.fillOptions = scene.fillOptions.map(function(fillOptions, i2) {\n var cdscatter = cdata[i2];\n if (!fillOptions || !cdscatter || !cdscatter[0] || !cdscatter[0].trace) return;\n var cd = cdscatter[0];\n var trace2 = cd.trace;\n var stash2 = cd.t;\n var lineOptions = scene.lineOptions[i2];\n var last, j2;\n var fillData = [];\n if (trace2._ownfill) fillData.push(i2);\n if (trace2._nexttrace) fillData.push(i2 + 1);\n if (fillData.length) scene.fillOrder[i2] = fillData;\n var pos = [];\n var srcPos = lineOptions && lineOptions.positions || stash2.positions;\n var firstptdef, lastptdef;\n if (trace2.fill === \"tozeroy\") {\n firstptdef = 0;\n while (firstptdef < srcPos.length && isNaN(srcPos[firstptdef + 1])) {\n firstptdef += 2;\n }\n lastptdef = srcPos.length - 2;\n while (lastptdef > firstptdef && isNaN(srcPos[lastptdef + 1])) {\n lastptdef -= 2;\n }\n if (srcPos[firstptdef + 1] !== 0) {\n pos = [srcPos[firstptdef], 0];\n }\n pos = pos.concat(srcPos.slice(firstptdef, lastptdef + 2));\n if (srcPos[lastptdef + 1] !== 0) {\n pos = pos.concat([srcPos[lastptdef], 0]);\n }\n } else if (trace2.fill === \"tozerox\") {\n firstptdef = 0;\n while (firstptdef < srcPos.length && isNaN(srcPos[firstptdef])) {\n firstptdef += 2;\n }\n lastptdef = srcPos.length - 2;\n while (lastptdef > firstptdef && isNaN(srcPos[lastptdef])) {\n lastptdef -= 2;\n }\n if (srcPos[firstptdef] !== 0) {\n pos = [0, srcPos[firstptdef + 1]];\n }\n pos = pos.concat(srcPos.slice(firstptdef, lastptdef + 2));\n if (srcPos[lastptdef] !== 0) {\n pos = pos.concat([0, srcPos[lastptdef + 1]]);\n }\n } else if (trace2.fill === \"toself\" || trace2.fill === \"tonext\") {\n pos = [];\n last = 0;\n fillOptions.splitNull = true;\n for (j2 = 0; j2 < srcPos.length; j2 += 2) {\n if (isNaN(srcPos[j2]) || isNaN(srcPos[j2 + 1])) {\n pos = pos.concat(srcPos.slice(last, j2));\n pos.push(srcPos[last], srcPos[last + 1]);\n pos.push(null, null);\n last = j2 + 2;\n }\n }\n pos = pos.concat(srcPos.slice(last));\n if (last) {\n pos.push(srcPos[last], srcPos[last + 1]);\n }\n } else {\n var nextTrace = trace2._nexttrace;\n if (nextTrace) {\n var nextOptions = scene.lineOptions[i2 + 1];\n if (nextOptions) {\n var nextPos = nextOptions.positions;\n if (trace2.fill === \"tonexty\") {\n pos = srcPos.slice();\n for (i2 = Math.floor(nextPos.length / 2); i2--; ) {\n var xx = nextPos[i2 * 2];\n var yy = nextPos[i2 * 2 + 1];\n if (isNaN(xx) || isNaN(yy)) continue;\n pos.push(xx, yy);\n }\n fillOptions.fill = nextTrace.fillcolor;\n }\n }\n }\n }\n if (trace2._prevtrace && trace2._prevtrace.fill === \"tonext\") {\n var prevLinePos = scene.lineOptions[i2 - 1].positions;\n var offset = pos.length / 2;\n last = offset;\n var hole = [last];\n for (j2 = 0; j2 < prevLinePos.length; j2 += 2) {\n if (isNaN(prevLinePos[j2]) || isNaN(prevLinePos[j2 + 1])) {\n hole.push(j2 / 2 + offset + 1);\n last = j2 + 2;\n }\n }\n pos = pos.concat(prevLinePos);\n fillOptions.hole = hole;\n }\n fillOptions.fillmode = trace2.fill;\n fillOptions.opacity = trace2.opacity;\n fillOptions.positions = pos;\n return fillOptions;\n });\n scene.fill2d.update(scene.fillOptions);\n }\n }\n var dragmode = fullLayout.dragmode;\n var isSelectMode = selectMode(dragmode);\n var clickSelectEnabled = fullLayout.clickmode.indexOf(\"select\") > -1;\n for (i = 0; i < count; i++) {\n var cd0 = cdata[i][0];\n var trace = cd0.trace;\n var stash = cd0.t;\n var index = stash.index;\n var len = trace._length;\n var x = stash.x;\n var y = stash.y;\n if (trace.selectedpoints || isSelectMode || clickSelectEnabled) {\n if (!isSelectMode) isSelectMode = true;\n if (trace.selectedpoints) {\n var selPts = scene.selectBatch[index] = Lib.selIndices2selPoints(trace);\n var selDict = {};\n for (j = 0; j < selPts.length; j++) {\n selDict[selPts[j]] = 1;\n }\n var unselPts = [];\n for (j = 0; j < len; j++) {\n if (!selDict[j]) unselPts.push(j);\n }\n scene.unselectBatch[index] = unselPts;\n }\n var xpx = stash.xpx = new Array(len);\n var ypx = stash.ypx = new Array(len);\n for (j = 0; j < len; j++) {\n xpx[j] = xaxis.c2p(x[j]);\n ypx[j] = yaxis.c2p(y[j]);\n }\n } else {\n stash.xpx = stash.ypx = null;\n }\n }\n if (isSelectMode) {\n if (!scene.select2d) {\n scene.select2d = createScatter(fullLayout._glcanvas.data()[1].regl);\n }\n if (scene.scatter2d) {\n var unselOpts = new Array(count);\n for (i = 0; i < count; i++) {\n unselOpts[i] = scene.selectBatch[i].length || scene.unselectBatch[i].length ? scene.markerUnselectedOptions[i] : {};\n }\n scene.scatter2d.update(unselOpts);\n }\n if (scene.select2d) {\n scene.select2d.update(scene.markerOptions);\n scene.select2d.update(scene.markerSelectedOptions);\n }\n if (scene.glText) {\n cdata.forEach(function(cdscatter) {\n var trace2 = ((cdscatter || [])[0] || {}).trace || {};\n if (subTypes.hasText(trace2)) {\n styleTextSelection(cdscatter);\n }\n });\n }\n } else {\n if (scene.scatter2d) {\n scene.scatter2d.update(scene.markerOptions);\n }\n }\n var vpRange0 = {\n viewport: getViewport(fullLayout, xaxis, yaxis, gd._context.plotGlPixelRatio),\n // TODO do we need those fallbacks?\n range: [\n (xaxis._rl || xaxis.range)[0],\n (yaxis._rl || yaxis.range)[0],\n (xaxis._rl || xaxis.range)[1],\n (yaxis._rl || yaxis.range)[1]\n ]\n };\n var vpRange = Lib.repeat(vpRange0, scene.count);\n if (scene.fill2d) {\n scene.fill2d.update(vpRange);\n }\n if (scene.line2d) {\n scene.line2d.update(vpRange);\n }\n if (scene.error2d) {\n scene.error2d.update(vpRange.concat(vpRange));\n }\n if (scene.scatter2d) {\n scene.scatter2d.update(vpRange);\n }\n if (scene.select2d) {\n scene.select2d.update(vpRange);\n }\n if (scene.glText) {\n scene.glText.forEach(function(text) {\n text.update(vpRange0);\n });\n }\n };\n exports.reglPrecompiled = reglPrecompiled;\n }\n });\n\n // src/traces/scattergl/index.js\n var require_scattergl = __commonJS({\n \"src/traces/scattergl/index.js\"(exports, module) {\n \"use strict\";\n var index = require_base_index();\n index.plot = require_plot3();\n module.exports = index;\n }\n });\n\n // lib/scattergl.js\n var require_scattergl2 = __commonJS({\n \"lib/scattergl.js\"(exports, module) {\n \"use strict\";\n module.exports = require_scattergl();\n }\n });\n\n // src/traces/splom/attributes.js\n var require_attributes24 = __commonJS({\n \"src/traces/splom/attributes.js\"(exports, module) {\n \"use strict\";\n var scatterAttrs = require_attributes12();\n var colorScaleAttrs = require_attributes8();\n var axisHoverFormat = require_axis_format_attributes().axisHoverFormat;\n var hovertemplateAttrs = require_template_attributes().hovertemplateAttrs;\n var scatterGlAttrs = require_attributes23();\n var cartesianIdRegex = require_constants2().idRegex;\n var templatedArray = require_plot_template().templatedArray;\n var extendFlat = require_extend().extendFlat;\n var scatterMarkerAttrs = scatterAttrs.marker;\n var scatterMarkerLineAttrs = scatterMarkerAttrs.line;\n var markerLineAttrs = extendFlat(colorScaleAttrs(\"marker.line\", { editTypeOverride: \"calc\" }), {\n width: extendFlat({}, scatterMarkerLineAttrs.width, { editType: \"calc\" }),\n editType: \"calc\"\n });\n var markerAttrs = extendFlat(colorScaleAttrs(\"marker\"), {\n symbol: scatterMarkerAttrs.symbol,\n angle: scatterMarkerAttrs.angle,\n size: extendFlat({}, scatterMarkerAttrs.size, { editType: \"markerSize\" }),\n sizeref: scatterMarkerAttrs.sizeref,\n sizemin: scatterMarkerAttrs.sizemin,\n sizemode: scatterMarkerAttrs.sizemode,\n opacity: scatterMarkerAttrs.opacity,\n colorbar: scatterMarkerAttrs.colorbar,\n line: markerLineAttrs,\n editType: \"calc\"\n });\n markerAttrs.color.editType = markerAttrs.cmin.editType = markerAttrs.cmax.editType = \"style\";\n function makeAxesValObject(axLetter) {\n return {\n valType: \"info_array\",\n freeLength: true,\n editType: \"calc\",\n items: {\n valType: \"subplotid\",\n regex: cartesianIdRegex[axLetter],\n editType: \"plot\"\n }\n };\n }\n module.exports = {\n dimensions: templatedArray(\"dimension\", {\n visible: {\n valType: \"boolean\",\n dflt: true,\n editType: \"calc\"\n },\n label: {\n valType: \"string\",\n editType: \"calc\"\n },\n values: {\n valType: \"data_array\",\n editType: \"calc+clearAxisTypes\"\n },\n axis: {\n type: {\n valType: \"enumerated\",\n values: [\"linear\", \"log\", \"date\", \"category\"],\n editType: \"calc+clearAxisTypes\"\n },\n // TODO make 'true' the default in v3?\n matches: {\n valType: \"boolean\",\n dflt: false,\n editType: \"calc\"\n },\n editType: \"calc+clearAxisTypes\"\n },\n // TODO should add an attribute to pin down x only vars and y only vars\n // like https://seaborn.pydata.org/generated/seaborn.pairplot.html\n // x_vars and y_vars\n // maybe more axis defaulting option e.g. `showgrid: false`\n editType: \"calc+clearAxisTypes\"\n }),\n // mode: {}, (only 'markers' for now)\n text: extendFlat({}, scatterGlAttrs.text, {}),\n hovertext: extendFlat({}, scatterGlAttrs.hovertext, {}),\n hovertemplate: hovertemplateAttrs(),\n xhoverformat: axisHoverFormat(\"x\"),\n yhoverformat: axisHoverFormat(\"y\"),\n marker: markerAttrs,\n xaxes: makeAxesValObject(\"x\"),\n yaxes: makeAxesValObject(\"y\"),\n diagonal: {\n visible: {\n valType: \"boolean\",\n dflt: true,\n editType: \"calc\"\n },\n // type: 'scattergl' | 'histogram' | 'box' | 'violin'\n // ...\n // more options\n editType: \"calc\"\n },\n showupperhalf: {\n valType: \"boolean\",\n dflt: true,\n editType: \"calc\"\n },\n showlowerhalf: {\n valType: \"boolean\",\n dflt: true,\n editType: \"calc\"\n },\n selected: {\n marker: scatterGlAttrs.selected.marker,\n editType: \"calc\"\n },\n unselected: {\n marker: scatterGlAttrs.unselected.marker,\n editType: \"calc\"\n },\n opacity: scatterGlAttrs.opacity\n };\n }\n });\n\n // src/traces/parcoords/merge_length.js\n var require_merge_length = __commonJS({\n \"src/traces/parcoords/merge_length.js\"(exports, module) {\n \"use strict\";\n module.exports = function(traceOut, dimensions, dataAttr, len) {\n if (!len) len = Infinity;\n var i, dimi;\n for (i = 0; i < dimensions.length; i++) {\n dimi = dimensions[i];\n if (dimi.visible) len = Math.min(len, dimi[dataAttr].length);\n }\n if (len === Infinity) len = 0;\n traceOut._length = len;\n for (i = 0; i < dimensions.length; i++) {\n dimi = dimensions[i];\n if (dimi.visible) dimi._length = len;\n }\n return len;\n };\n }\n });\n\n // src/traces/splom/defaults.js\n var require_defaults20 = __commonJS({\n \"src/traces/splom/defaults.js\"(exports, module) {\n \"use strict\";\n var Lib = require_lib();\n var handleArrayContainerDefaults = require_array_container_defaults();\n var attributes = require_attributes24();\n var subTypes = require_subtypes();\n var handleMarkerDefaults = require_marker_defaults();\n var mergeLength = require_merge_length();\n var isOpenSymbol = require_helpers12().isOpenSymbol;\n module.exports = function supplyDefaults(traceIn, traceOut, defaultColor, layout) {\n function coerce(attr, dflt) {\n return Lib.coerce(traceIn, traceOut, attributes, attr, dflt);\n }\n var dimensions = handleArrayContainerDefaults(traceIn, traceOut, {\n name: \"dimensions\",\n handleItemDefaults: dimensionDefaults\n });\n var showDiag = coerce(\"diagonal.visible\");\n var showUpper = coerce(\"showupperhalf\");\n var showLower = coerce(\"showlowerhalf\");\n var dimLength = mergeLength(traceOut, dimensions, \"values\");\n if (!dimLength || !showDiag && !showUpper && !showLower) {\n traceOut.visible = false;\n return;\n }\n coerce(\"text\");\n coerce(\"hovertext\");\n coerce(\"hovertemplate\");\n coerce(\"xhoverformat\");\n coerce(\"yhoverformat\");\n handleMarkerDefaults(traceIn, traceOut, defaultColor, layout, coerce, { noAngleRef: true, noStandOff: true });\n var isOpen = isOpenSymbol(traceOut.marker.symbol);\n var isBubble = subTypes.isBubble(traceOut);\n coerce(\"marker.line.width\", isOpen || isBubble ? 1 : 0);\n handleAxisDefaults(traceIn, traceOut, layout, coerce);\n Lib.coerceSelectionMarkerOpacity(traceOut, coerce);\n };\n function dimensionDefaults(dimIn, dimOut) {\n function coerce(attr, dflt) {\n return Lib.coerce(dimIn, dimOut, attributes.dimensions, attr, dflt);\n }\n coerce(\"label\");\n var values = coerce(\"values\");\n if (!(values && values.length)) dimOut.visible = false;\n else coerce(\"visible\");\n coerce(\"axis.type\");\n coerce(\"axis.matches\");\n }\n function handleAxisDefaults(traceIn, traceOut, layout, coerce) {\n var dimensions = traceOut.dimensions;\n var dimLength = dimensions.length;\n var showUpper = traceOut.showupperhalf;\n var showLower = traceOut.showlowerhalf;\n var showDiag = traceOut.diagonal.visible;\n var i, j;\n var xAxesDflt = new Array(dimLength);\n var yAxesDflt = new Array(dimLength);\n for (i = 0; i < dimLength; i++) {\n var suffix = i ? i + 1 : \"\";\n xAxesDflt[i] = \"x\" + suffix;\n yAxesDflt[i] = \"y\" + suffix;\n }\n var xaxes = coerce(\"xaxes\", xAxesDflt);\n var yaxes = coerce(\"yaxes\", yAxesDflt);\n var diag = traceOut._diag = new Array(dimLength);\n traceOut._xaxes = {};\n traceOut._yaxes = {};\n var xList = [];\n var yList = [];\n function fillAxisStashes(axId, counterAxId, dim2, list) {\n if (!axId) return;\n var axLetter = axId.charAt(0);\n var stash = layout._splomAxes[axLetter];\n traceOut[\"_\" + axLetter + \"axes\"][axId] = 1;\n list.push(axId);\n if (!(axId in stash)) {\n var s = stash[axId] = {};\n if (dim2) {\n s.label = dim2.label || \"\";\n if (dim2.visible && dim2.axis) {\n if (dim2.axis.type) s.type = dim2.axis.type;\n if (dim2.axis.matches) s.matches = counterAxId;\n }\n }\n }\n }\n var mustShiftX = !showDiag && !showLower;\n var mustShiftY = !showDiag && !showUpper;\n traceOut._axesDim = {};\n for (i = 0; i < dimLength; i++) {\n var dim = dimensions[i];\n var i0 = i === 0;\n var iN = i === dimLength - 1;\n var xaId = i0 && mustShiftX || iN && mustShiftY ? void 0 : xaxes[i];\n var yaId = i0 && mustShiftY || iN && mustShiftX ? void 0 : yaxes[i];\n fillAxisStashes(xaId, yaId, dim, xList);\n fillAxisStashes(yaId, xaId, dim, yList);\n diag[i] = [xaId, yaId];\n traceOut._axesDim[xaId] = i;\n traceOut._axesDim[yaId] = i;\n }\n for (i = 0; i < xList.length; i++) {\n for (j = 0; j < yList.length; j++) {\n var id = xList[i] + yList[j];\n if (i > j && showUpper) {\n layout._splomSubplots[id] = 1;\n } else if (i < j && showLower) {\n layout._splomSubplots[id] = 1;\n } else if (i === j && (showDiag || !showLower || !showUpper)) {\n layout._splomSubplots[id] = 1;\n }\n }\n }\n if (!showLower || !showDiag && showUpper && showLower) {\n layout._splomGridDflt.xside = \"bottom\";\n layout._splomGridDflt.yside = \"left\";\n }\n }\n }\n });\n\n // src/traces/splom/scene_update.js\n var require_scene_update2 = __commonJS({\n \"src/traces/splom/scene_update.js\"(exports, module) {\n \"use strict\";\n var Lib = require_lib();\n module.exports = function sceneUpdate(gd, trace) {\n var fullLayout = gd._fullLayout;\n var uid = trace.uid;\n var splomScenes = fullLayout._splomScenes;\n if (!splomScenes) splomScenes = fullLayout._splomScenes = {};\n var reset = {\n dirty: true,\n selectBatch: [],\n unselectBatch: []\n };\n var first = {\n matrix: false,\n selectBatch: [],\n unselectBatch: []\n };\n var scene = splomScenes[trace.uid];\n if (!scene) {\n scene = splomScenes[uid] = Lib.extendFlat({}, reset, first);\n scene.draw = function draw() {\n if (scene.matrix && scene.matrix.draw) {\n if (scene.selectBatch.length || scene.unselectBatch.length) {\n scene.matrix.draw(scene.unselectBatch, scene.selectBatch);\n } else {\n scene.matrix.draw();\n }\n }\n scene.dirty = false;\n };\n scene.destroy = function destroy() {\n if (scene.matrix && scene.matrix.destroy) {\n scene.matrix.destroy();\n }\n scene.matrixOptions = null;\n scene.selectBatch = null;\n scene.unselectBatch = null;\n scene = null;\n };\n }\n if (!scene.dirty) {\n Lib.extendFlat(scene, reset);\n }\n return scene;\n };\n }\n });\n\n // src/traces/splom/calc.js\n var require_calc6 = __commonJS({\n \"src/traces/splom/calc.js\"(exports, module) {\n \"use strict\";\n var Lib = require_lib();\n var AxisIDs = require_axis_ids();\n var calcMarkerSize = require_calc3().calcMarkerSize;\n var calcAxisExpansion = require_calc3().calcAxisExpansion;\n var calcColorscale = require_colorscale_calc();\n var convertMarkerSelection = require_convert2().markerSelection;\n var convertMarkerStyle = require_convert2().markerStyle;\n var sceneUpdate = require_scene_update2();\n var BADNUM = require_numerical().BADNUM;\n var TOO_MANY_POINTS = require_constants14().TOO_MANY_POINTS;\n module.exports = function calc(gd, trace) {\n var dimensions = trace.dimensions;\n var commonLength = trace._length;\n var opts = {};\n var cdata = opts.cdata = [];\n var ldata = opts.data = [];\n var visibleDims = trace._visibleDims = [];\n var i, k, dim, xa, ya;\n function makeCalcdata(ax, dim2) {\n var ccol = ax.makeCalcdata({\n v: dim2.values,\n vcalendar: trace.calendar\n }, \"v\");\n for (var j = 0; j < ccol.length; j++) {\n ccol[j] = ccol[j] === BADNUM ? NaN : ccol[j];\n }\n cdata.push(ccol);\n ldata.push(ax.type === \"log\" ? Lib.simpleMap(ccol, ax.c2l) : ccol);\n }\n for (i = 0; i < dimensions.length; i++) {\n dim = dimensions[i];\n if (dim.visible) {\n xa = AxisIDs.getFromId(gd, trace._diag[i][0]);\n ya = AxisIDs.getFromId(gd, trace._diag[i][1]);\n if (xa && ya && xa.type !== ya.type) {\n Lib.log(\"Skipping splom dimension \" + i + \" with conflicting axis types\");\n continue;\n }\n if (xa) {\n makeCalcdata(xa, dim);\n if (ya && ya.type === \"category\") {\n ya._categories = xa._categories.slice();\n }\n } else {\n makeCalcdata(ya, dim);\n }\n visibleDims.push(i);\n }\n }\n calcColorscale(gd, trace);\n Lib.extendFlat(opts, convertMarkerStyle(gd, trace));\n var visibleLength = cdata.length;\n var hasTooManyPoints = visibleLength * commonLength > TOO_MANY_POINTS;\n var ppad;\n if (hasTooManyPoints) {\n ppad = opts.sizeAvg || Math.max(opts.size, 3);\n } else {\n ppad = calcMarkerSize(trace, commonLength);\n }\n for (k = 0; k < visibleDims.length; k++) {\n i = visibleDims[k];\n dim = dimensions[i];\n xa = AxisIDs.getFromId(gd, trace._diag[i][0]) || {};\n ya = AxisIDs.getFromId(gd, trace._diag[i][1]) || {};\n calcAxisExpansion(gd, trace, xa, ya, cdata[k], cdata[k], ppad);\n }\n var scene = sceneUpdate(gd, trace);\n if (!scene.matrix) scene.matrix = true;\n scene.matrixOptions = opts;\n scene.selectedOptions = convertMarkerSelection(gd, trace, trace.selected);\n scene.unselectedOptions = convertMarkerSelection(gd, trace, trace.unselected);\n return [{ x: false, y: false, t: {}, trace }];\n };\n }\n });\n\n // node_modules/performance-now/lib/performance-now.js\n var require_performance_now = __commonJS({\n \"node_modules/performance-now/lib/performance-now.js\"(exports, module) {\n (function() {\n var getNanoSeconds, hrtime, loadTime, moduleLoadTime, nodeLoadTime, upTime;\n if (typeof performance !== \"undefined\" && performance !== null && performance.now) {\n module.exports = function() {\n return performance.now();\n };\n } else if (typeof process !== \"undefined\" && process !== null && process.hrtime) {\n module.exports = function() {\n return (getNanoSeconds() - nodeLoadTime) / 1e6;\n };\n hrtime = process.hrtime;\n getNanoSeconds = function() {\n var hr;\n hr = hrtime();\n return hr[0] * 1e9 + hr[1];\n };\n moduleLoadTime = getNanoSeconds();\n upTime = process.uptime() * 1e9;\n nodeLoadTime = moduleLoadTime - upTime;\n } else if (Date.now) {\n module.exports = function() {\n return Date.now() - loadTime;\n };\n loadTime = Date.now();\n } else {\n module.exports = function() {\n return (/* @__PURE__ */ new Date()).getTime() - loadTime;\n };\n loadTime = (/* @__PURE__ */ new Date()).getTime();\n }\n }).call(exports);\n }\n });\n\n // node_modules/raf/index.js\n var require_raf = __commonJS({\n \"node_modules/raf/index.js\"(exports, module) {\n var now = require_performance_now();\n var root = typeof window === \"undefined\" ? window : window;\n var vendors = [\"moz\", \"webkit\"];\n var suffix = \"AnimationFrame\";\n var raf = root[\"request\" + suffix];\n var caf = root[\"cancel\" + suffix] || root[\"cancelRequest\" + suffix];\n for (i = 0; !raf && i < vendors.length; i++) {\n raf = root[vendors[i] + \"Request\" + suffix];\n caf = root[vendors[i] + \"Cancel\" + suffix] || root[vendors[i] + \"CancelRequest\" + suffix];\n }\n var i;\n if (!raf || !caf) {\n last = 0, id = 0, queue = [], frameDuration = 1e3 / 60;\n raf = function(callback) {\n if (queue.length === 0) {\n var _now = now(), next = Math.max(0, frameDuration - (_now - last));\n last = next + _now;\n setTimeout(function() {\n var cp = queue.slice(0);\n queue.length = 0;\n for (var i2 = 0; i2 < cp.length; i2++) {\n if (!cp[i2].cancelled) {\n try {\n cp[i2].callback(last);\n } catch (e) {\n setTimeout(function() {\n throw e;\n }, 0);\n }\n }\n }\n }, Math.round(next));\n }\n queue.push({\n handle: ++id,\n callback,\n cancelled: false\n });\n return id;\n };\n caf = function(handle) {\n for (var i2 = 0; i2 < queue.length; i2++) {\n if (queue[i2].handle === handle) {\n queue[i2].cancelled = true;\n }\n }\n };\n }\n var last;\n var id;\n var queue;\n var frameDuration;\n module.exports = function(fn) {\n return raf.call(root, fn);\n };\n module.exports.cancel = function() {\n caf.apply(root, arguments);\n };\n module.exports.polyfill = function(object) {\n if (!object) {\n object = root;\n }\n object.requestAnimationFrame = raf;\n object.cancelAnimationFrame = caf;\n };\n }\n });\n\n // node_modules/array-range/index.js\n var require_array_range = __commonJS({\n \"node_modules/array-range/index.js\"(exports, module) {\n module.exports = function newArray(start, end) {\n var n0 = typeof start === \"number\", n1 = typeof end === \"number\";\n if (n0 && !n1) {\n end = start;\n start = 0;\n } else if (!n0 && !n1) {\n start = 0;\n end = 0;\n }\n start = start | 0;\n end = end | 0;\n var len = end - start;\n if (len < 0)\n throw new Error(\"array length must be positive\");\n var a = new Array(len);\n for (var i = 0, c = start; i < len; i++, c++)\n a[i] = c;\n return a;\n };\n }\n });\n\n // node_modules/regl-splom/index.js\n var require_regl_splom = __commonJS({\n \"node_modules/regl-splom/index.js\"(exports, module) {\n \"use strict\";\n var createScatter = require_bundle();\n var pick = require_pick_by_alias();\n var getBounds = require_array_bounds();\n var raf = require_raf();\n var arrRange = require_array_range();\n var rect = require_parse_rect();\n var flatten = require_flatten_vertex_data();\n module.exports = SPLOM;\n function SPLOM(regl, options) {\n if (!(this instanceof SPLOM)) return new SPLOM(regl, options);\n this.traces = [];\n this.passes = {};\n this.regl = regl;\n this.scatter = createScatter(regl);\n this.canvas = this.scatter.canvas;\n }\n SPLOM.prototype.render = function(...args) {\n if (args.length) {\n this.update(...args);\n }\n if (this.regl.attributes.preserveDrawingBuffer) return this.draw();\n if (this.dirty) {\n if (this.planned == null) {\n this.planned = raf(() => {\n this.draw();\n this.dirty = true;\n this.planned = null;\n });\n }\n } else {\n this.draw();\n this.dirty = true;\n raf(() => {\n this.dirty = false;\n });\n }\n return this;\n };\n SPLOM.prototype.update = function(...args) {\n if (!args.length) return;\n for (let i = 0; i < args.length; i++) {\n this.updateItem(i, args[i]);\n }\n this.traces = this.traces.filter(Boolean);\n let passes = [];\n let offset = 0;\n for (let i = 0; i < this.traces.length; i++) {\n let trace = this.traces[i];\n let tracePasses = this.traces[i].passes;\n for (let j = 0; j < tracePasses.length; j++) {\n passes.push(this.passes[tracePasses[j]]);\n }\n trace.passOffset = offset;\n offset += trace.passes.length;\n }\n this.scatter.update(...passes);\n return this;\n };\n SPLOM.prototype.updateItem = function(i, options) {\n let { regl } = this;\n if (options === null) {\n this.traces[i] = null;\n return this;\n }\n if (!options) return this;\n let o = pick(options, {\n data: \"data items columns rows values dimensions samples x\",\n snap: \"snap cluster\",\n size: \"sizes size radius\",\n color: \"colors color fill fill-color fillColor\",\n opacity: \"opacity alpha transparency opaque\",\n borderSize: \"borderSizes borderSize border-size bordersize borderWidth borderWidths border-width borderwidth stroke-width strokeWidth strokewidth outline\",\n borderColor: \"borderColors borderColor bordercolor stroke stroke-color strokeColor\",\n marker: \"markers marker shape\",\n range: \"range ranges databox dataBox\",\n viewport: \"viewport viewBox viewbox\",\n domain: \"domain domains area areas\",\n padding: \"pad padding paddings pads margin margins\",\n transpose: \"transpose transposed\",\n diagonal: \"diagonal diag showDiagonal\",\n upper: \"upper up top upperhalf upperHalf showupperhalf showUpper showUpperHalf\",\n lower: \"lower low bottom lowerhalf lowerHalf showlowerhalf showLowerHalf showLower\"\n });\n let trace = this.traces[i] || (this.traces[i] = {\n id: i,\n buffer: regl.buffer({\n usage: \"dynamic\",\n type: \"float\",\n data: new Uint8Array()\n }),\n color: \"black\",\n marker: null,\n size: 12,\n borderColor: \"transparent\",\n borderSize: 1,\n viewport: rect([regl._gl.drawingBufferWidth, regl._gl.drawingBufferHeight]),\n padding: [0, 0, 0, 0],\n opacity: 1,\n diagonal: true,\n upper: true,\n lower: true\n });\n if (o.color != null) {\n trace.color = o.color;\n }\n if (o.size != null) {\n trace.size = o.size;\n }\n if (o.marker != null) {\n trace.marker = o.marker;\n }\n if (o.borderColor != null) {\n trace.borderColor = o.borderColor;\n }\n if (o.borderSize != null) {\n trace.borderSize = o.borderSize;\n }\n if (o.opacity != null) {\n trace.opacity = o.opacity;\n }\n if (o.viewport) {\n trace.viewport = rect(o.viewport);\n }\n if (o.diagonal != null) trace.diagonal = o.diagonal;\n if (o.upper != null) trace.upper = o.upper;\n if (o.lower != null) trace.lower = o.lower;\n if (o.data) {\n trace.buffer(flatten(o.data));\n trace.columns = o.data.length;\n trace.count = o.data[0].length;\n trace.bounds = [];\n for (let i2 = 0; i2 < trace.columns; i2++) {\n trace.bounds[i2] = getBounds(o.data[i2], 1);\n }\n }\n let multirange;\n if (o.range) {\n trace.range = o.range;\n multirange = trace.range && typeof trace.range[0] !== \"number\";\n }\n if (o.domain) {\n trace.domain = o.domain;\n }\n let multipadding = false;\n if (o.padding != null) {\n if (Array.isArray(o.padding) && o.padding.length === trace.columns && typeof o.padding[o.padding.length - 1] === \"number\") {\n trace.padding = o.padding.map(getPad);\n multipadding = true;\n } else {\n trace.padding = getPad(o.padding);\n }\n }\n let m = trace.columns;\n let n = trace.count;\n let w = trace.viewport.width;\n let h = trace.viewport.height;\n let left = trace.viewport.x;\n let top = trace.viewport.y;\n let iw = w / m;\n let ih = h / m;\n trace.passes = [];\n for (let i2 = 0; i2 < m; i2++) {\n for (let j = 0; j < m; j++) {\n if (!trace.diagonal && j === i2) continue;\n if (!trace.upper && i2 > j) continue;\n if (!trace.lower && i2 < j) continue;\n let key = passId(trace.id, i2, j);\n let pass = this.passes[key] || (this.passes[key] = {});\n if (o.data) {\n if (o.transpose) {\n pass.positions = {\n x: { buffer: trace.buffer, offset: j, count: n, stride: m },\n y: { buffer: trace.buffer, offset: i2, count: n, stride: m }\n };\n } else {\n pass.positions = {\n x: { buffer: trace.buffer, offset: j * n, count: n },\n y: { buffer: trace.buffer, offset: i2 * n, count: n }\n };\n }\n pass.bounds = getBox(trace.bounds, i2, j);\n }\n if (o.domain || o.viewport || o.data) {\n let pad = multipadding ? getBox(trace.padding, i2, j) : trace.padding;\n if (trace.domain) {\n let [lox, loy, hix, hiy] = getBox(trace.domain, i2, j);\n pass.viewport = [\n left + lox * w + pad[0],\n top + loy * h + pad[1],\n left + hix * w - pad[2],\n top + hiy * h - pad[3]\n ];\n } else {\n pass.viewport = [\n left + j * iw + iw * pad[0],\n top + i2 * ih + ih * pad[1],\n left + (j + 1) * iw - iw * pad[2],\n top + (i2 + 1) * ih - ih * pad[3]\n ];\n }\n }\n if (o.color) pass.color = trace.color;\n if (o.size) pass.size = trace.size;\n if (o.marker) pass.marker = trace.marker;\n if (o.borderSize) pass.borderSize = trace.borderSize;\n if (o.borderColor) pass.borderColor = trace.borderColor;\n if (o.opacity) pass.opacity = trace.opacity;\n if (o.range) {\n pass.range = multirange ? getBox(trace.range, i2, j) : trace.range || pass.bounds;\n }\n trace.passes.push(key);\n }\n }\n return this;\n };\n SPLOM.prototype.draw = function(...args) {\n if (!args.length) {\n this.scatter.draw();\n } else {\n let idx = [];\n for (let i = 0; i < args.length; i++) {\n if (typeof args[i] === \"number\") {\n let { passes, passOffset } = this.traces[args[i]];\n idx.push(...arrRange(passOffset, passOffset + passes.length));\n } else if (args[i].length) {\n let els = args[i];\n let { passes, passOffset } = this.traces[i];\n passes = passes.map((passId2, i2) => {\n idx[passOffset + i2] = els;\n });\n }\n }\n this.scatter.draw(...idx);\n }\n return this;\n };\n SPLOM.prototype.destroy = function() {\n this.traces.forEach((trace) => {\n if (trace.buffer && trace.buffer.destroy) trace.buffer.destroy();\n });\n this.traces = null;\n this.passes = null;\n this.scatter.destroy();\n return this;\n };\n function passId(trace, i, j) {\n let id = trace.id != null ? trace.id : trace;\n let n = i;\n let m = j;\n let key = id << 16 | (n & 255) << 8 | m & 255;\n return key;\n }\n function getBox(items, i, j) {\n let ilox, iloy, ihix, ihiy, jlox, jloy, jhix, jhiy;\n let iitem = items[i], jitem = items[j];\n if (iitem.length > 2) {\n ilox = iitem[0];\n ihix = iitem[2];\n iloy = iitem[1];\n ihiy = iitem[3];\n } else if (iitem.length) {\n ilox = iloy = iitem[0];\n ihix = ihiy = iitem[1];\n } else {\n ilox = iitem.x;\n iloy = iitem.y;\n ihix = iitem.x + iitem.width;\n ihiy = iitem.y + iitem.height;\n }\n if (jitem.length > 2) {\n jlox = jitem[0];\n jhix = jitem[2];\n jloy = jitem[1];\n jhiy = jitem[3];\n } else if (jitem.length) {\n jlox = jloy = jitem[0];\n jhix = jhiy = jitem[1];\n } else {\n jlox = jitem.x;\n jloy = jitem.y;\n jhix = jitem.x + jitem.width;\n jhiy = jitem.y + jitem.height;\n }\n return [jlox, iloy, jhix, ihiy];\n }\n function getPad(arg) {\n if (typeof arg === \"number\") return [arg, arg, arg, arg];\n else if (arg.length === 2) return [arg[0], arg[1], arg[0], arg[1]];\n else {\n let box = rect(arg);\n return [box.x, box.y, box.x + box.width, box.y + box.height];\n }\n }\n }\n });\n\n // src/traces/splom/plot.js\n var require_plot4 = __commonJS({\n \"src/traces/splom/plot.js\"(exports, module) {\n \"use strict\";\n var createMatrix = require_regl_splom();\n var Lib = require_lib();\n var AxisIDs = require_axis_ids();\n var selectMode = require_helpers5().selectMode;\n module.exports = function plot(gd, _, splomCalcData) {\n if (!splomCalcData.length) return;\n for (var i = 0; i < splomCalcData.length; i++) {\n plotOne(gd, splomCalcData[i][0]);\n }\n };\n function plotOne(gd, cd0) {\n var fullLayout = gd._fullLayout;\n var gs = fullLayout._size;\n var trace = cd0.trace;\n var stash = cd0.t;\n var scene = fullLayout._splomScenes[trace.uid];\n var matrixOpts = scene.matrixOptions;\n var cdata = matrixOpts.cdata;\n var regl = fullLayout._glcanvas.data()[0].regl;\n var dragmode = fullLayout.dragmode;\n var xa, ya;\n var i, j, k;\n if (cdata.length === 0) return;\n matrixOpts.lower = trace.showupperhalf;\n matrixOpts.upper = trace.showlowerhalf;\n matrixOpts.diagonal = trace.diagonal.visible;\n var visibleDims = trace._visibleDims;\n var visibleLength = cdata.length;\n var viewOpts = scene.viewOpts = {};\n viewOpts.ranges = new Array(visibleLength);\n viewOpts.domains = new Array(visibleLength);\n for (k = 0; k < visibleDims.length; k++) {\n i = visibleDims[k];\n var rng = viewOpts.ranges[k] = new Array(4);\n var dmn = viewOpts.domains[k] = new Array(4);\n xa = AxisIDs.getFromId(gd, trace._diag[i][0]);\n if (xa) {\n rng[0] = xa._rl[0];\n rng[2] = xa._rl[1];\n dmn[0] = xa.domain[0];\n dmn[2] = xa.domain[1];\n }\n ya = AxisIDs.getFromId(gd, trace._diag[i][1]);\n if (ya) {\n rng[1] = ya._rl[0];\n rng[3] = ya._rl[1];\n dmn[1] = ya.domain[0];\n dmn[3] = ya.domain[1];\n }\n }\n var plotGlPixelRatio = gd._context.plotGlPixelRatio;\n var l = gs.l * plotGlPixelRatio;\n var b = gs.b * plotGlPixelRatio;\n var w = gs.w * plotGlPixelRatio;\n var h = gs.h * plotGlPixelRatio;\n viewOpts.viewport = [l, b, w + l, h + b];\n if (scene.matrix === true) {\n scene.matrix = createMatrix(regl);\n }\n var clickSelectEnabled = fullLayout.clickmode.indexOf(\"select\") > -1;\n var isSelectMode = selectMode(dragmode) || !!trace.selectedpoints || clickSelectEnabled;\n var needsBaseUpdate = true;\n if (isSelectMode) {\n var commonLength = trace._length;\n if (trace.selectedpoints) {\n scene.selectBatch = trace.selectedpoints;\n var selPts = trace.selectedpoints;\n var selDict = {};\n for (i = 0; i < selPts.length; i++) {\n selDict[selPts[i]] = true;\n }\n var unselPts = [];\n for (i = 0; i < commonLength; i++) {\n if (!selDict[i]) unselPts.push(i);\n }\n scene.unselectBatch = unselPts;\n }\n var xpx = stash.xpx = new Array(visibleLength);\n var ypx = stash.ypx = new Array(visibleLength);\n for (k = 0; k < visibleDims.length; k++) {\n i = visibleDims[k];\n xa = AxisIDs.getFromId(gd, trace._diag[i][0]);\n if (xa) {\n xpx[k] = new Array(commonLength);\n for (j = 0; j < commonLength; j++) {\n xpx[k][j] = xa.c2p(cdata[k][j]);\n }\n }\n ya = AxisIDs.getFromId(gd, trace._diag[i][1]);\n if (ya) {\n ypx[k] = new Array(commonLength);\n for (j = 0; j < commonLength; j++) {\n ypx[k][j] = ya.c2p(cdata[k][j]);\n }\n }\n }\n if (scene.selectBatch.length || scene.unselectBatch.length) {\n var unselOpts = Lib.extendFlat({}, matrixOpts, scene.unselectedOptions, viewOpts);\n var selOpts = Lib.extendFlat({}, matrixOpts, scene.selectedOptions, viewOpts);\n scene.matrix.update(unselOpts, selOpts);\n needsBaseUpdate = false;\n }\n } else {\n stash.xpx = stash.ypx = null;\n }\n if (needsBaseUpdate) {\n var opts = Lib.extendFlat({}, matrixOpts, viewOpts);\n scene.matrix.update(opts, null);\n }\n }\n }\n });\n\n // src/traces/splom/helpers.js\n var require_helpers13 = __commonJS({\n \"src/traces/splom/helpers.js\"(exports) {\n \"use strict\";\n exports.getDimIndex = function getDimIndex(trace, ax) {\n var axId = ax._id;\n var axLetter = axId.charAt(0);\n var ind = { x: 0, y: 1 }[axLetter];\n var visibleDims = trace._visibleDims;\n for (var k = 0; k < visibleDims.length; k++) {\n var i = visibleDims[k];\n if (trace._diag[i][ind] === axId) return k;\n }\n return false;\n };\n }\n });\n\n // src/traces/splom/hover.js\n var require_hover4 = __commonJS({\n \"src/traces/splom/hover.js\"(exports, module) {\n \"use strict\";\n var helpers = require_helpers13();\n var calcHover = require_hover3().calcHover;\n var getFromId = require_axes().getFromId;\n var extendFlat = require_extend().extendFlat;\n function hoverPoints(pointData, xval, yval, hovermode, opts) {\n if (!opts) opts = {};\n var hovermodeHasX = (hovermode || \"\").charAt(0) === \"x\";\n var hovermodeHasY = (hovermode || \"\").charAt(0) === \"y\";\n var points = _hoverPoints(pointData, xval, yval);\n if ((hovermodeHasX || hovermodeHasY) && opts.hoversubplots === \"axis\" && points[0]) {\n var subplotsWith = (hovermodeHasX ? pointData.xa : pointData.ya)._subplotsWith;\n var gd = opts.gd;\n var _pointData = extendFlat({}, pointData);\n for (var i = 0; i < subplotsWith.length; i++) {\n var spId = subplotsWith[i];\n if (spId === pointData.xa._id + pointData.ya._id) continue;\n if (hovermodeHasY) {\n _pointData.xa = getFromId(gd, spId, \"x\");\n } else {\n _pointData.ya = getFromId(gd, spId, \"y\");\n }\n var axisHoversubplots = hovermodeHasX || hovermodeHasY;\n var newPoints = _hoverPoints(_pointData, xval, yval, axisHoversubplots);\n points = points.concat(newPoints);\n }\n }\n return points;\n }\n function _hoverPoints(pointData, xval, yval, axisHoversubplots) {\n var cd = pointData.cd;\n var trace = cd[0].trace;\n var scene = pointData.scene;\n var cdata = scene.matrixOptions.cdata;\n var xa = pointData.xa;\n var ya = pointData.ya;\n var xpx = xa.c2p(xval);\n var ypx = ya.c2p(yval);\n var maxDistance = pointData.distance;\n var xi = helpers.getDimIndex(trace, xa);\n var yi = helpers.getDimIndex(trace, ya);\n if (xi === false || yi === false) return [pointData];\n var x = cdata[xi];\n var y = cdata[yi];\n var id, dxy;\n var minDist = maxDistance;\n for (var i = 0; i < x.length; i++) {\n if (axisHoversubplots && i !== pointData.index) continue;\n var ptx = x[i];\n var pty = y[i];\n var dx = xa.c2p(ptx) - xpx;\n var dy = ya.c2p(pty) - ypx;\n var dist = Math.sqrt(dx * dx + dy * dy);\n if (axisHoversubplots || dist < minDist) {\n minDist = dxy = dist;\n id = i;\n }\n }\n pointData.index = id;\n pointData.distance = minDist;\n pointData.dxy = dxy;\n if (id === void 0) return [pointData];\n return [calcHover(pointData, x, y, trace)];\n }\n module.exports = {\n hoverPoints\n };\n }\n });\n\n // src/traces/splom/select.js\n var require_select4 = __commonJS({\n \"src/traces/splom/select.js\"(exports, module) {\n \"use strict\";\n var Lib = require_lib();\n var pushUnique = Lib.pushUnique;\n var subTypes = require_subtypes();\n var helpers = require_helpers13();\n module.exports = function select(searchInfo, selectionTester) {\n var cd = searchInfo.cd;\n var trace = cd[0].trace;\n var stash = cd[0].t;\n var scene = searchInfo.scene;\n var cdata = scene.matrixOptions.cdata;\n var xa = searchInfo.xaxis;\n var ya = searchInfo.yaxis;\n var selection = [];\n if (!scene) return selection;\n var hasOnlyLines = !subTypes.hasMarkers(trace) && !subTypes.hasText(trace);\n if (trace.visible !== true || hasOnlyLines) return selection;\n var xi = helpers.getDimIndex(trace, xa);\n var yi = helpers.getDimIndex(trace, ya);\n if (xi === false || yi === false) return selection;\n var xpx = stash.xpx[xi];\n var ypx = stash.ypx[yi];\n var x = cdata[xi];\n var y = cdata[yi];\n var els = (searchInfo.scene.selectBatch || []).slice();\n var unels = [];\n if (selectionTester !== false && !selectionTester.degenerate) {\n for (var i = 0; i < x.length; i++) {\n if (selectionTester.contains([xpx[i], ypx[i]], null, i, searchInfo)) {\n selection.push({\n pointNumber: i,\n x: x[i],\n y: y[i]\n });\n pushUnique(els, i);\n } else if (els.indexOf(i) !== -1) {\n pushUnique(els, i);\n } else {\n unels.push(i);\n }\n }\n }\n var matrixOpts = scene.matrixOptions;\n if (!els.length && !unels.length) {\n scene.matrix.update(matrixOpts, null);\n } else if (!scene.selectBatch.length && !scene.unselectBatch.length) {\n scene.matrix.update(\n scene.unselectedOptions,\n Lib.extendFlat({}, matrixOpts, scene.selectedOptions, scene.viewOpts)\n );\n }\n scene.selectBatch = els;\n scene.unselectBatch = unels;\n return selection;\n };\n }\n });\n\n // src/traces/splom/edit_style.js\n var require_edit_style2 = __commonJS({\n \"src/traces/splom/edit_style.js\"(exports, module) {\n \"use strict\";\n var Lib = require_lib();\n var calcColorscale = require_colorscale_calc();\n var convertMarkerStyle = require_convert2().markerStyle;\n module.exports = function editStyle(gd, cd0) {\n var trace = cd0.trace;\n var scene = gd._fullLayout._splomScenes[trace.uid];\n if (scene) {\n calcColorscale(gd, trace);\n Lib.extendFlat(scene.matrixOptions, convertMarkerStyle(gd, trace));\n var opts = Lib.extendFlat({}, scene.matrixOptions, scene.viewOpts);\n scene.matrix.update(opts, null);\n }\n };\n }\n });\n\n // src/traces/splom/base_index.js\n var require_base_index2 = __commonJS({\n \"src/traces/splom/base_index.js\"(exports, module) {\n \"use strict\";\n var Registry = require_registry();\n var Grid = require_grid();\n module.exports = {\n moduleType: \"trace\",\n name: \"splom\",\n categories: [\"gl\", \"regl\", \"cartesian\", \"symbols\", \"showLegend\", \"scatter-like\"],\n attributes: require_attributes24(),\n supplyDefaults: require_defaults20(),\n colorbar: require_marker_colorbar(),\n calc: require_calc6(),\n plot: require_plot4(),\n hoverPoints: require_hover4().hoverPoints,\n selectPoints: require_select4(),\n editStyle: require_edit_style2(),\n meta: {}\n };\n Registry.register(Grid);\n }\n });\n\n // src/traces/splom/base_plot.js\n var require_base_plot = __commonJS({\n \"src/traces/splom/base_plot.js\"(exports, module) {\n \"use strict\";\n var createLine = require_regl_line2d();\n var Registry = require_registry();\n var prepareRegl = require_prepare_regl();\n var getModuleCalcData = require_get_data().getModuleCalcData;\n var Cartesian = require_cartesian();\n var getFromId = require_axis_ids().getFromId;\n var shouldShowZeroLine = require_axes().shouldShowZeroLine;\n var SPLOM = \"splom\";\n var reglPrecompiled = {};\n function plot(gd) {\n var fullLayout = gd._fullLayout;\n var _module = Registry.getModule(SPLOM);\n var splomCalcData = getModuleCalcData(gd.calcdata, _module)[0];\n var success = prepareRegl(gd, [\"ANGLE_instanced_arrays\", \"OES_element_index_uint\"], reglPrecompiled);\n if (!success) return;\n if (fullLayout._hasOnlyLargeSploms) {\n updateGrid(gd);\n }\n _module.plot(gd, {}, splomCalcData);\n }\n function drag(gd) {\n var cd = gd.calcdata;\n var fullLayout = gd._fullLayout;\n if (fullLayout._hasOnlyLargeSploms) {\n updateGrid(gd);\n }\n for (var i = 0; i < cd.length; i++) {\n var cd0 = cd[i][0];\n var trace = cd0.trace;\n var scene = fullLayout._splomScenes[trace.uid];\n if (trace.type === \"splom\" && scene && scene.matrix) {\n dragOne(gd, trace, scene);\n }\n }\n }\n function dragOne(gd, trace, scene) {\n var visibleLength = scene.matrixOptions.data.length;\n var visibleDims = trace._visibleDims;\n var ranges = scene.viewOpts.ranges = new Array(visibleLength);\n for (var k = 0; k < visibleDims.length; k++) {\n var i = visibleDims[k];\n var rng = ranges[k] = new Array(4);\n var xa = getFromId(gd, trace._diag[i][0]);\n if (xa) {\n rng[0] = xa.r2l(xa.range[0]);\n rng[2] = xa.r2l(xa.range[1]);\n }\n var ya = getFromId(gd, trace._diag[i][1]);\n if (ya) {\n rng[1] = ya.r2l(ya.range[0]);\n rng[3] = ya.r2l(ya.range[1]);\n }\n }\n if (scene.selectBatch.length || scene.unselectBatch.length) {\n scene.matrix.update({ ranges }, { ranges });\n } else {\n scene.matrix.update({ ranges });\n }\n }\n function updateGrid(gd) {\n var fullLayout = gd._fullLayout;\n var regl = fullLayout._glcanvas.data()[0].regl;\n var splomGrid = fullLayout._splomGrid;\n if (!splomGrid) {\n splomGrid = fullLayout._splomGrid = createLine(regl);\n }\n splomGrid.update(makeGridData(gd));\n }\n function makeGridData(gd) {\n var plotGlPixelRatio = gd._context.plotGlPixelRatio;\n var fullLayout = gd._fullLayout;\n var gs = fullLayout._size;\n var fullView = [\n 0,\n 0,\n fullLayout.width * plotGlPixelRatio,\n fullLayout.height * plotGlPixelRatio\n ];\n var lookup = {};\n var k;\n function push(prefix, ax, x0, x1, y0, y1) {\n x0 *= plotGlPixelRatio;\n x1 *= plotGlPixelRatio;\n y0 *= plotGlPixelRatio;\n y1 *= plotGlPixelRatio;\n var lcolor = ax[prefix + \"color\"];\n var lwidth = ax[prefix + \"width\"];\n var key = String(lcolor + lwidth);\n if (key in lookup) {\n lookup[key].data.push(NaN, NaN, x0, x1, y0, y1);\n } else {\n lookup[key] = {\n data: [x0, x1, y0, y1],\n join: \"rect\",\n thickness: lwidth * plotGlPixelRatio,\n color: lcolor,\n viewport: fullView,\n range: fullView,\n overlay: false\n };\n }\n }\n for (k in fullLayout._splomSubplots) {\n var sp = fullLayout._plots[k];\n var xa = sp.xaxis;\n var ya = sp.yaxis;\n var xVals = xa._gridVals;\n var yVals = ya._gridVals;\n var xOffset = xa._offset;\n var xLength = xa._length;\n var yLength = ya._length;\n var yOffset = gs.b + ya.domain[0] * gs.h;\n var ym = -ya._m;\n var yb = -ym * ya.r2l(ya.range[0], ya.calendar);\n var x, y;\n if (xa.showgrid) {\n for (k = 0; k < xVals.length; k++) {\n x = xOffset + xa.l2p(xVals[k].x);\n push(\"grid\", xa, x, yOffset, x, yOffset + yLength);\n }\n }\n if (ya.showgrid) {\n for (k = 0; k < yVals.length; k++) {\n y = yOffset + yb + ym * yVals[k].x;\n push(\"grid\", ya, xOffset, y, xOffset + xLength, y);\n }\n }\n if (shouldShowZeroLine(gd, xa, ya)) {\n x = xOffset + xa.l2p(0);\n push(\"zeroline\", xa, x, yOffset, x, yOffset + yLength);\n }\n if (shouldShowZeroLine(gd, ya, xa)) {\n y = yOffset + yb + 0;\n push(\"zeroline\", ya, xOffset, y, xOffset + xLength, y);\n }\n }\n var gridBatches = [];\n for (k in lookup) {\n gridBatches.push(lookup[k]);\n }\n return gridBatches;\n }\n function clean(newFullData, newFullLayout, oldFullData, oldFullLayout) {\n var lookup = {};\n var i;\n if (oldFullLayout._splomScenes) {\n for (i = 0; i < newFullData.length; i++) {\n var newTrace = newFullData[i];\n if (newTrace.type === \"splom\") {\n lookup[newTrace.uid] = 1;\n }\n }\n for (i = 0; i < oldFullData.length; i++) {\n var oldTrace = oldFullData[i];\n if (!lookup[oldTrace.uid]) {\n var scene = oldFullLayout._splomScenes[oldTrace.uid];\n if (scene && scene.destroy) scene.destroy();\n oldFullLayout._splomScenes[oldTrace.uid] = null;\n delete oldFullLayout._splomScenes[oldTrace.uid];\n }\n }\n }\n if (Object.keys(oldFullLayout._splomScenes || {}).length === 0) {\n delete oldFullLayout._splomScenes;\n }\n if (oldFullLayout._splomGrid && (!newFullLayout._hasOnlyLargeSploms && oldFullLayout._hasOnlyLargeSploms)) {\n oldFullLayout._splomGrid.destroy();\n oldFullLayout._splomGrid = null;\n delete oldFullLayout._splomGrid;\n }\n Cartesian.clean(newFullData, newFullLayout, oldFullData, oldFullLayout);\n }\n module.exports = {\n name: SPLOM,\n attr: Cartesian.attr,\n attrRegex: Cartesian.attrRegex,\n layoutAttributes: Cartesian.layoutAttributes,\n supplyLayoutDefaults: Cartesian.supplyLayoutDefaults,\n drawFramework: Cartesian.drawFramework,\n plot,\n drag,\n updateGrid,\n clean,\n updateFx: Cartesian.updateFx,\n toSVG: Cartesian.toSVG,\n reglPrecompiled\n };\n }\n });\n\n // src/traces/splom/index.js\n var require_splom = __commonJS({\n \"src/traces/splom/index.js\"(exports, module) {\n \"use strict\";\n var index = require_base_index2();\n index.basePlotModule = require_base_plot(), module.exports = index;\n }\n });\n\n // lib/splom.js\n var require_splom2 = __commonJS({\n \"lib/splom.js\"(exports, module) {\n \"use strict\";\n module.exports = require_splom();\n }\n });\n\n // src/traces/parcoords/attributes.js\n var require_attributes25 = __commonJS({\n \"src/traces/parcoords/attributes.js\"(exports, module) {\n \"use strict\";\n var colorScaleAttrs = require_attributes8();\n var axesAttrs = require_layout_attributes4();\n var fontAttrs = require_font_attributes();\n var domainAttrs = require_domain().attributes;\n var extendFlat = require_extend().extendFlat;\n var templatedArray = require_plot_template().templatedArray;\n module.exports = {\n domain: domainAttrs({ name: \"parcoords\", trace: true, editType: \"plot\" }),\n labelangle: {\n valType: \"angle\",\n dflt: 0,\n editType: \"plot\"\n },\n labelside: {\n valType: \"enumerated\",\n values: [\"top\", \"bottom\"],\n dflt: \"top\",\n editType: \"plot\"\n },\n labelfont: fontAttrs({\n editType: \"plot\"\n }),\n tickfont: fontAttrs({\n autoShadowDflt: true,\n editType: \"plot\"\n }),\n rangefont: fontAttrs({\n editType: \"plot\"\n }),\n dimensions: templatedArray(\"dimension\", {\n label: {\n valType: \"string\",\n editType: \"plot\"\n },\n // TODO: better way to determine ordinal vs continuous axes,\n // so users can use tickvals/ticktext with a continuous axis.\n tickvals: extendFlat({}, axesAttrs.tickvals, {\n editType: \"plot\"\n }),\n ticktext: extendFlat({}, axesAttrs.ticktext, {\n editType: \"plot\"\n }),\n tickformat: extendFlat({}, axesAttrs.tickformat, {\n editType: \"plot\"\n }),\n visible: {\n valType: \"boolean\",\n dflt: true,\n editType: \"plot\"\n },\n range: {\n valType: \"info_array\",\n items: [\n { valType: \"number\", editType: \"plot\" },\n { valType: \"number\", editType: \"plot\" }\n ],\n editType: \"plot\"\n },\n constraintrange: {\n valType: \"info_array\",\n freeLength: true,\n dimensions: \"1-2\",\n items: [\n { valType: \"any\", editType: \"plot\" },\n { valType: \"any\", editType: \"plot\" }\n ],\n editType: \"plot\"\n },\n multiselect: {\n valType: \"boolean\",\n dflt: true,\n editType: \"plot\"\n },\n values: {\n valType: \"data_array\",\n editType: \"calc\"\n },\n editType: \"calc\"\n }),\n line: extendFlat(\n { editType: \"calc\" },\n colorScaleAttrs(\"line\", {\n // the default autocolorscale isn't quite usable for parcoords due to context ambiguity around 0 (grey, off-white)\n // autocolorscale therefore defaults to false too, to avoid being overridden by the blue-white-red autocolor palette\n colorscaleDflt: \"Viridis\",\n autoColorDflt: false,\n editTypeOverride: \"calc\"\n })\n ),\n unselected: {\n line: {\n color: {\n valType: \"color\",\n dflt: \"#7f7f7f\",\n editType: \"plot\"\n },\n opacity: {\n valType: \"number\",\n min: 0,\n max: 1,\n dflt: \"auto\",\n editType: \"plot\"\n },\n editType: \"plot\"\n },\n editType: \"plot\"\n }\n };\n }\n });\n\n // src/traces/parcoords/constants.js\n var require_constants15 = __commonJS({\n \"src/traces/parcoords/constants.js\"(exports, module) {\n \"use strict\";\n module.exports = {\n maxDimensionCount: 60,\n // this cannot be increased without WebGL code refactoring\n overdrag: 45,\n verticalPadding: 2,\n // otherwise, horizontal lines on top or bottom are of lower width\n tickDistance: 50,\n canvasPixelRatio: 1,\n blockLineCount: 5e3,\n layers: [\"contextLineLayer\", \"focusLineLayer\", \"pickLineLayer\"],\n axisTitleOffset: 28,\n axisExtentOffset: 10,\n bar: {\n width: 4,\n // Visible width of the filter bar\n captureWidth: 10,\n // Mouse-sensitive width for interaction (Fitts law)\n fillColor: \"magenta\",\n // Color of the filter bar fill\n fillOpacity: 1,\n // Filter bar fill opacity\n snapDuration: 150,\n // tween duration in ms for brush snap for ordinal axes\n snapRatio: 0.25,\n // ratio of bar extension relative to the distance between two adjacent ordinal values\n snapClose: 0.01,\n // fraction of inter-value distance to snap to the closer one, even if you're not over it\n strokeOpacity: 1,\n // Filter bar side stroke opacity\n strokeWidth: 1,\n // Filter bar side stroke width in pixels\n handleHeight: 8,\n // Height of the filter bar vertical resize areas on top and bottom\n handleOpacity: 1,\n // Opacity of the filter bar vertical resize areas on top and bottom\n handleOverlap: 0\n // A larger than 0 value causes overlaps with the filter bar, represented as pixels\n },\n cn: {\n axisExtentText: \"axis-extent-text\",\n parcoordsLineLayers: \"parcoords-line-layers\",\n parcoordsLineLayer: \"parcoords-lines\",\n parcoords: \"parcoords\",\n parcoordsControlView: \"parcoords-control-view\",\n yAxis: \"y-axis\",\n axisOverlays: \"axis-overlays\",\n axis: \"axis\",\n axisHeading: \"axis-heading\",\n axisTitle: \"axis-title\",\n axisExtent: \"axis-extent\",\n axisExtentTop: \"axis-extent-top\",\n axisExtentTopText: \"axis-extent-top-text\",\n axisExtentBottom: \"axis-extent-bottom\",\n axisExtentBottomText: \"axis-extent-bottom-text\",\n axisBrush: \"axis-brush\"\n },\n id: {\n filterBarPattern: \"filter-bar-pattern\"\n }\n };\n }\n });\n\n // src/lib/gup.js\n var require_gup = __commonJS({\n \"src/lib/gup.js\"(exports, module) {\n \"use strict\";\n var identity = require_identity2();\n function wrap(d) {\n return [d];\n }\n module.exports = {\n // The D3 data binding concept and the General Update Pattern promotes the idea of\n // traversing into the scenegraph by using the `.data(fun, keyFun)` call.\n // The `fun` is most often a `repeat`, ie. the elements beneath a `` element need\n // access to the same data, or a `descend`, which fans a scenegraph node into a bunch of\n // of elements, e.g. points, lines, rows, requiring an array as input.\n // The role of the `keyFun` is to identify what elements are being entered/exited/updated,\n // otherwise D3 reverts to using a plain index which would screw up `transition`s.\n keyFun: function(d) {\n return d.key;\n },\n repeat: wrap,\n descend: identity,\n // Plotly.js uses a convention of storing the actual contents of the `calcData` as the\n // element zero of a container array. These helpers are just used for clarity as a\n // newcomer to the codebase may not know what the `[0]` is, and whether there can be further\n // elements (not atm).\n wrap,\n unwrap: function(d) {\n return d[0];\n }\n };\n }\n });\n\n // src/traces/parcoords/axisbrush.js\n var require_axisbrush = __commonJS({\n \"src/traces/parcoords/axisbrush.js\"(exports, module) {\n \"use strict\";\n var c = require_constants15();\n var d3 = require_d3();\n var keyFun = require_gup().keyFun;\n var repeat = require_gup().repeat;\n var sortAsc = require_lib().sorterAsc;\n var strTranslate = require_lib().strTranslate;\n var snapRatio = c.bar.snapRatio;\n function snapOvershoot(v, vAdjacent) {\n return v * (1 - snapRatio) + vAdjacent * snapRatio;\n }\n var snapClose = c.bar.snapClose;\n function closeToCovering(v, vAdjacent) {\n return v * (1 - snapClose) + vAdjacent * snapClose;\n }\n function ordinalScaleSnap(isHigh, a, v, existingRanges) {\n if (overlappingExisting(v, existingRanges)) return v;\n var dir = isHigh ? -1 : 1;\n var first = 0;\n var last = a.length - 1;\n if (dir < 0) {\n var tmp = first;\n first = last;\n last = tmp;\n }\n var aHere = a[first];\n var aPrev = aHere;\n for (var i = first; dir * i < dir * last; i += dir) {\n var nextI = i + dir;\n var aNext = a[nextI];\n if (dir * v < dir * closeToCovering(aHere, aNext)) return snapOvershoot(aHere, aPrev);\n if (dir * v < dir * aNext || nextI === last) return snapOvershoot(aNext, aHere);\n aPrev = aHere;\n aHere = aNext;\n }\n }\n function overlappingExisting(v, existingRanges) {\n for (var i = 0; i < existingRanges.length; i++) {\n if (v >= existingRanges[i][0] && v <= existingRanges[i][1]) return true;\n }\n return false;\n }\n function barHorizontalSetup(selection) {\n selection.attr(\"x\", -c.bar.captureWidth / 2).attr(\"width\", c.bar.captureWidth);\n }\n function backgroundBarHorizontalSetup(selection) {\n selection.attr(\"visibility\", \"visible\").style(\"visibility\", \"visible\").attr(\"fill\", \"yellow\").attr(\"opacity\", 0);\n }\n function setHighlight(d) {\n if (!d.brush.filterSpecified) {\n return \"0,\" + d.height;\n }\n var pixelRanges = unitToPx(d.brush.filter.getConsolidated(), d.height);\n var dashArray = [0];\n var p, sectionHeight, iNext;\n var currentGap = pixelRanges.length ? pixelRanges[0][0] : null;\n for (var i = 0; i < pixelRanges.length; i++) {\n p = pixelRanges[i];\n sectionHeight = p[1] - p[0];\n dashArray.push(currentGap);\n dashArray.push(sectionHeight);\n iNext = i + 1;\n if (iNext < pixelRanges.length) {\n currentGap = pixelRanges[iNext][0] - p[1];\n }\n }\n dashArray.push(d.height);\n return dashArray;\n }\n function unitToPx(unitRanges, height) {\n return unitRanges.map(function(pr) {\n return pr.map(function(v) {\n return Math.max(0, v * height);\n }).sort(sortAsc);\n });\n }\n function getRegion(fPix, y) {\n var pad = c.bar.handleHeight;\n if (y > fPix[1] + pad || y < fPix[0] - pad) return;\n if (y >= 0.9 * fPix[1] + 0.1 * fPix[0]) return \"n\";\n if (y <= 0.9 * fPix[0] + 0.1 * fPix[1]) return \"s\";\n return \"ns\";\n }\n function clearCursor() {\n d3.select(document.body).style(\"cursor\", null);\n }\n function styleHighlight(selection) {\n selection.attr(\"stroke-dasharray\", setHighlight);\n }\n function renderHighlight(root, tweenCallback) {\n var bar = d3.select(root).selectAll(\".highlight, .highlight-shadow\");\n var barToStyle = tweenCallback ? bar.transition().duration(c.bar.snapDuration).each(\"end\", tweenCallback) : bar;\n styleHighlight(barToStyle);\n }\n function getInterval(d, y) {\n var b = d.brush;\n var active = b.filterSpecified;\n var closestInterval = NaN;\n var out = {};\n var i;\n if (active) {\n var height = d.height;\n var intervals = b.filter.getConsolidated();\n var pixIntervals = unitToPx(intervals, height);\n var hoveredInterval = NaN;\n var previousInterval = NaN;\n var nextInterval = NaN;\n for (i = 0; i <= pixIntervals.length; i++) {\n var p = pixIntervals[i];\n if (p && p[0] <= y && y <= p[1]) {\n hoveredInterval = i;\n break;\n } else {\n previousInterval = i ? i - 1 : NaN;\n if (p && p[0] > y) {\n nextInterval = i;\n break;\n }\n }\n }\n closestInterval = hoveredInterval;\n if (isNaN(closestInterval)) {\n if (isNaN(previousInterval) || isNaN(nextInterval)) {\n closestInterval = isNaN(previousInterval) ? nextInterval : previousInterval;\n } else {\n closestInterval = y - pixIntervals[previousInterval][1] < pixIntervals[nextInterval][0] - y ? previousInterval : nextInterval;\n }\n }\n if (!isNaN(closestInterval)) {\n var fPix = pixIntervals[closestInterval];\n var region = getRegion(fPix, y);\n if (region) {\n out.interval = intervals[closestInterval];\n out.intervalPix = fPix;\n out.region = region;\n }\n }\n }\n if (d.ordinal && !out.region) {\n var a = d.unitTickvals;\n var unitLocation = d.unitToPaddedPx.invert(y);\n for (i = 0; i < a.length; i++) {\n var rangei = [\n a[Math.max(i - 1, 0)] * 0.25 + a[i] * 0.75,\n a[Math.min(i + 1, a.length - 1)] * 0.25 + a[i] * 0.75\n ];\n if (unitLocation >= rangei[0] && unitLocation <= rangei[1]) {\n out.clickableOrdinalRange = rangei;\n break;\n }\n }\n }\n return out;\n }\n function dragstart(lThis, d) {\n d3.event.sourceEvent.stopPropagation();\n var y = d.height - d3.mouse(lThis)[1] - 2 * c.verticalPadding;\n var unitLocation = d.unitToPaddedPx.invert(y);\n var b = d.brush;\n var interval = getInterval(d, y);\n var unitRange = interval.interval;\n var s = b.svgBrush;\n s.wasDragged = false;\n s.grabbingBar = interval.region === \"ns\";\n if (s.grabbingBar) {\n var pixelRange = unitRange.map(d.unitToPaddedPx);\n s.grabPoint = y - pixelRange[0] - c.verticalPadding;\n s.barLength = pixelRange[1] - pixelRange[0];\n }\n s.clickableOrdinalRange = interval.clickableOrdinalRange;\n s.stayingIntervals = d.multiselect && b.filterSpecified ? b.filter.getConsolidated() : [];\n if (unitRange) {\n s.stayingIntervals = s.stayingIntervals.filter(function(int2) {\n return int2[0] !== unitRange[0] && int2[1] !== unitRange[1];\n });\n }\n s.startExtent = interval.region ? unitRange[interval.region === \"s\" ? 1 : 0] : unitLocation;\n d.parent.inBrushDrag = true;\n s.brushStartCallback();\n }\n function drag(lThis, d) {\n d3.event.sourceEvent.stopPropagation();\n var y = d.height - d3.mouse(lThis)[1] - 2 * c.verticalPadding;\n var s = d.brush.svgBrush;\n s.wasDragged = true;\n s._dragging = true;\n if (s.grabbingBar) {\n s.newExtent = [y - s.grabPoint, y + s.barLength - s.grabPoint].map(d.unitToPaddedPx.invert);\n } else {\n s.newExtent = [s.startExtent, d.unitToPaddedPx.invert(y)].sort(sortAsc);\n }\n d.brush.filterSpecified = true;\n s.extent = s.stayingIntervals.concat([s.newExtent]);\n s.brushCallback(d);\n renderHighlight(lThis.parentNode);\n }\n function dragend(lThis, d) {\n var brush = d.brush;\n var filter = brush.filter;\n var s = brush.svgBrush;\n if (!s._dragging) {\n mousemove(lThis, d);\n drag(lThis, d);\n d.brush.svgBrush.wasDragged = false;\n }\n s._dragging = false;\n var e = d3.event;\n e.sourceEvent.stopPropagation();\n var grabbingBar = s.grabbingBar;\n s.grabbingBar = false;\n s.grabLocation = void 0;\n d.parent.inBrushDrag = false;\n clearCursor();\n if (!s.wasDragged) {\n s.wasDragged = void 0;\n if (s.clickableOrdinalRange) {\n if (brush.filterSpecified && d.multiselect) {\n s.extent.push(s.clickableOrdinalRange);\n } else {\n s.extent = [s.clickableOrdinalRange];\n brush.filterSpecified = true;\n }\n } else if (grabbingBar) {\n s.extent = s.stayingIntervals;\n if (s.extent.length === 0) {\n brushClear(brush);\n }\n } else {\n brushClear(brush);\n }\n s.brushCallback(d);\n renderHighlight(lThis.parentNode);\n s.brushEndCallback(brush.filterSpecified ? filter.getConsolidated() : []);\n return;\n }\n var mergeIntervals = function() {\n filter.set(filter.getConsolidated());\n };\n if (d.ordinal) {\n var a = d.unitTickvals;\n if (a[a.length - 1] < a[0]) a.reverse();\n s.newExtent = [\n ordinalScaleSnap(0, a, s.newExtent[0], s.stayingIntervals),\n ordinalScaleSnap(1, a, s.newExtent[1], s.stayingIntervals)\n ];\n var hasNewExtent = s.newExtent[1] > s.newExtent[0];\n s.extent = s.stayingIntervals.concat(hasNewExtent ? [s.newExtent] : []);\n if (!s.extent.length) {\n brushClear(brush);\n }\n s.brushCallback(d);\n if (hasNewExtent) {\n renderHighlight(lThis.parentNode, mergeIntervals);\n } else {\n mergeIntervals();\n renderHighlight(lThis.parentNode);\n }\n } else {\n mergeIntervals();\n }\n s.brushEndCallback(brush.filterSpecified ? filter.getConsolidated() : []);\n }\n function mousemove(lThis, d) {\n var y = d.height - d3.mouse(lThis)[1] - 2 * c.verticalPadding;\n var interval = getInterval(d, y);\n var cursor = \"crosshair\";\n if (interval.clickableOrdinalRange) cursor = \"pointer\";\n else if (interval.region) cursor = interval.region + \"-resize\";\n d3.select(document.body).style(\"cursor\", cursor);\n }\n function attachDragBehavior(selection) {\n selection.on(\"mousemove\", function(d) {\n d3.event.preventDefault();\n if (!d.parent.inBrushDrag) mousemove(this, d);\n }).on(\"mouseleave\", function(d) {\n if (!d.parent.inBrushDrag) clearCursor();\n }).call(\n d3.behavior.drag().on(\"dragstart\", function(d) {\n dragstart(this, d);\n }).on(\"drag\", function(d) {\n drag(this, d);\n }).on(\"dragend\", function(d) {\n dragend(this, d);\n })\n );\n }\n function startAsc(a, b) {\n return a[0] - b[0];\n }\n function renderAxisBrush(axisBrush, paperColor, gd) {\n var isStatic = gd._context.staticPlot;\n var background = axisBrush.selectAll(\".background\").data(repeat);\n background.enter().append(\"rect\").classed(\"background\", true).call(barHorizontalSetup).call(backgroundBarHorizontalSetup).style(\"pointer-events\", isStatic ? \"none\" : \"auto\").attr(\"transform\", strTranslate(0, c.verticalPadding));\n background.call(attachDragBehavior).attr(\"height\", function(d) {\n return d.height - c.verticalPadding;\n });\n var highlightShadow = axisBrush.selectAll(\".highlight-shadow\").data(repeat);\n highlightShadow.enter().append(\"line\").classed(\"highlight-shadow\", true).attr(\"x\", -c.bar.width / 2).attr(\"stroke-width\", c.bar.width + c.bar.strokeWidth).attr(\"stroke\", paperColor).attr(\"opacity\", c.bar.strokeOpacity).attr(\"stroke-linecap\", \"butt\");\n highlightShadow.attr(\"y1\", function(d) {\n return d.height;\n }).call(styleHighlight);\n var highlight = axisBrush.selectAll(\".highlight\").data(repeat);\n highlight.enter().append(\"line\").classed(\"highlight\", true).attr(\"x\", -c.bar.width / 2).attr(\"stroke-width\", c.bar.width - c.bar.strokeWidth).attr(\"stroke\", c.bar.fillColor).attr(\"opacity\", c.bar.fillOpacity).attr(\"stroke-linecap\", \"butt\");\n highlight.attr(\"y1\", function(d) {\n return d.height;\n }).call(styleHighlight);\n }\n function ensureAxisBrush(axisOverlays, paperColor, gd) {\n var axisBrush = axisOverlays.selectAll(\".\" + c.cn.axisBrush).data(repeat, keyFun);\n axisBrush.enter().append(\"g\").classed(c.cn.axisBrush, true);\n renderAxisBrush(axisBrush, paperColor, gd);\n }\n function getBrushExtent(brush) {\n return brush.svgBrush.extent.map(function(e) {\n return e.slice();\n });\n }\n function brushClear(brush) {\n brush.filterSpecified = false;\n brush.svgBrush.extent = [[-Infinity, Infinity]];\n }\n function axisBrushMoved(callback) {\n return function axisBrushMoved2(dimension) {\n var brush = dimension.brush;\n var extent = getBrushExtent(brush);\n var newExtent = extent.slice();\n brush.filter.set(newExtent);\n callback();\n };\n }\n function dedupeRealRanges(intervals) {\n var queue = intervals.slice();\n var result = [];\n var currentInterval;\n var current = queue.shift();\n while (current) {\n currentInterval = current.slice();\n while ((current = queue.shift()) && current[0] <= /* right-open interval would need `<` */\n currentInterval[1]) {\n currentInterval[1] = Math.max(currentInterval[1], current[1]);\n }\n result.push(currentInterval);\n }\n if (result.length === 1 && result[0][0] > result[0][1]) {\n result = [];\n }\n return result;\n }\n function makeFilter() {\n var filter = [];\n var consolidated;\n var bounds;\n return {\n set: function(a) {\n filter = a.map(function(d) {\n return d.slice().sort(sortAsc);\n }).sort(startAsc);\n if (filter.length === 1 && filter[0][0] === -Infinity && filter[0][1] === Infinity) {\n filter = [[0, -1]];\n }\n consolidated = dedupeRealRanges(filter);\n bounds = filter.reduce(function(p, n) {\n return [Math.min(p[0], n[0]), Math.max(p[1], n[1])];\n }, [Infinity, -Infinity]);\n },\n get: function() {\n return filter.slice();\n },\n getConsolidated: function() {\n return consolidated;\n },\n getBounds: function() {\n return bounds;\n }\n };\n }\n function makeBrush(state, rangeSpecified, initialRange, brushStartCallback, brushCallback, brushEndCallback) {\n var filter = makeFilter();\n filter.set(initialRange);\n return {\n filter,\n filterSpecified: rangeSpecified,\n // there's a difference between not filtering and filtering a non-proper subset\n svgBrush: {\n extent: [],\n // this is where the svgBrush writes contents into\n brushStartCallback,\n brushCallback: axisBrushMoved(brushCallback),\n brushEndCallback\n }\n };\n }\n function cleanRanges(ranges, dimension) {\n if (Array.isArray(ranges[0])) {\n ranges = ranges.map(function(ri) {\n return ri.sort(sortAsc);\n });\n if (!dimension.multiselect) ranges = [ranges[0]];\n else ranges = dedupeRealRanges(ranges.sort(startAsc));\n } else ranges = [ranges.sort(sortAsc)];\n if (dimension.tickvals) {\n var sortedTickVals = dimension.tickvals.slice().sort(sortAsc);\n ranges = ranges.map(function(ri) {\n var rSnapped = [\n ordinalScaleSnap(0, sortedTickVals, ri[0], []),\n ordinalScaleSnap(1, sortedTickVals, ri[1], [])\n ];\n if (rSnapped[1] > rSnapped[0]) return rSnapped;\n }).filter(function(ri) {\n return ri;\n });\n if (!ranges.length) return;\n }\n return ranges.length > 1 ? ranges : ranges[0];\n }\n module.exports = {\n makeBrush,\n ensureAxisBrush,\n cleanRanges\n };\n }\n });\n\n // src/traces/parcoords/defaults.js\n var require_defaults21 = __commonJS({\n \"src/traces/parcoords/defaults.js\"(exports, module) {\n \"use strict\";\n var Lib = require_lib();\n var hasColorscale = require_helpers().hasColorscale;\n var colorscaleDefaults = require_defaults2();\n var handleDomainDefaults = require_domain().defaults;\n var handleArrayContainerDefaults = require_array_container_defaults();\n var Axes = require_axes();\n var attributes = require_attributes25();\n var axisBrush = require_axisbrush();\n var maxDimensionCount = require_constants15().maxDimensionCount;\n var mergeLength = require_merge_length();\n function handleLineDefaults(traceIn, traceOut, defaultColor, layout, coerce) {\n var lineColor = coerce(\"line.color\", defaultColor);\n if (hasColorscale(traceIn, \"line\") && Lib.isArrayOrTypedArray(lineColor)) {\n if (lineColor.length) {\n coerce(\"line.colorscale\");\n colorscaleDefaults(traceIn, traceOut, layout, coerce, { prefix: \"line.\", cLetter: \"c\" });\n return lineColor.length;\n } else {\n traceOut.line.color = defaultColor;\n }\n }\n return Infinity;\n }\n function dimensionDefaults(dimensionIn, dimensionOut, parentOut, opts) {\n function coerce(attr, dflt) {\n return Lib.coerce(dimensionIn, dimensionOut, attributes.dimensions, attr, dflt);\n }\n var values = coerce(\"values\");\n var visible = coerce(\"visible\");\n if (!(values && values.length)) {\n visible = dimensionOut.visible = false;\n }\n if (visible) {\n coerce(\"label\");\n coerce(\"tickvals\");\n coerce(\"ticktext\");\n coerce(\"tickformat\");\n var range = coerce(\"range\");\n dimensionOut._ax = {\n _id: \"y\",\n type: \"linear\",\n showexponent: \"all\",\n exponentformat: \"B\",\n range\n };\n Axes.setConvert(dimensionOut._ax, opts.layout);\n coerce(\"multiselect\");\n var constraintRange = coerce(\"constraintrange\");\n if (constraintRange) {\n dimensionOut.constraintrange = axisBrush.cleanRanges(constraintRange, dimensionOut);\n }\n }\n }\n module.exports = function supplyDefaults(traceIn, traceOut, defaultColor, layout) {\n function coerce(attr, dflt) {\n return Lib.coerce(traceIn, traceOut, attributes, attr, dflt);\n }\n var dimensionsIn = traceIn.dimensions;\n if (Array.isArray(dimensionsIn) && dimensionsIn.length > maxDimensionCount) {\n Lib.log(\"parcoords traces support up to \" + maxDimensionCount + \" dimensions at the moment\");\n dimensionsIn.splice(maxDimensionCount);\n }\n var dimensions = handleArrayContainerDefaults(traceIn, traceOut, {\n name: \"dimensions\",\n layout,\n handleItemDefaults: dimensionDefaults\n });\n var len = handleLineDefaults(traceIn, traceOut, defaultColor, layout, coerce);\n handleDomainDefaults(traceOut, layout, coerce);\n if (!Array.isArray(dimensions) || !dimensions.length) {\n traceOut.visible = false;\n }\n mergeLength(traceOut, dimensions, \"values\", len);\n var fontDflt = Lib.extendFlat({}, layout.font, {\n size: Math.round(layout.font.size / 1.2)\n });\n Lib.coerceFont(coerce, \"labelfont\", fontDflt);\n Lib.coerceFont(coerce, \"tickfont\", fontDflt, { autoShadowDflt: true });\n Lib.coerceFont(coerce, \"rangefont\", fontDflt);\n coerce(\"labelangle\");\n coerce(\"labelside\");\n coerce(\"unselected.line.color\");\n coerce(\"unselected.line.opacity\");\n };\n }\n });\n\n // src/traces/parcoords/calc.js\n var require_calc7 = __commonJS({\n \"src/traces/parcoords/calc.js\"(exports, module) {\n \"use strict\";\n var isArrayOrTypedArray = require_lib().isArrayOrTypedArray;\n var Colorscale = require_colorscale();\n var wrap = require_gup().wrap;\n module.exports = function calc(gd, trace) {\n var lineColor;\n var cscale;\n if (Colorscale.hasColorscale(trace, \"line\") && isArrayOrTypedArray(trace.line.color)) {\n lineColor = trace.line.color;\n cscale = Colorscale.extractOpts(trace.line).colorscale;\n Colorscale.calc(gd, trace, {\n vals: lineColor,\n containerStr: \"line\",\n cLetter: \"c\"\n });\n } else {\n lineColor = constHalf(trace._length);\n cscale = [[0, trace.line.color], [1, trace.line.color]];\n }\n return wrap({ lineColor, cscale });\n };\n function constHalf(len) {\n var out = new Array(len);\n for (var i = 0; i < len; i++) {\n out[i] = 0.5;\n }\n return out;\n }\n }\n });\n\n // src/traces/parcoords/helpers.js\n var require_helpers14 = __commonJS({\n \"src/traces/parcoords/helpers.js\"(exports) {\n \"use strict\";\n var isTypedArray = require_lib().isTypedArray;\n exports.convertTypedArray = function(a) {\n return isTypedArray(a) ? Array.prototype.slice.call(a) : a;\n };\n exports.isOrdinal = function(dimension) {\n return !!dimension.tickvals;\n };\n exports.isVisible = function(dimension) {\n return dimension.visible || !(\"visible\" in dimension);\n };\n }\n });\n\n // src/traces/parcoords/lines.js\n var require_lines = __commonJS({\n \"src/traces/parcoords/lines.js\"(exports, module) {\n \"use strict\";\n var vertexShaderSource = [\n \"precision highp float;\",\n \"\",\n \"varying vec4 fragColor;\",\n \"\",\n \"attribute vec4 p01_04, p05_08, p09_12, p13_16,\",\n \" p17_20, p21_24, p25_28, p29_32,\",\n \" p33_36, p37_40, p41_44, p45_48,\",\n \" p49_52, p53_56, p57_60, colors;\",\n \"\",\n \"uniform mat4 dim0A, dim1A, dim0B, dim1B, dim0C, dim1C, dim0D, dim1D,\",\n \" loA, hiA, loB, hiB, loC, hiC, loD, hiD;\",\n \"\",\n \"uniform vec2 resolution, viewBoxPos, viewBoxSize;\",\n \"uniform float maskHeight;\",\n \"uniform float drwLayer; // 0: context, 1: focus, 2: pick\",\n \"uniform vec4 contextColor;\",\n \"uniform sampler2D maskTexture, palette;\",\n \"\",\n \"bool isPick = (drwLayer > 1.5);\",\n \"bool isContext = (drwLayer < 0.5);\",\n \"\",\n \"const vec4 ZEROS = vec4(0.0, 0.0, 0.0, 0.0);\",\n \"const vec4 UNITS = vec4(1.0, 1.0, 1.0, 1.0);\",\n \"\",\n \"float val(mat4 p, mat4 v) {\",\n \" return dot(matrixCompMult(p, v) * UNITS, UNITS);\",\n \"}\",\n \"\",\n \"float axisY(float ratio, mat4 A, mat4 B, mat4 C, mat4 D) {\",\n \" float y1 = val(A, dim0A) + val(B, dim0B) + val(C, dim0C) + val(D, dim0D);\",\n \" float y2 = val(A, dim1A) + val(B, dim1B) + val(C, dim1C) + val(D, dim1D);\",\n \" return y1 * (1.0 - ratio) + y2 * ratio;\",\n \"}\",\n \"\",\n \"int iMod(int a, int b) {\",\n \" return a - b * (a / b);\",\n \"}\",\n \"\",\n \"bool fOutside(float p, float lo, float hi) {\",\n \" return (lo < hi) && (lo > p || p > hi);\",\n \"}\",\n \"\",\n \"bool vOutside(vec4 p, vec4 lo, vec4 hi) {\",\n \" return (\",\n \" fOutside(p[0], lo[0], hi[0]) ||\",\n \" fOutside(p[1], lo[1], hi[1]) ||\",\n \" fOutside(p[2], lo[2], hi[2]) ||\",\n \" fOutside(p[3], lo[3], hi[3])\",\n \" );\",\n \"}\",\n \"\",\n \"bool mOutside(mat4 p, mat4 lo, mat4 hi) {\",\n \" return (\",\n \" vOutside(p[0], lo[0], hi[0]) ||\",\n \" vOutside(p[1], lo[1], hi[1]) ||\",\n \" vOutside(p[2], lo[2], hi[2]) ||\",\n \" vOutside(p[3], lo[3], hi[3])\",\n \" );\",\n \"}\",\n \"\",\n \"bool outsideBoundingBox(mat4 A, mat4 B, mat4 C, mat4 D) {\",\n \" return mOutside(A, loA, hiA) ||\",\n \" mOutside(B, loB, hiB) ||\",\n \" mOutside(C, loC, hiC) ||\",\n \" mOutside(D, loD, hiD);\",\n \"}\",\n \"\",\n \"bool outsideRasterMask(mat4 A, mat4 B, mat4 C, mat4 D) {\",\n \" mat4 pnts[4];\",\n \" pnts[0] = A;\",\n \" pnts[1] = B;\",\n \" pnts[2] = C;\",\n \" pnts[3] = D;\",\n \"\",\n \" for(int i = 0; i < 4; ++i) {\",\n \" for(int j = 0; j < 4; ++j) {\",\n \" for(int k = 0; k < 4; ++k) {\",\n \" if(0 == iMod(\",\n \" int(255.0 * texture2D(maskTexture,\",\n \" vec2(\",\n \" (float(i * 2 + j / 2) + 0.5) / 8.0,\",\n \" (pnts[i][j][k] * (maskHeight - 1.0) + 1.0) / maskHeight\",\n \" ))[3]\",\n \" ) / int(pow(2.0, float(iMod(j * 4 + k, 8)))),\",\n \" 2\",\n \" )) return true;\",\n \" }\",\n \" }\",\n \" }\",\n \" return false;\",\n \"}\",\n \"\",\n \"vec4 position(bool isContext, float v, mat4 A, mat4 B, mat4 C, mat4 D) {\",\n \" float x = 0.5 * sign(v) + 0.5;\",\n \" float y = axisY(x, A, B, C, D);\",\n \" float z = 1.0 - abs(v);\",\n \"\",\n \" z += isContext ? 0.0 : 2.0 * float(\",\n \" outsideBoundingBox(A, B, C, D) ||\",\n \" outsideRasterMask(A, B, C, D)\",\n \" );\",\n \"\",\n \" return vec4(\",\n \" 2.0 * (vec2(x, y) * viewBoxSize + viewBoxPos) / resolution - 1.0,\",\n \" z,\",\n \" 1.0\",\n \" );\",\n \"}\",\n \"\",\n \"void main() {\",\n \" mat4 A = mat4(p01_04, p05_08, p09_12, p13_16);\",\n \" mat4 B = mat4(p17_20, p21_24, p25_28, p29_32);\",\n \" mat4 C = mat4(p33_36, p37_40, p41_44, p45_48);\",\n \" mat4 D = mat4(p49_52, p53_56, p57_60, ZEROS);\",\n \"\",\n \" float v = colors[3];\",\n \"\",\n \" gl_Position = position(isContext, v, A, B, C, D);\",\n \"\",\n \" fragColor =\",\n \" isContext ? vec4(contextColor) :\",\n \" isPick ? vec4(colors.rgb, 1.0) : texture2D(palette, vec2(abs(v), 0.5));\",\n \"}\"\n ].join(\"\\n\");\n var fragmentShaderSource = [\n \"precision highp float;\",\n \"\",\n \"varying vec4 fragColor;\",\n \"\",\n \"void main() {\",\n \" gl_FragColor = fragColor;\",\n \"}\"\n ].join(\"\\n\");\n var maxDim = require_constants15().maxDimensionCount;\n var Lib = require_lib();\n var depthLimitEpsilon = 1e-6;\n var maskHeight = 2048;\n var dummyPixel = new Uint8Array(4);\n var dataPixel = new Uint8Array(4);\n var paletteTextureConfig = {\n shape: [256, 1],\n format: \"rgba\",\n type: \"uint8\",\n mag: \"nearest\",\n min: \"nearest\"\n };\n function ensureDraw(regl) {\n regl.read({\n x: 0,\n y: 0,\n width: 1,\n height: 1,\n data: dummyPixel\n });\n }\n function clear(regl, x, y, width, height) {\n var gl = regl._gl;\n gl.enable(gl.SCISSOR_TEST);\n gl.scissor(x, y, width, height);\n regl.clear({ color: [0, 0, 0, 0], depth: 1 });\n }\n function renderBlock(regl, glAes, renderState, blockLineCount, sampleCount, item) {\n var rafKey = item.key;\n function render(blockNumber) {\n var count = Math.min(blockLineCount, sampleCount - blockNumber * blockLineCount);\n if (blockNumber === 0) {\n window.cancelAnimationFrame(renderState.currentRafs[rafKey]);\n delete renderState.currentRafs[rafKey];\n clear(regl, item.scissorX, item.scissorY, item.scissorWidth, item.viewBoxSize[1]);\n }\n if (renderState.clearOnly) {\n return;\n }\n item.count = 2 * count;\n item.offset = 2 * blockNumber * blockLineCount;\n glAes(item);\n if (blockNumber * blockLineCount + count < sampleCount) {\n renderState.currentRafs[rafKey] = window.requestAnimationFrame(function() {\n render(blockNumber + 1);\n });\n }\n renderState.drawCompleted = false;\n }\n if (!renderState.drawCompleted) {\n ensureDraw(regl);\n renderState.drawCompleted = true;\n }\n render(0);\n }\n function adjustDepth(d) {\n return Math.max(depthLimitEpsilon, Math.min(1 - depthLimitEpsilon, d));\n }\n function palette(unitToColor, opacity) {\n var result = new Array(256);\n for (var i = 0; i < 256; i++) {\n result[i] = unitToColor(i / 255).concat(opacity);\n }\n return result;\n }\n function calcPickColor(i, rgbIndex) {\n return (i >>> 8 * rgbIndex) % 256 / 255;\n }\n function makePoints(sampleCount, dims, color) {\n var points = new Array(sampleCount * (maxDim + 4));\n var n = 0;\n for (var i = 0; i < sampleCount; i++) {\n for (var k = 0; k < maxDim; k++) {\n points[n++] = k < dims.length ? dims[k].paddedUnitValues[i] : 0.5;\n }\n points[n++] = calcPickColor(i, 2);\n points[n++] = calcPickColor(i, 1);\n points[n++] = calcPickColor(i, 0);\n points[n++] = adjustDepth(color[i]);\n }\n return points;\n }\n function makeVecAttr(vecIndex, sampleCount, points) {\n var pointPairs = new Array(sampleCount * 8);\n var n = 0;\n for (var i = 0; i < sampleCount; i++) {\n for (var j = 0; j < 2; j++) {\n for (var k = 0; k < 4; k++) {\n var q = vecIndex * 4 + k;\n var v = points[i * 64 + q];\n if (q === 63 && j === 0) {\n v *= -1;\n }\n pointPairs[n++] = v;\n }\n }\n }\n return pointPairs;\n }\n function pad2(num) {\n var s = \"0\" + num;\n return s.substr(s.length - 2);\n }\n function getAttrName(i) {\n return i < maxDim ? \"p\" + pad2(i + 1) + \"_\" + pad2(i + 4) : \"colors\";\n }\n function setAttributes(attributes, sampleCount, points) {\n for (var i = 0; i <= maxDim; i += 4) {\n attributes[getAttrName(i)](makeVecAttr(i / 4, sampleCount, points));\n }\n }\n function emptyAttributes(regl) {\n var attributes = {};\n for (var i = 0; i <= maxDim; i += 4) {\n attributes[getAttrName(i)] = regl.buffer({ usage: \"dynamic\", type: \"float\", data: new Uint8Array(0) });\n }\n return attributes;\n }\n function makeItem(model, leftmost, rightmost, itemNumber, i0, i1, x, y, panelSizeX, panelSizeY, crossfilterDimensionIndex, drwLayer, constraints, plotGlPixelRatio) {\n var dims = [[], []];\n for (var k = 0; k < 64; k++) {\n dims[0][k] = k === i0 ? 1 : 0;\n dims[1][k] = k === i1 ? 1 : 0;\n }\n x *= plotGlPixelRatio;\n y *= plotGlPixelRatio;\n panelSizeX *= plotGlPixelRatio;\n panelSizeY *= plotGlPixelRatio;\n var overdrag = model.lines.canvasOverdrag * plotGlPixelRatio;\n var domain = model.domain;\n var canvasWidth = model.canvasWidth * plotGlPixelRatio;\n var canvasHeight = model.canvasHeight * plotGlPixelRatio;\n var padL = model.pad.l * plotGlPixelRatio;\n var padB = model.pad.b * plotGlPixelRatio;\n var layoutHeight = model.layoutHeight * plotGlPixelRatio;\n var layoutWidth = model.layoutWidth * plotGlPixelRatio;\n var deselectedLinesColor = model.deselectedLines.color;\n var deselectedLinesOpacity = model.deselectedLines.opacity;\n var itemModel = Lib.extendFlat({\n key: crossfilterDimensionIndex,\n resolution: [canvasWidth, canvasHeight],\n viewBoxPos: [x + overdrag, y],\n viewBoxSize: [panelSizeX, panelSizeY],\n i0,\n i1,\n dim0A: dims[0].slice(0, 16),\n dim0B: dims[0].slice(16, 32),\n dim0C: dims[0].slice(32, 48),\n dim0D: dims[0].slice(48, 64),\n dim1A: dims[1].slice(0, 16),\n dim1B: dims[1].slice(16, 32),\n dim1C: dims[1].slice(32, 48),\n dim1D: dims[1].slice(48, 64),\n drwLayer,\n contextColor: [\n deselectedLinesColor[0] / 255,\n deselectedLinesColor[1] / 255,\n deselectedLinesColor[2] / 255,\n deselectedLinesOpacity !== \"auto\" ? deselectedLinesColor[3] * deselectedLinesOpacity : Math.max(1 / 255, Math.pow(1 / model.lines.color.length, 1 / 3))\n ],\n scissorX: (itemNumber === leftmost ? 0 : x + overdrag) + (padL - overdrag) + layoutWidth * domain.x[0],\n scissorWidth: (itemNumber === rightmost ? canvasWidth - x + overdrag : panelSizeX + 0.5) + (itemNumber === leftmost ? x + overdrag : 0),\n scissorY: y + padB + layoutHeight * domain.y[0],\n scissorHeight: panelSizeY,\n viewportX: padL - overdrag + layoutWidth * domain.x[0],\n viewportY: padB + layoutHeight * domain.y[0],\n viewportWidth: canvasWidth,\n viewportHeight: canvasHeight\n }, constraints);\n return itemModel;\n }\n function expandedPixelRange(bounds) {\n var dh = maskHeight - 1;\n var a = Math.max(0, Math.floor(bounds[0] * dh), 0);\n var b = Math.min(dh, Math.ceil(bounds[1] * dh), dh);\n return [\n Math.min(a, b),\n Math.max(a, b)\n ];\n }\n module.exports = function(canvasGL, d) {\n var isContext = d.context;\n var isPick = d.pick;\n var regl = d.regl;\n var gl = regl._gl;\n var supportedLineWidth = gl.getParameter(gl.ALIASED_LINE_WIDTH_RANGE);\n var plotGlPixelRatio = Math.max(\n supportedLineWidth[0],\n Math.min(\n supportedLineWidth[1],\n d.viewModel.plotGlPixelRatio\n )\n );\n var renderState = {\n currentRafs: {},\n drawCompleted: true,\n clearOnly: false\n };\n var model;\n var vm;\n var initialDims;\n var sampleCount;\n var attributes = emptyAttributes(regl);\n var maskTexture;\n var paletteTexture = regl.texture(paletteTextureConfig);\n var prevAxisOrder = [];\n update(d);\n var glAes = regl({\n profile: false,\n blend: {\n enable: isContext,\n func: {\n srcRGB: \"src alpha\",\n dstRGB: \"one minus src alpha\",\n srcAlpha: 1,\n dstAlpha: 1\n // 'one minus src alpha'\n },\n equation: {\n rgb: \"add\",\n alpha: \"add\"\n },\n color: [0, 0, 0, 0]\n },\n depth: {\n enable: !isContext,\n mask: true,\n func: \"less\",\n range: [0, 1]\n },\n // for polygons\n cull: {\n enable: true,\n face: \"back\"\n },\n scissor: {\n enable: true,\n box: {\n x: regl.prop(\"scissorX\"),\n y: regl.prop(\"scissorY\"),\n width: regl.prop(\"scissorWidth\"),\n height: regl.prop(\"scissorHeight\")\n }\n },\n viewport: {\n x: regl.prop(\"viewportX\"),\n y: regl.prop(\"viewportY\"),\n width: regl.prop(\"viewportWidth\"),\n height: regl.prop(\"viewportHeight\")\n },\n dither: false,\n vert: vertexShaderSource,\n frag: fragmentShaderSource,\n primitive: \"lines\",\n lineWidth: plotGlPixelRatio,\n attributes,\n uniforms: {\n resolution: regl.prop(\"resolution\"),\n viewBoxPos: regl.prop(\"viewBoxPos\"),\n viewBoxSize: regl.prop(\"viewBoxSize\"),\n dim0A: regl.prop(\"dim0A\"),\n dim1A: regl.prop(\"dim1A\"),\n dim0B: regl.prop(\"dim0B\"),\n dim1B: regl.prop(\"dim1B\"),\n dim0C: regl.prop(\"dim0C\"),\n dim1C: regl.prop(\"dim1C\"),\n dim0D: regl.prop(\"dim0D\"),\n dim1D: regl.prop(\"dim1D\"),\n loA: regl.prop(\"loA\"),\n hiA: regl.prop(\"hiA\"),\n loB: regl.prop(\"loB\"),\n hiB: regl.prop(\"hiB\"),\n loC: regl.prop(\"loC\"),\n hiC: regl.prop(\"hiC\"),\n loD: regl.prop(\"loD\"),\n hiD: regl.prop(\"hiD\"),\n palette: paletteTexture,\n contextColor: regl.prop(\"contextColor\"),\n maskTexture: regl.prop(\"maskTexture\"),\n drwLayer: regl.prop(\"drwLayer\"),\n maskHeight: regl.prop(\"maskHeight\")\n },\n offset: regl.prop(\"offset\"),\n count: regl.prop(\"count\")\n });\n function update(dNew) {\n model = dNew.model;\n vm = dNew.viewModel;\n initialDims = vm.dimensions.slice();\n sampleCount = initialDims[0] ? initialDims[0].values.length : 0;\n var lines = model.lines;\n var color = isPick ? lines.color.map(function(_, i) {\n return i / lines.color.length;\n }) : lines.color;\n var points = makePoints(sampleCount, initialDims, color);\n setAttributes(attributes, sampleCount, points);\n if (!isContext && !isPick) {\n paletteTexture = regl.texture(Lib.extendFlat({\n data: palette(model.unitToColor, 255)\n }, paletteTextureConfig));\n }\n }\n function makeConstraints(isContext2) {\n var i, j, k;\n var limits = [[], []];\n for (k = 0; k < 64; k++) {\n var p = !isContext2 && k < initialDims.length ? initialDims[k].brush.filter.getBounds() : [-Infinity, Infinity];\n limits[0][k] = p[0];\n limits[1][k] = p[1];\n }\n var len = maskHeight * 8;\n var mask = new Array(len);\n for (i = 0; i < len; i++) {\n mask[i] = 255;\n }\n if (!isContext2) {\n for (i = 0; i < initialDims.length; i++) {\n var u = i % 8;\n var v = (i - u) / 8;\n var bitMask = Math.pow(2, u);\n var dim = initialDims[i];\n var ranges = dim.brush.filter.get();\n if (ranges.length < 2) continue;\n var prevEnd = expandedPixelRange(ranges[0])[1];\n for (j = 1; j < ranges.length; j++) {\n var nextRange = expandedPixelRange(ranges[j]);\n for (k = prevEnd + 1; k < nextRange[0]; k++) {\n mask[k * 8 + v] &= ~bitMask;\n }\n prevEnd = Math.max(prevEnd, nextRange[1]);\n }\n }\n }\n var textureData = {\n // 8 units x 8 bits = 64 bits, just sufficient for the almost 64 dimensions we support\n shape: [8, maskHeight],\n format: \"alpha\",\n type: \"uint8\",\n mag: \"nearest\",\n min: \"nearest\",\n data: mask\n };\n if (maskTexture) maskTexture(textureData);\n else maskTexture = regl.texture(textureData);\n return {\n maskTexture,\n maskHeight,\n loA: limits[0].slice(0, 16),\n loB: limits[0].slice(16, 32),\n loC: limits[0].slice(32, 48),\n loD: limits[0].slice(48, 64),\n hiA: limits[1].slice(0, 16),\n hiB: limits[1].slice(16, 32),\n hiC: limits[1].slice(32, 48),\n hiD: limits[1].slice(48, 64)\n };\n }\n function renderGLParcoords(panels, setChanged, clearOnly) {\n var panelCount = panels.length;\n var i;\n var leftmost;\n var rightmost;\n var lowestX = Infinity;\n var highestX = -Infinity;\n for (i = 0; i < panelCount; i++) {\n if (panels[i].dim0.canvasX < lowestX) {\n lowestX = panels[i].dim0.canvasX;\n leftmost = i;\n }\n if (panels[i].dim1.canvasX > highestX) {\n highestX = panels[i].dim1.canvasX;\n rightmost = i;\n }\n }\n if (panelCount === 0) {\n clear(regl, 0, 0, model.canvasWidth, model.canvasHeight);\n }\n var constraints = makeConstraints(isContext);\n for (i = 0; i < panelCount; i++) {\n var p = panels[i];\n var i0 = p.dim0.crossfilterDimensionIndex;\n var i1 = p.dim1.crossfilterDimensionIndex;\n var x = p.canvasX;\n var y = p.canvasY;\n var nextX = x + p.panelSizeX;\n var plotGlPixelRatio2 = p.plotGlPixelRatio;\n if (setChanged || !prevAxisOrder[i0] || prevAxisOrder[i0][0] !== x || prevAxisOrder[i0][1] !== nextX) {\n prevAxisOrder[i0] = [x, nextX];\n var item = makeItem(\n model,\n leftmost,\n rightmost,\n i,\n i0,\n i1,\n x,\n y,\n p.panelSizeX,\n p.panelSizeY,\n p.dim0.crossfilterDimensionIndex,\n isContext ? 0 : isPick ? 2 : 1,\n constraints,\n plotGlPixelRatio2\n );\n renderState.clearOnly = clearOnly;\n var blockLineCount = setChanged ? model.lines.blockLineCount : sampleCount;\n renderBlock(\n regl,\n glAes,\n renderState,\n blockLineCount,\n sampleCount,\n item\n );\n }\n }\n }\n function readPixel(canvasX, canvasY) {\n regl.read({\n x: canvasX,\n y: canvasY,\n width: 1,\n height: 1,\n data: dataPixel\n });\n return dataPixel;\n }\n function readPixels(canvasX, canvasY, width, height) {\n var pixelArray = new Uint8Array(4 * width * height);\n regl.read({\n x: canvasX,\n y: canvasY,\n width,\n height,\n data: pixelArray\n });\n return pixelArray;\n }\n function destroy() {\n canvasGL.style[\"pointer-events\"] = \"none\";\n paletteTexture.destroy();\n if (maskTexture) maskTexture.destroy();\n for (var k in attributes) attributes[k].destroy();\n }\n return {\n render: renderGLParcoords,\n readPixel,\n readPixels,\n destroy,\n update\n };\n };\n }\n });\n\n // src/traces/parcoords/parcoords.js\n var require_parcoords = __commonJS({\n \"src/traces/parcoords/parcoords.js\"(exports, module) {\n \"use strict\";\n var d3 = require_d3();\n var Lib = require_lib();\n var isArrayOrTypedArray = Lib.isArrayOrTypedArray;\n var numberFormat = Lib.numberFormat;\n var rgba = require_color_rgba();\n var Axes = require_axes();\n var strRotate = Lib.strRotate;\n var strTranslate = Lib.strTranslate;\n var svgTextUtils = require_svg_text_utils();\n var Drawing = require_drawing();\n var Colorscale = require_colorscale();\n var gup = require_gup();\n var keyFun = gup.keyFun;\n var repeat = gup.repeat;\n var unwrap = gup.unwrap;\n var helpers = require_helpers14();\n var c = require_constants15();\n var brush = require_axisbrush();\n var lineLayerMaker = require_lines();\n function findExtreme(fn, values, len) {\n return Lib.aggNums(fn, null, values, len);\n }\n function findExtremes(values, len) {\n return fixExtremes(\n findExtreme(Math.min, values, len),\n findExtreme(Math.max, values, len)\n );\n }\n function dimensionExtent(dimension) {\n var range = dimension.range;\n return range ? fixExtremes(range[0], range[1]) : findExtremes(dimension.values, dimension._length);\n }\n function fixExtremes(lo, hi) {\n if (isNaN(lo) || !isFinite(lo)) {\n lo = 0;\n }\n if (isNaN(hi) || !isFinite(hi)) {\n hi = 0;\n }\n if (lo === hi) {\n if (lo === 0) {\n lo -= 1;\n hi += 1;\n } else {\n lo *= 0.9;\n hi *= 1.1;\n }\n }\n return [lo, hi];\n }\n function toText(formatter, texts) {\n if (texts) {\n return function(v, i) {\n var text = texts[i];\n if (text === null || text === void 0) return formatter(v);\n return text;\n };\n }\n return formatter;\n }\n function domainScale(height, padding, dimension, tickvals, ticktext) {\n var extent = dimensionExtent(dimension);\n if (tickvals) {\n return d3.scale.ordinal().domain(tickvals.map(toText(numberFormat(dimension.tickformat), ticktext))).range(\n tickvals.map(function(d) {\n var unitVal = (d - extent[0]) / (extent[1] - extent[0]);\n return height - padding + unitVal * (2 * padding - height);\n })\n );\n }\n return d3.scale.linear().domain(extent).range([height - padding, padding]);\n }\n function unitToPaddedPx(height, padding) {\n return d3.scale.linear().range([padding, height - padding]);\n }\n function domainToPaddedUnitScale(dimension, padFraction) {\n return d3.scale.linear().domain(dimensionExtent(dimension)).range([padFraction, 1 - padFraction]);\n }\n function ordinalScale(dimension) {\n if (!dimension.tickvals) return;\n var extent = dimensionExtent(dimension);\n return d3.scale.ordinal().domain(dimension.tickvals).range(dimension.tickvals.map(function(d) {\n return (d - extent[0]) / (extent[1] - extent[0]);\n }));\n }\n function unitToColorScale(cscale) {\n var colorStops = cscale.map(function(d) {\n return d[0];\n });\n var colorTuples = cscale.map(function(d) {\n var RGBA = rgba(d[1]);\n return d3.rgb(\"rgb(\" + RGBA[0] + \",\" + RGBA[1] + \",\" + RGBA[2] + \")\");\n });\n var prop = function(n) {\n return function(o) {\n return o[n];\n };\n };\n var polylinearUnitScales = \"rgb\".split(\"\").map(function(key) {\n return d3.scale.linear().clamp(true).domain(colorStops).range(colorTuples.map(prop(key)));\n });\n return function(d) {\n return polylinearUnitScales.map(function(s) {\n return s(d);\n });\n };\n }\n function someFiltersActive(view) {\n return view.dimensions.some(function(p) {\n return p.brush.filterSpecified;\n });\n }\n function model(layout, d, i) {\n var cd0 = unwrap(d);\n var trace = cd0.trace;\n var lineColor = helpers.convertTypedArray(cd0.lineColor);\n var line = trace.line;\n var deselectedLines = {\n color: rgba(trace.unselected.line.color),\n opacity: trace.unselected.line.opacity\n };\n var cOpts = Colorscale.extractOpts(line);\n var cscale = cOpts.reversescale ? Colorscale.flipScale(cd0.cscale) : cd0.cscale;\n var domain = trace.domain;\n var dimensions = trace.dimensions;\n var width = layout.width;\n var labelAngle = trace.labelangle;\n var labelSide = trace.labelside;\n var labelFont = trace.labelfont;\n var tickFont = trace.tickfont;\n var rangeFont = trace.rangefont;\n var lines = Lib.extendDeepNoArrays({}, line, {\n color: lineColor.map(d3.scale.linear().domain(\n dimensionExtent({\n values: lineColor,\n range: [cOpts.min, cOpts.max],\n _length: trace._length\n })\n )),\n blockLineCount: c.blockLineCount,\n canvasOverdrag: c.overdrag * c.canvasPixelRatio\n });\n var groupWidth = Math.floor(width * (domain.x[1] - domain.x[0]));\n var groupHeight = Math.floor(layout.height * (domain.y[1] - domain.y[0]));\n var pad = layout.margin || { l: 80, r: 80, t: 100, b: 80 };\n var rowContentWidth = groupWidth;\n var rowHeight = groupHeight;\n return {\n key: i,\n colCount: dimensions.filter(helpers.isVisible).length,\n dimensions,\n tickDistance: c.tickDistance,\n unitToColor: unitToColorScale(cscale),\n lines,\n deselectedLines,\n labelAngle,\n labelSide,\n labelFont,\n tickFont,\n rangeFont,\n layoutWidth: width,\n layoutHeight: layout.height,\n domain,\n translateX: domain.x[0] * width,\n translateY: layout.height - domain.y[1] * layout.height,\n pad,\n canvasWidth: rowContentWidth * c.canvasPixelRatio + 2 * lines.canvasOverdrag,\n canvasHeight: rowHeight * c.canvasPixelRatio,\n width: rowContentWidth,\n height: rowHeight,\n canvasPixelRatio: c.canvasPixelRatio\n };\n }\n function viewModel(state, callbacks, model2) {\n var width = model2.width;\n var height = model2.height;\n var dimensions = model2.dimensions;\n var canvasPixelRatio = model2.canvasPixelRatio;\n var xScale = function(d) {\n return width * d / Math.max(1, model2.colCount - 1);\n };\n var unitPad = c.verticalPadding / height;\n var _unitToPaddedPx = unitToPaddedPx(height, c.verticalPadding);\n var vm = {\n key: model2.key,\n xScale,\n model: model2,\n inBrushDrag: false\n // consider factoring it out and putting it in a centralized global-ish gesture state object\n };\n var uniqueKeys = {};\n vm.dimensions = dimensions.filter(helpers.isVisible).map(function(dimension, i) {\n var domainToPaddedUnit = domainToPaddedUnitScale(dimension, unitPad);\n var foundKey = uniqueKeys[dimension.label];\n uniqueKeys[dimension.label] = (foundKey || 0) + 1;\n var key = dimension.label + (foundKey ? \"__\" + foundKey : \"\");\n var specifiedConstraint = dimension.constraintrange;\n var filterRangeSpecified = specifiedConstraint && specifiedConstraint.length;\n if (filterRangeSpecified && !isArrayOrTypedArray(specifiedConstraint[0])) {\n specifiedConstraint = [specifiedConstraint];\n }\n var filterRange = filterRangeSpecified ? specifiedConstraint.map(function(d) {\n return d.map(domainToPaddedUnit);\n }) : [[-Infinity, Infinity]];\n var brushMove = function() {\n var p = vm;\n p.focusLayer && p.focusLayer.render(p.panels, true);\n var filtersActive = someFiltersActive(p);\n if (!state.contextShown() && filtersActive) {\n p.contextLayer && p.contextLayer.render(p.panels, true);\n state.contextShown(true);\n } else if (state.contextShown() && !filtersActive) {\n p.contextLayer && p.contextLayer.render(p.panels, true, true);\n state.contextShown(false);\n }\n };\n var truncatedValues = dimension.values;\n if (truncatedValues.length > dimension._length) {\n truncatedValues = truncatedValues.slice(0, dimension._length);\n }\n var tickvals = dimension.tickvals;\n var ticktext;\n function makeTickItem(v, i2) {\n return { val: v, text: ticktext[i2] };\n }\n function sortTickItem(a, b) {\n return a.val - b.val;\n }\n if (isArrayOrTypedArray(tickvals) && tickvals.length) {\n if (Lib.isTypedArray(tickvals)) tickvals = Array.from(tickvals);\n ticktext = dimension.ticktext;\n if (!isArrayOrTypedArray(ticktext) || !ticktext.length) {\n ticktext = tickvals.map(numberFormat(dimension.tickformat));\n } else if (ticktext.length > tickvals.length) {\n ticktext = ticktext.slice(0, tickvals.length);\n } else if (tickvals.length > ticktext.length) {\n tickvals = tickvals.slice(0, ticktext.length);\n }\n for (var j = 1; j < tickvals.length; j++) {\n if (tickvals[j] < tickvals[j - 1]) {\n var tickItems = tickvals.map(makeTickItem).sort(sortTickItem);\n for (var k = 0; k < tickvals.length; k++) {\n tickvals[k] = tickItems[k].val;\n ticktext[k] = tickItems[k].text;\n }\n break;\n }\n }\n } else tickvals = void 0;\n truncatedValues = helpers.convertTypedArray(truncatedValues);\n return {\n key,\n label: dimension.label,\n tickFormat: dimension.tickformat,\n tickvals,\n ticktext,\n ordinal: helpers.isOrdinal(dimension),\n multiselect: dimension.multiselect,\n xIndex: i,\n crossfilterDimensionIndex: i,\n visibleIndex: dimension._index,\n height,\n values: truncatedValues,\n paddedUnitValues: truncatedValues.map(domainToPaddedUnit),\n unitTickvals: tickvals && tickvals.map(domainToPaddedUnit),\n xScale,\n x: xScale(i),\n canvasX: xScale(i) * canvasPixelRatio,\n unitToPaddedPx: _unitToPaddedPx,\n domainScale: domainScale(height, c.verticalPadding, dimension, tickvals, ticktext),\n ordinalScale: ordinalScale(dimension),\n parent: vm,\n model: model2,\n brush: brush.makeBrush(\n state,\n filterRangeSpecified,\n filterRange,\n function() {\n state.linePickActive(false);\n },\n brushMove,\n function(f) {\n vm.focusLayer.render(vm.panels, true);\n vm.pickLayer && vm.pickLayer.render(vm.panels, true);\n state.linePickActive(true);\n if (callbacks && callbacks.filterChanged) {\n var invScale = domainToPaddedUnit.invert;\n var newRanges = f.map(function(r) {\n return r.map(invScale).sort(Lib.sorterAsc);\n }).sort(function(a, b) {\n return a[0] - b[0];\n });\n callbacks.filterChanged(vm.key, dimension._index, newRanges);\n }\n }\n )\n };\n });\n return vm;\n }\n function styleExtentTexts(selection) {\n selection.classed(c.cn.axisExtentText, true).attr(\"text-anchor\", \"middle\").style(\"cursor\", \"default\");\n }\n function parcoordsInteractionState() {\n var linePickActive = true;\n var contextShown = false;\n return {\n linePickActive: function(val) {\n return arguments.length ? linePickActive = !!val : linePickActive;\n },\n contextShown: function(val) {\n return arguments.length ? contextShown = !!val : contextShown;\n }\n };\n }\n function calcTilt(angle, position) {\n var dir = position === \"top\" ? 1 : -1;\n var radians = angle * Math.PI / 180;\n var dx = Math.sin(radians);\n var dy = Math.cos(radians);\n return {\n dir,\n dx,\n dy,\n degrees: angle\n };\n }\n function updatePanelLayout(yAxis, vm, plotGlPixelRatio) {\n var panels = vm.panels || (vm.panels = []);\n var data = yAxis.data();\n for (var i = 0; i < data.length - 1; i++) {\n var p = panels[i] || (panels[i] = {});\n var dim0 = data[i];\n var dim1 = data[i + 1];\n p.dim0 = dim0;\n p.dim1 = dim1;\n p.canvasX = dim0.canvasX;\n p.panelSizeX = dim1.canvasX - dim0.canvasX;\n p.panelSizeY = vm.model.canvasHeight;\n p.y = 0;\n p.canvasY = 0;\n p.plotGlPixelRatio = plotGlPixelRatio;\n }\n }\n function calcAllTicks(cd) {\n for (var i = 0; i < cd.length; i++) {\n for (var j = 0; j < cd[i].length; j++) {\n var trace = cd[i][j].trace;\n var dimensions = trace.dimensions;\n for (var k = 0; k < dimensions.length; k++) {\n var values = dimensions[k].values;\n var dim = dimensions[k]._ax;\n if (dim) {\n if (!dim.range) {\n dim.range = findExtremes(values, trace._length);\n } else {\n dim.range = fixExtremes(dim.range[0], dim.range[1]);\n }\n if (!dim.dtick) {\n dim.dtick = 0.01 * (Math.abs(dim.range[1] - dim.range[0]) || 1);\n }\n dim.tickformat = dimensions[k].tickformat;\n Axes.calcTicks(dim);\n dim.cleanRange();\n }\n }\n }\n }\n }\n function linearFormat(dim, v) {\n return Axes.tickText(dim._ax, v, false).text;\n }\n function extremeText(d, isTop) {\n if (d.ordinal) return \"\";\n var domain = d.domainScale.domain();\n var v = domain[isTop ? domain.length - 1 : 0];\n return linearFormat(d.model.dimensions[d.visibleIndex], v);\n }\n module.exports = function parcoords(gd, cdModule, layout, callbacks) {\n var isStatic = gd._context.staticPlot;\n var fullLayout = gd._fullLayout;\n var svg = fullLayout._toppaper;\n var glContainer = fullLayout._glcontainer;\n var plotGlPixelRatio = gd._context.plotGlPixelRatio;\n var paperColor = gd._fullLayout.paper_bgcolor;\n calcAllTicks(cdModule);\n var state = parcoordsInteractionState();\n var vm = cdModule.filter(function(d) {\n return unwrap(d).trace.visible;\n }).map(model.bind(0, layout)).map(viewModel.bind(0, state, callbacks));\n glContainer.each(function(d, i) {\n return Lib.extendFlat(d, vm[i]);\n });\n var glLayers = glContainer.selectAll(\".gl-canvas\").each(function(d) {\n d.viewModel = vm[0];\n d.viewModel.plotGlPixelRatio = plotGlPixelRatio;\n d.viewModel.paperColor = paperColor;\n d.model = d.viewModel ? d.viewModel.model : null;\n });\n var lastHovered = null;\n var pickLayer = glLayers.filter(function(d) {\n return d.pick;\n });\n pickLayer.style(\"pointer-events\", isStatic ? \"none\" : \"auto\").on(\"mousemove\", function(d) {\n if (state.linePickActive() && d.lineLayer && callbacks && callbacks.hover) {\n var event = d3.event;\n var cw = this.width;\n var ch = this.height;\n var pointer = d3.mouse(this);\n var x = pointer[0];\n var y = pointer[1];\n if (x < 0 || y < 0 || x >= cw || y >= ch) {\n return;\n }\n var pixel = d.lineLayer.readPixel(x, ch - 1 - y);\n var found = pixel[3] !== 0;\n var curveNumber = found ? pixel[2] + 256 * (pixel[1] + 256 * pixel[0]) : null;\n var eventData = {\n x,\n y,\n clientX: event.clientX,\n clientY: event.clientY,\n dataIndex: d.model.key,\n curveNumber\n };\n if (curveNumber !== lastHovered) {\n if (found) {\n callbacks.hover(eventData);\n } else if (callbacks.unhover) {\n callbacks.unhover(eventData);\n }\n lastHovered = curveNumber;\n }\n }\n });\n glLayers.style(\"opacity\", function(d) {\n return d.pick ? 0 : 1;\n });\n svg.style(\"background\", \"rgba(255, 255, 255, 0)\");\n var controlOverlay = svg.selectAll(\".\" + c.cn.parcoords).data(vm, keyFun);\n controlOverlay.exit().remove();\n controlOverlay.enter().append(\"g\").classed(c.cn.parcoords, true).style(\"shape-rendering\", \"crispEdges\").style(\"pointer-events\", \"none\");\n controlOverlay.attr(\"transform\", function(d) {\n return strTranslate(d.model.translateX, d.model.translateY);\n });\n var parcoordsControlView = controlOverlay.selectAll(\".\" + c.cn.parcoordsControlView).data(repeat, keyFun);\n parcoordsControlView.enter().append(\"g\").classed(c.cn.parcoordsControlView, true);\n parcoordsControlView.attr(\"transform\", function(d) {\n return strTranslate(d.model.pad.l, d.model.pad.t);\n });\n var yAxis = parcoordsControlView.selectAll(\".\" + c.cn.yAxis).data(function(p) {\n return p.dimensions;\n }, keyFun);\n yAxis.enter().append(\"g\").classed(c.cn.yAxis, true);\n parcoordsControlView.each(function(p) {\n updatePanelLayout(yAxis, p, plotGlPixelRatio);\n });\n glLayers.each(function(d) {\n if (d.viewModel) {\n if (!d.lineLayer || callbacks) {\n d.lineLayer = lineLayerMaker(this, d);\n } else d.lineLayer.update(d);\n if (d.key || d.key === 0) d.viewModel[d.key] = d.lineLayer;\n var setChanged = !d.context || // don't update background\n callbacks;\n d.lineLayer.render(d.viewModel.panels, setChanged);\n }\n });\n yAxis.attr(\"transform\", function(d) {\n return strTranslate(d.xScale(d.xIndex), 0);\n });\n yAxis.call(\n d3.behavior.drag().origin(function(d) {\n return d;\n }).on(\"drag\", function(d) {\n var p = d.parent;\n state.linePickActive(false);\n d.x = Math.max(-c.overdrag, Math.min(d.model.width + c.overdrag, d3.event.x));\n d.canvasX = d.x * d.model.canvasPixelRatio;\n yAxis.sort(function(a, b) {\n return a.x - b.x;\n }).each(function(e, i) {\n e.xIndex = i;\n e.x = d === e ? e.x : e.xScale(e.xIndex);\n e.canvasX = e.x * e.model.canvasPixelRatio;\n });\n updatePanelLayout(yAxis, p, plotGlPixelRatio);\n yAxis.filter(function(e) {\n return Math.abs(d.xIndex - e.xIndex) !== 0;\n }).attr(\"transform\", function(d2) {\n return strTranslate(d2.xScale(d2.xIndex), 0);\n });\n d3.select(this).attr(\"transform\", strTranslate(d.x, 0));\n yAxis.each(function(e, i0, i1) {\n if (i1 === d.parent.key) p.dimensions[i0] = e;\n });\n p.contextLayer && p.contextLayer.render(p.panels, false, !someFiltersActive(p));\n p.focusLayer.render && p.focusLayer.render(p.panels);\n }).on(\"dragend\", function(d) {\n var p = d.parent;\n d.x = d.xScale(d.xIndex);\n d.canvasX = d.x * d.model.canvasPixelRatio;\n updatePanelLayout(yAxis, p, plotGlPixelRatio);\n d3.select(this).attr(\"transform\", function(d2) {\n return strTranslate(d2.x, 0);\n });\n p.contextLayer && p.contextLayer.render(p.panels, false, !someFiltersActive(p));\n p.focusLayer && p.focusLayer.render(p.panels);\n p.pickLayer && p.pickLayer.render(p.panels, true);\n state.linePickActive(true);\n if (callbacks && callbacks.axesMoved) {\n callbacks.axesMoved(p.key, p.dimensions.map(function(e) {\n return e.crossfilterDimensionIndex;\n }));\n }\n })\n );\n yAxis.exit().remove();\n var axisOverlays = yAxis.selectAll(\".\" + c.cn.axisOverlays).data(repeat, keyFun);\n axisOverlays.enter().append(\"g\").classed(c.cn.axisOverlays, true);\n axisOverlays.selectAll(\".\" + c.cn.axis).remove();\n var axis = axisOverlays.selectAll(\".\" + c.cn.axis).data(repeat, keyFun);\n axis.enter().append(\"g\").classed(c.cn.axis, true);\n axis.each(function(d) {\n var wantedTickCount = d.model.height / d.model.tickDistance;\n var scale = d.domainScale;\n var sdom = scale.domain();\n d3.select(this).call(d3.svg.axis().orient(\"left\").tickSize(4).outerTickSize(2).ticks(wantedTickCount, d.tickFormat).tickValues(d.ordinal ? (\n // and this works for ordinal scales\n sdom\n ) : null).tickFormat(function(v) {\n return helpers.isOrdinal(d) ? v : linearFormat(d.model.dimensions[d.visibleIndex], v);\n }).scale(scale));\n Drawing.font(axis.selectAll(\"text\"), d.model.tickFont);\n });\n axis.selectAll(\".domain, .tick>line\").attr(\"fill\", \"none\").attr(\"stroke\", \"black\").attr(\"stroke-opacity\", 0.25).attr(\"stroke-width\", \"1px\");\n axis.selectAll(\"text\").style(\"cursor\", \"default\");\n var axisHeading = axisOverlays.selectAll(\".\" + c.cn.axisHeading).data(repeat, keyFun);\n axisHeading.enter().append(\"g\").classed(c.cn.axisHeading, true);\n var axisTitle = axisHeading.selectAll(\".\" + c.cn.axisTitle).data(repeat, keyFun);\n axisTitle.enter().append(\"text\").classed(c.cn.axisTitle, true).attr(\"text-anchor\", \"middle\").style(\"cursor\", \"ew-resize\").style(\"pointer-events\", isStatic ? \"none\" : \"auto\");\n axisTitle.text(function(d) {\n return d.label;\n }).each(function(d) {\n var e = d3.select(this);\n Drawing.font(e, d.model.labelFont);\n svgTextUtils.convertToTspans(e, gd);\n }).attr(\"transform\", function(d) {\n var tilt = calcTilt(d.model.labelAngle, d.model.labelSide);\n var r = c.axisTitleOffset;\n return (tilt.dir > 0 ? \"\" : strTranslate(0, 2 * r + d.model.height)) + strRotate(tilt.degrees) + strTranslate(-r * tilt.dx, -r * tilt.dy);\n }).attr(\"text-anchor\", function(d) {\n var tilt = calcTilt(d.model.labelAngle, d.model.labelSide);\n var adx = Math.abs(tilt.dx);\n var ady = Math.abs(tilt.dy);\n if (2 * adx > ady) {\n return tilt.dir * tilt.dx < 0 ? \"start\" : \"end\";\n } else {\n return \"middle\";\n }\n });\n var axisExtent = axisOverlays.selectAll(\".\" + c.cn.axisExtent).data(repeat, keyFun);\n axisExtent.enter().append(\"g\").classed(c.cn.axisExtent, true);\n var axisExtentTop = axisExtent.selectAll(\".\" + c.cn.axisExtentTop).data(repeat, keyFun);\n axisExtentTop.enter().append(\"g\").classed(c.cn.axisExtentTop, true);\n axisExtentTop.attr(\"transform\", strTranslate(0, -c.axisExtentOffset));\n var axisExtentTopText = axisExtentTop.selectAll(\".\" + c.cn.axisExtentTopText).data(repeat, keyFun);\n axisExtentTopText.enter().append(\"text\").classed(c.cn.axisExtentTopText, true).call(styleExtentTexts);\n axisExtentTopText.text(function(d) {\n return extremeText(d, true);\n }).each(function(d) {\n Drawing.font(d3.select(this), d.model.rangeFont);\n });\n var axisExtentBottom = axisExtent.selectAll(\".\" + c.cn.axisExtentBottom).data(repeat, keyFun);\n axisExtentBottom.enter().append(\"g\").classed(c.cn.axisExtentBottom, true);\n axisExtentBottom.attr(\"transform\", function(d) {\n return strTranslate(0, d.model.height + c.axisExtentOffset);\n });\n var axisExtentBottomText = axisExtentBottom.selectAll(\".\" + c.cn.axisExtentBottomText).data(repeat, keyFun);\n axisExtentBottomText.enter().append(\"text\").classed(c.cn.axisExtentBottomText, true).attr(\"dy\", \"0.75em\").call(styleExtentTexts);\n axisExtentBottomText.text(function(d) {\n return extremeText(d, false);\n }).each(function(d) {\n Drawing.font(d3.select(this), d.model.rangeFont);\n });\n brush.ensureAxisBrush(axisOverlays, paperColor, gd);\n };\n }\n });\n\n // src/traces/parcoords/plot.js\n var require_plot5 = __commonJS({\n \"src/traces/parcoords/plot.js\"(exports, module) {\n \"use strict\";\n var parcoords = require_parcoords();\n var prepareRegl = require_prepare_regl();\n var isVisible = require_helpers14().isVisible;\n var reglPrecompiled = {};\n function newIndex(visibleIndices, orig, dim) {\n var origIndex = orig.indexOf(dim);\n var currentIndex = visibleIndices.indexOf(origIndex);\n if (currentIndex === -1) {\n currentIndex += orig.length;\n }\n return currentIndex;\n }\n function sorter(visibleIndices, orig) {\n return function sorter2(d1, d2) {\n return newIndex(visibleIndices, orig, d1) - newIndex(visibleIndices, orig, d2);\n };\n }\n var exports = module.exports = function plot(gd, cdModule) {\n var fullLayout = gd._fullLayout;\n var success = prepareRegl(gd, [], reglPrecompiled);\n if (!success) return;\n var currentDims = {};\n var initialDims = {};\n var fullIndices = {};\n var inputIndices = {};\n var size = fullLayout._size;\n cdModule.forEach(function(d, i) {\n var trace = d[0].trace;\n fullIndices[i] = trace.index;\n var iIn = inputIndices[i] = trace.index;\n currentDims[i] = gd.data[iIn].dimensions;\n initialDims[i] = gd.data[iIn].dimensions.slice();\n });\n var filterChanged = function(i, initialDimIndex, newRanges) {\n var dim = initialDims[i][initialDimIndex];\n var newConstraints = newRanges.map(function(r) {\n return r.slice();\n });\n var aStr = \"dimensions[\" + initialDimIndex + \"].constraintrange\";\n var preGUI = fullLayout._tracePreGUI[gd._fullData[fullIndices[i]]._fullInput.uid];\n if (preGUI[aStr] === void 0) {\n var initialVal = dim.constraintrange;\n preGUI[aStr] = initialVal || null;\n }\n var fullDimension = gd._fullData[fullIndices[i]].dimensions[initialDimIndex];\n if (!newConstraints.length) {\n delete dim.constraintrange;\n delete fullDimension.constraintrange;\n newConstraints = null;\n } else {\n if (newConstraints.length === 1) newConstraints = newConstraints[0];\n dim.constraintrange = newConstraints;\n fullDimension.constraintrange = newConstraints.slice();\n newConstraints = [newConstraints];\n }\n var restyleData = {};\n restyleData[aStr] = newConstraints;\n gd.emit(\"plotly_restyle\", [restyleData, [inputIndices[i]]]);\n };\n var hover = function(eventData) {\n gd.emit(\"plotly_hover\", eventData);\n };\n var unhover = function(eventData) {\n gd.emit(\"plotly_unhover\", eventData);\n };\n var axesMoved = function(i, visibleIndices) {\n var orig = sorter(visibleIndices, initialDims[i].filter(isVisible));\n currentDims[i].sort(orig);\n initialDims[i].filter(function(d) {\n return !isVisible(d);\n }).sort(function(d) {\n return initialDims[i].indexOf(d);\n }).forEach(function(d) {\n currentDims[i].splice(currentDims[i].indexOf(d), 1);\n currentDims[i].splice(initialDims[i].indexOf(d), 0, d);\n });\n gd.emit(\"plotly_restyle\", [{ dimensions: [currentDims[i]] }, [inputIndices[i]]]);\n };\n parcoords(\n gd,\n cdModule,\n {\n // layout\n width: size.w,\n height: size.h,\n margin: {\n t: size.t,\n r: size.r,\n b: size.b,\n l: size.l\n }\n },\n {\n // callbacks\n filterChanged,\n hover,\n unhover,\n axesMoved\n }\n );\n };\n exports.reglPrecompiled = reglPrecompiled;\n }\n });\n\n // src/traces/parcoords/base_plot.js\n var require_base_plot2 = __commonJS({\n \"src/traces/parcoords/base_plot.js\"(exports) {\n \"use strict\";\n var d3 = require_d3();\n var getModuleCalcData = require_get_data().getModuleCalcData;\n var parcoordsPlot = require_plot5();\n var xmlnsNamespaces = require_xmlns_namespaces();\n exports.name = \"parcoords\";\n exports.plot = function(gd) {\n var calcData = getModuleCalcData(gd.calcdata, \"parcoords\")[0];\n if (calcData.length) parcoordsPlot(gd, calcData);\n };\n exports.clean = function(newFullData, newFullLayout, oldFullData, oldFullLayout) {\n var hadParcoords = oldFullLayout._has && oldFullLayout._has(\"parcoords\");\n var hasParcoords = newFullLayout._has && newFullLayout._has(\"parcoords\");\n if (hadParcoords && !hasParcoords) {\n oldFullLayout._paperdiv.selectAll(\".parcoords\").remove();\n oldFullLayout._glimages.selectAll(\"*\").remove();\n }\n };\n exports.toSVG = function(gd) {\n var imageRoot = gd._fullLayout._glimages;\n var root = d3.select(gd).selectAll(\".svg-container\");\n var canvases = root.filter(function(d, i) {\n return i === root.size() - 1;\n }).selectAll(\".gl-canvas-context, .gl-canvas-focus\");\n function canvasToImage() {\n var canvas = this;\n var imageData = canvas.toDataURL(\"image/png\");\n var image = imageRoot.append(\"svg:image\");\n image.attr({\n xmlns: xmlnsNamespaces.svg,\n \"xlink:href\": imageData,\n preserveAspectRatio: \"none\",\n x: 0,\n y: 0,\n width: canvas.style.width,\n height: canvas.style.height\n });\n }\n canvases.each(canvasToImage);\n window.setTimeout(function() {\n d3.selectAll(\"#filterBarPattern\").attr(\"id\", \"filterBarPattern\");\n }, 60);\n };\n }\n });\n\n // src/traces/parcoords/base_index.js\n var require_base_index3 = __commonJS({\n \"src/traces/parcoords/base_index.js\"(exports, module) {\n \"use strict\";\n module.exports = {\n attributes: require_attributes25(),\n supplyDefaults: require_defaults21(),\n calc: require_calc7(),\n colorbar: {\n container: \"line\",\n min: \"cmin\",\n max: \"cmax\"\n },\n moduleType: \"trace\",\n name: \"parcoords\",\n basePlotModule: require_base_plot2(),\n categories: [\"gl\", \"regl\", \"noOpacity\", \"noHover\"],\n meta: {}\n };\n }\n });\n\n // src/traces/parcoords/index.js\n var require_parcoords2 = __commonJS({\n \"src/traces/parcoords/index.js\"(exports, module) {\n \"use strict\";\n var index = require_base_index3();\n index.plot = require_plot5();\n module.exports = index;\n }\n });\n\n // lib/parcoords.js\n var require_parcoords3 = __commonJS({\n \"lib/parcoords.js\"(exports, module) {\n \"use strict\";\n module.exports = require_parcoords2();\n }\n });\n\n // node_modules/world-calendars/dist/main.js\n var require_main = __commonJS({\n \"node_modules/world-calendars/dist/main.js\"(exports, module) {\n var assign = require_object_assign();\n function Calendars() {\n this.regionalOptions = [];\n this.regionalOptions[\"\"] = {\n invalidCalendar: \"Calendar {0} not found\",\n invalidDate: \"Invalid {0} date\",\n invalidMonth: \"Invalid {0} month\",\n invalidYear: \"Invalid {0} year\",\n differentCalendars: \"Cannot mix {0} and {1} dates\"\n };\n this.local = this.regionalOptions[\"\"];\n this.calendars = {};\n this._localCals = {};\n }\n assign(Calendars.prototype, {\n /** Obtain a calendar implementation and localisation.\n @memberof Calendars\n @param [name='gregorian'] {string} The name of the calendar, e.g. 'gregorian', 'persian', 'islamic'.\n @param [language=''] {string} The language code to use for localisation (default is English).\n @return {Calendar} The calendar and localisation.\n @throws Error if calendar not found. */\n instance: function(name, language) {\n name = (name || \"gregorian\").toLowerCase();\n language = language || \"\";\n var cal = this._localCals[name + \"-\" + language];\n if (!cal && this.calendars[name]) {\n cal = new this.calendars[name](language);\n this._localCals[name + \"-\" + language] = cal;\n }\n if (!cal) {\n throw (this.local.invalidCalendar || this.regionalOptions[\"\"].invalidCalendar).replace(/\\{0\\}/, name);\n }\n return cal;\n },\n /** Create a new date - for today if no other parameters given.\n @memberof Calendars\n @param year {CDate|number} The date to copy or the year for the date.\n @param [month] {number} The month for the date.\n @param [day] {number} The day for the date.\n @param [calendar='gregorian'] {BaseCalendar|string} The underlying calendar or the name of the calendar.\n @param [language=''] {string} The language to use for localisation (default English).\n @return {CDate} The new date.\n @throws Error if an invalid date. */\n newDate: function(year, month, day, calendar, language) {\n calendar = (year != null && year.year ? year.calendar() : typeof calendar === \"string\" ? this.instance(calendar, language) : calendar) || this.instance();\n return calendar.newDate(year, month, day);\n },\n /** A simple digit substitution function for localising numbers via the Calendar digits option.\n @member Calendars\n @param digits {string[]} The substitute digits, for 0 through 9.\n @return {function} The substitution function. */\n substituteDigits: function(digits) {\n return function(value) {\n return (value + \"\").replace(/[0-9]/g, function(digit) {\n return digits[digit];\n });\n };\n },\n /** Digit substitution function for localising Chinese style numbers via the Calendar digits option.\n @member Calendars\n @param digits {string[]} The substitute digits, for 0 through 9.\n @param powers {string[]} The characters denoting powers of 10, i.e. 1, 10, 100, 1000.\n @return {function} The substitution function. */\n substituteChineseDigits: function(digits, powers) {\n return function(value) {\n var localNumber = \"\";\n var power = 0;\n while (value > 0) {\n var units = value % 10;\n localNumber = (units === 0 ? \"\" : digits[units] + powers[power]) + localNumber;\n power++;\n value = Math.floor(value / 10);\n }\n if (localNumber.indexOf(digits[1] + powers[1]) === 0) {\n localNumber = localNumber.substr(1);\n }\n return localNumber || digits[0];\n };\n }\n });\n function CDate(calendar, year, month, day) {\n this._calendar = calendar;\n this._year = year;\n this._month = month;\n this._day = day;\n if (this._calendar._validateLevel === 0 && !this._calendar.isValid(this._year, this._month, this._day)) {\n throw (_exports.local.invalidDate || _exports.regionalOptions[\"\"].invalidDate).replace(/\\{0\\}/, this._calendar.local.name);\n }\n }\n function pad(value, length) {\n value = \"\" + value;\n return \"000000\".substring(0, length - value.length) + value;\n }\n assign(CDate.prototype, {\n /** Create a new date.\n @memberof CDate\n @param [year] {CDate|number} The date to copy or the year for the date (default this date).\n @param [month] {number} The month for the date.\n @param [day] {number} The day for the date.\n @return {CDate} The new date.\n @throws Error if an invalid date. */\n newDate: function(year, month, day) {\n return this._calendar.newDate(year == null ? this : year, month, day);\n },\n /** Set or retrieve the year for this date.\n @memberof CDate\n @param [year] {number} The year for the date.\n @return {number|CDate} The date's year (if no parameter) or the updated date.\n @throws Error if an invalid date. */\n year: function(year) {\n return arguments.length === 0 ? this._year : this.set(year, \"y\");\n },\n /** Set or retrieve the month for this date.\n @memberof CDate\n @param [month] {number} The month for the date.\n @return {number|CDate} The date's month (if no parameter) or the updated date.\n @throws Error if an invalid date. */\n month: function(month) {\n return arguments.length === 0 ? this._month : this.set(month, \"m\");\n },\n /** Set or retrieve the day for this date.\n @memberof CDate\n @param [day] {number} The day for the date.\n @return {number|CData} The date's day (if no parameter) or the updated date.\n @throws Error if an invalid date. */\n day: function(day) {\n return arguments.length === 0 ? this._day : this.set(day, \"d\");\n },\n /** Set new values for this date.\n @memberof CDate\n @param year {number} The year for the date.\n @param month {number} The month for the date.\n @param day {number} The day for the date.\n @return {CDate} The updated date.\n @throws Error if an invalid date. */\n date: function(year, month, day) {\n if (!this._calendar.isValid(year, month, day)) {\n throw (_exports.local.invalidDate || _exports.regionalOptions[\"\"].invalidDate).replace(/\\{0\\}/, this._calendar.local.name);\n }\n this._year = year;\n this._month = month;\n this._day = day;\n return this;\n },\n /** Determine whether this date is in a leap year.\n @memberof CDate\n @return {boolean} true if this is a leap year, false if not. */\n leapYear: function() {\n return this._calendar.leapYear(this);\n },\n /** Retrieve the epoch designator for this date, e.g. BCE or CE.\n @memberof CDate\n @return {string} The current epoch. */\n epoch: function() {\n return this._calendar.epoch(this);\n },\n /** Format the year, if not a simple sequential number.\n @memberof CDate\n @return {string} The formatted year. */\n formatYear: function() {\n return this._calendar.formatYear(this);\n },\n /** Retrieve the month of the year for this date,\n i.e. the month's position within a numbered year.\n @memberof CDate\n @return {number} The month of the year: minMonth to months per year. */\n monthOfYear: function() {\n return this._calendar.monthOfYear(this);\n },\n /** Retrieve the week of the year for this date.\n @memberof CDate\n @return {number} The week of the year: 1 to weeks per year. */\n weekOfYear: function() {\n return this._calendar.weekOfYear(this);\n },\n /** Retrieve the number of days in the year for this date.\n @memberof CDate\n @return {number} The number of days in this year. */\n daysInYear: function() {\n return this._calendar.daysInYear(this);\n },\n /** Retrieve the day of the year for this date.\n @memberof CDate\n @return {number} The day of the year: 1 to days per year. */\n dayOfYear: function() {\n return this._calendar.dayOfYear(this);\n },\n /** Retrieve the number of days in the month for this date.\n @memberof CDate\n @return {number} The number of days. */\n daysInMonth: function() {\n return this._calendar.daysInMonth(this);\n },\n /** Retrieve the day of the week for this date.\n @memberof CDate\n @return {number} The day of the week: 0 to number of days - 1. */\n dayOfWeek: function() {\n return this._calendar.dayOfWeek(this);\n },\n /** Determine whether this date is a week day.\n @memberof CDate\n @return {boolean} true if a week day, false if not. */\n weekDay: function() {\n return this._calendar.weekDay(this);\n },\n /** Retrieve additional information about this date.\n @memberof CDate\n @return {object} Additional information - contents depends on calendar. */\n extraInfo: function() {\n return this._calendar.extraInfo(this);\n },\n /** Add period(s) to a date.\n @memberof CDate\n @param offset {number} The number of periods to adjust by.\n @param period {string} One of 'y' for year, 'm' for month, 'w' for week, 'd' for day.\n @return {CDate} The updated date. */\n add: function(offset, period) {\n return this._calendar.add(this, offset, period);\n },\n /** Set a portion of the date.\n @memberof CDate\n @param value {number} The new value for the period.\n @param period {string} One of 'y' for year, 'm' for month, 'd' for day.\n @return {CDate} The updated date.\n @throws Error if not a valid date. */\n set: function(value, period) {\n return this._calendar.set(this, value, period);\n },\n /** Compare this date to another date.\n @memberof CDate\n @param date {CDate} The other date.\n @return {number} -1 if this date is before the other date,\n 0 if they are equal, or +1 if this date is after the other date. */\n compareTo: function(date) {\n if (this._calendar.name !== date._calendar.name) {\n throw (_exports.local.differentCalendars || _exports.regionalOptions[\"\"].differentCalendars).replace(/\\{0\\}/, this._calendar.local.name).replace(/\\{1\\}/, date._calendar.local.name);\n }\n var c = this._year !== date._year ? this._year - date._year : this._month !== date._month ? this.monthOfYear() - date.monthOfYear() : this._day - date._day;\n return c === 0 ? 0 : c < 0 ? -1 : 1;\n },\n /** Retrieve the calendar backing this date.\n @memberof CDate\n @return {BaseCalendar} The calendar implementation. */\n calendar: function() {\n return this._calendar;\n },\n /** Retrieve the Julian date equivalent for this date,\n i.e. days since January 1, 4713 BCE Greenwich noon.\n @memberof CDate\n @return {number} The equivalent Julian date. */\n toJD: function() {\n return this._calendar.toJD(this);\n },\n /** Create a new date from a Julian date.\n @memberof CDate\n @param jd {number} The Julian date to convert.\n @return {CDate} The equivalent date. */\n fromJD: function(jd) {\n return this._calendar.fromJD(jd);\n },\n /** Convert this date to a standard (Gregorian) JavaScript Date.\n @memberof CDate\n @return {Date} The equivalent JavaScript date. */\n toJSDate: function() {\n return this._calendar.toJSDate(this);\n },\n /** Create a new date from a standard (Gregorian) JavaScript Date.\n @memberof CDate\n @param jsd {Date} The JavaScript date to convert.\n @return {CDate} The equivalent date. */\n fromJSDate: function(jsd) {\n return this._calendar.fromJSDate(jsd);\n },\n /** Convert to a string for display.\n @memberof CDate\n @return {string} This date as a string. */\n toString: function() {\n return (this.year() < 0 ? \"-\" : \"\") + pad(Math.abs(this.year()), 4) + \"-\" + pad(this.month(), 2) + \"-\" + pad(this.day(), 2);\n }\n });\n function BaseCalendar() {\n this.shortYearCutoff = \"+10\";\n }\n assign(BaseCalendar.prototype, {\n _validateLevel: 0,\n // \"Stack\" to turn validation on/off\n /** Create a new date within this calendar - today if no parameters given.\n @memberof BaseCalendar\n @param year {CDate|number} The date to duplicate or the year for the date.\n @param [month] {number} The month for the date.\n @param [day] {number} The day for the date.\n @return {CDate} The new date.\n @throws Error if not a valid date or a different calendar used. */\n newDate: function(year, month, day) {\n if (year == null) {\n return this.today();\n }\n if (year.year) {\n this._validate(\n year,\n month,\n day,\n _exports.local.invalidDate || _exports.regionalOptions[\"\"].invalidDate\n );\n day = year.day();\n month = year.month();\n year = year.year();\n }\n return new CDate(this, year, month, day);\n },\n /** Create a new date for today.\n @memberof BaseCalendar\n @return {CDate} Today's date. */\n today: function() {\n return this.fromJSDate(/* @__PURE__ */ new Date());\n },\n /** Retrieve the epoch designator for this date.\n @memberof BaseCalendar\n @param year {CDate|number} The date to examine or the year to examine.\n @return {string} The current epoch.\n @throws Error if an invalid year or a different calendar used. */\n epoch: function(year) {\n var date = this._validate(\n year,\n this.minMonth,\n this.minDay,\n _exports.local.invalidYear || _exports.regionalOptions[\"\"].invalidYear\n );\n return date.year() < 0 ? this.local.epochs[0] : this.local.epochs[1];\n },\n /** Format the year, if not a simple sequential number\n @memberof BaseCalendar\n @param year {CDate|number} The date to format or the year to format.\n @return {string} The formatted year.\n @throws Error if an invalid year or a different calendar used. */\n formatYear: function(year) {\n var date = this._validate(\n year,\n this.minMonth,\n this.minDay,\n _exports.local.invalidYear || _exports.regionalOptions[\"\"].invalidYear\n );\n return (date.year() < 0 ? \"-\" : \"\") + pad(Math.abs(date.year()), 4);\n },\n /** Retrieve the number of months in a year.\n @memberof BaseCalendar\n @param year {CDate|number} The date to examine or the year to examine.\n @return {number} The number of months.\n @throws Error if an invalid year or a different calendar used. */\n monthsInYear: function(year) {\n this._validate(\n year,\n this.minMonth,\n this.minDay,\n _exports.local.invalidYear || _exports.regionalOptions[\"\"].invalidYear\n );\n return 12;\n },\n /** Calculate the month's ordinal position within the year -\n for those calendars that don't start at month 1!\n @memberof BaseCalendar\n @param year {CDate|number} The date to examine or the year to examine.\n @param month {number} The month to examine.\n @return {number} The ordinal position, starting from minMonth.\n @throws Error if an invalid year/month or a different calendar used. */\n monthOfYear: function(year, month) {\n var date = this._validate(\n year,\n month,\n this.minDay,\n _exports.local.invalidMonth || _exports.regionalOptions[\"\"].invalidMonth\n );\n return (date.month() + this.monthsInYear(date) - this.firstMonth) % this.monthsInYear(date) + this.minMonth;\n },\n /** Calculate actual month from ordinal position, starting from minMonth.\n @memberof BaseCalendar\n @param year {number} The year to examine.\n @param ord {number} The month's ordinal position.\n @return {number} The month's number.\n @throws Error if an invalid year/month. */\n fromMonthOfYear: function(year, ord) {\n var m = (ord + this.firstMonth - 2 * this.minMonth) % this.monthsInYear(year) + this.minMonth;\n this._validate(\n year,\n m,\n this.minDay,\n _exports.local.invalidMonth || _exports.regionalOptions[\"\"].invalidMonth\n );\n return m;\n },\n /** Retrieve the number of days in a year.\n @memberof BaseCalendar\n @param year {CDate|number} The date to examine or the year to examine.\n @return {number} The number of days.\n @throws Error if an invalid year or a different calendar used. */\n daysInYear: function(year) {\n var date = this._validate(\n year,\n this.minMonth,\n this.minDay,\n _exports.local.invalidYear || _exports.regionalOptions[\"\"].invalidYear\n );\n return this.leapYear(date) ? 366 : 365;\n },\n /** Retrieve the day of the year for a date.\n @memberof BaseCalendar\n @param year {CDate|number} The date to convert or the year to convert.\n @param [month] {number} The month to convert.\n @param [day] {number} The day to convert.\n @return {number} The day of the year.\n @throws Error if an invalid date or a different calendar used. */\n dayOfYear: function(year, month, day) {\n var date = this._validate(\n year,\n month,\n day,\n _exports.local.invalidDate || _exports.regionalOptions[\"\"].invalidDate\n );\n return date.toJD() - this.newDate(\n date.year(),\n this.fromMonthOfYear(date.year(), this.minMonth),\n this.minDay\n ).toJD() + 1;\n },\n /** Retrieve the number of days in a week.\n @memberof BaseCalendar\n @return {number} The number of days. */\n daysInWeek: function() {\n return 7;\n },\n /** Retrieve the day of the week for a date.\n @memberof BaseCalendar\n @param year {CDate|number} The date to examine or the year to examine.\n @param [month] {number} The month to examine.\n @param [day] {number} The day to examine.\n @return {number} The day of the week: 0 to number of days - 1.\n @throws Error if an invalid date or a different calendar used. */\n dayOfWeek: function(year, month, day) {\n var date = this._validate(\n year,\n month,\n day,\n _exports.local.invalidDate || _exports.regionalOptions[\"\"].invalidDate\n );\n return (Math.floor(this.toJD(date)) + 2) % this.daysInWeek();\n },\n /** Retrieve additional information about a date.\n @memberof BaseCalendar\n @param year {CDate|number} The date to examine or the year to examine.\n @param [month] {number} The month to examine.\n @param [day] {number} The day to examine.\n @return {object} Additional information - contents depends on calendar.\n @throws Error if an invalid date or a different calendar used. */\n extraInfo: function(year, month, day) {\n this._validate(\n year,\n month,\n day,\n _exports.local.invalidDate || _exports.regionalOptions[\"\"].invalidDate\n );\n return {};\n },\n /** Add period(s) to a date.\n Cater for no year zero.\n @memberof BaseCalendar\n @param date {CDate} The starting date.\n @param offset {number} The number of periods to adjust by.\n @param period {string} One of 'y' for year, 'm' for month, 'w' for week, 'd' for day.\n @return {CDate} The updated date.\n @throws Error if a different calendar used. */\n add: function(date, offset, period) {\n this._validate(\n date,\n this.minMonth,\n this.minDay,\n _exports.local.invalidDate || _exports.regionalOptions[\"\"].invalidDate\n );\n return this._correctAdd(date, this._add(date, offset, period), offset, period);\n },\n /** Add period(s) to a date.\n @memberof BaseCalendar\n @private\n @param date {CDate} The starting date.\n @param offset {number} The number of periods to adjust by.\n @param period {string} One of 'y' for year, 'm' for month, 'w' for week, 'd' for day.\n @return {CDate} The updated date. */\n _add: function(date, offset, period) {\n this._validateLevel++;\n if (period === \"d\" || period === \"w\") {\n var jd = date.toJD() + offset * (period === \"w\" ? this.daysInWeek() : 1);\n var d = date.calendar().fromJD(jd);\n this._validateLevel--;\n return [d.year(), d.month(), d.day()];\n }\n try {\n var y = date.year() + (period === \"y\" ? offset : 0);\n var m = date.monthOfYear() + (period === \"m\" ? offset : 0);\n var d = date.day();\n var resyncYearMonth = function(calendar) {\n while (m < calendar.minMonth) {\n y--;\n m += calendar.monthsInYear(y);\n }\n var yearMonths = calendar.monthsInYear(y);\n while (m > yearMonths - 1 + calendar.minMonth) {\n y++;\n m -= yearMonths;\n yearMonths = calendar.monthsInYear(y);\n }\n };\n if (period === \"y\") {\n if (date.month() !== this.fromMonthOfYear(y, m)) {\n m = this.newDate(y, date.month(), this.minDay).monthOfYear();\n }\n m = Math.min(m, this.monthsInYear(y));\n d = Math.min(d, this.daysInMonth(y, this.fromMonthOfYear(y, m)));\n } else if (period === \"m\") {\n resyncYearMonth(this);\n d = Math.min(d, this.daysInMonth(y, this.fromMonthOfYear(y, m)));\n }\n var ymd = [y, this.fromMonthOfYear(y, m), d];\n this._validateLevel--;\n return ymd;\n } catch (e) {\n this._validateLevel--;\n throw e;\n }\n },\n /** Correct a candidate date after adding period(s) to a date.\n Handle no year zero if necessary.\n @memberof BaseCalendar\n @private\n @param date {CDate} The starting date.\n @param ymd {number[]} The added date.\n @param offset {number} The number of periods to adjust by.\n @param period {string} One of 'y' for year, 'm' for month, 'w' for week, 'd' for day.\n @return {CDate} The updated date. */\n _correctAdd: function(date, ymd, offset, period) {\n if (!this.hasYearZero && (period === \"y\" || period === \"m\")) {\n if (ymd[0] === 0 || // In year zero\n date.year() > 0 !== ymd[0] > 0) {\n var adj = {\n y: [1, 1, \"y\"],\n m: [1, this.monthsInYear(-1), \"m\"],\n w: [this.daysInWeek(), this.daysInYear(-1), \"d\"],\n d: [1, this.daysInYear(-1), \"d\"]\n }[period];\n var dir = offset < 0 ? -1 : 1;\n ymd = this._add(date, offset * adj[0] + dir * adj[1], adj[2]);\n }\n }\n return date.date(ymd[0], ymd[1], ymd[2]);\n },\n /** Set a portion of the date.\n @memberof BaseCalendar\n @param date {CDate} The starting date.\n @param value {number} The new value for the period.\n @param period {string} One of 'y' for year, 'm' for month, 'd' for day.\n @return {CDate} The updated date.\n @throws Error if an invalid date or a different calendar used. */\n set: function(date, value, period) {\n this._validate(\n date,\n this.minMonth,\n this.minDay,\n _exports.local.invalidDate || _exports.regionalOptions[\"\"].invalidDate\n );\n var y = period === \"y\" ? value : date.year();\n var m = period === \"m\" ? value : date.month();\n var d = period === \"d\" ? value : date.day();\n if (period === \"y\" || period === \"m\") {\n d = Math.min(d, this.daysInMonth(y, m));\n }\n return date.date(y, m, d);\n },\n /** Determine whether a date is valid for this calendar.\n @memberof BaseCalendar\n @param year {number} The year to examine.\n @param month {number} The month to examine.\n @param day {number} The day to examine.\n @return {boolean} true if a valid date, false if not. */\n isValid: function(year, month, day) {\n this._validateLevel++;\n var valid = this.hasYearZero || year !== 0;\n if (valid) {\n var date = this.newDate(year, month, this.minDay);\n valid = month >= this.minMonth && month - this.minMonth < this.monthsInYear(date) && (day >= this.minDay && day - this.minDay < this.daysInMonth(date));\n }\n this._validateLevel--;\n return valid;\n },\n /** Convert the date to a standard (Gregorian) JavaScript Date.\n @memberof BaseCalendar\n @param year {CDate|number} The date to convert or the year to convert.\n @param [month] {number} The month to convert.\n @param [day] {number} The day to convert.\n @return {Date} The equivalent JavaScript date.\n @throws Error if an invalid date or a different calendar used. */\n toJSDate: function(year, month, day) {\n var date = this._validate(\n year,\n month,\n day,\n _exports.local.invalidDate || _exports.regionalOptions[\"\"].invalidDate\n );\n return _exports.instance().fromJD(this.toJD(date)).toJSDate();\n },\n /** Convert the date from a standard (Gregorian) JavaScript Date.\n @memberof BaseCalendar\n @param jsd {Date} The JavaScript date.\n @return {CDate} The equivalent calendar date. */\n fromJSDate: function(jsd) {\n return this.fromJD(_exports.instance().fromJSDate(jsd).toJD());\n },\n /** Check that a candidate date is from the same calendar and is valid.\n @memberof BaseCalendar\n @private\n @param year {CDate|number} The date to validate or the year to validate.\n @param [month] {number} The month to validate.\n @param [day] {number} The day to validate.\n @param error {string} Rrror message if invalid.\n @throws Error if different calendars used or invalid date. */\n _validate: function(year, month, day, error) {\n if (year.year) {\n if (this._validateLevel === 0 && this.name !== year.calendar().name) {\n throw (_exports.local.differentCalendars || _exports.regionalOptions[\"\"].differentCalendars).replace(/\\{0\\}/, this.local.name).replace(/\\{1\\}/, year.calendar().local.name);\n }\n return year;\n }\n try {\n this._validateLevel++;\n if (this._validateLevel === 1 && !this.isValid(year, month, day)) {\n throw error.replace(/\\{0\\}/, this.local.name);\n }\n var date = this.newDate(year, month, day);\n this._validateLevel--;\n return date;\n } catch (e) {\n this._validateLevel--;\n throw e;\n }\n }\n });\n function GregorianCalendar(language) {\n this.local = this.regionalOptions[language] || this.regionalOptions[\"\"];\n }\n GregorianCalendar.prototype = new BaseCalendar();\n assign(GregorianCalendar.prototype, {\n /** The calendar name.\n @memberof GregorianCalendar */\n name: \"Gregorian\",\n /** Julian date of start of Gregorian epoch: 1 January 0001 CE.\n @memberof GregorianCalendar */\n jdEpoch: 17214255e-1,\n /** Days per month in a common year.\n @memberof GregorianCalendar */\n daysPerMonth: [31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31],\n /** true if has a year zero, false if not.\n @memberof GregorianCalendar */\n hasYearZero: false,\n /** The minimum month number.\n @memberof GregorianCalendar */\n minMonth: 1,\n /** The first month in the year.\n @memberof GregorianCalendar */\n firstMonth: 1,\n /** The minimum day number.\n @memberof GregorianCalendar */\n minDay: 1,\n /** Localisations for the plugin.\n Entries are objects indexed by the language code ('' being the default US/English).\n Each object has the following attributes.\n @memberof GregorianCalendar\n @property name {string} The calendar name.\n @property epochs {string[]} The epoch names.\n @property monthNames {string[]} The long names of the months of the year.\n @property monthNamesShort {string[]} The short names of the months of the year.\n @property dayNames {string[]} The long names of the days of the week.\n @property dayNamesShort {string[]} The short names of the days of the week.\n @property dayNamesMin {string[]} The minimal names of the days of the week.\n @property dateFormat {string} The date format for this calendar.\n See the options on formatDate for details.\n @property firstDay {number} The number of the first day of the week, starting at 0.\n @property isRTL {number} true if this localisation reads right-to-left. */\n regionalOptions: {\n // Localisations\n \"\": {\n name: \"Gregorian\",\n epochs: [\"BCE\", \"CE\"],\n monthNames: [\n \"January\",\n \"February\",\n \"March\",\n \"April\",\n \"May\",\n \"June\",\n \"July\",\n \"August\",\n \"September\",\n \"October\",\n \"November\",\n \"December\"\n ],\n monthNamesShort: [\"Jan\", \"Feb\", \"Mar\", \"Apr\", \"May\", \"Jun\", \"Jul\", \"Aug\", \"Sep\", \"Oct\", \"Nov\", \"Dec\"],\n dayNames: [\"Sunday\", \"Monday\", \"Tuesday\", \"Wednesday\", \"Thursday\", \"Friday\", \"Saturday\"],\n dayNamesShort: [\"Sun\", \"Mon\", \"Tue\", \"Wed\", \"Thu\", \"Fri\", \"Sat\"],\n dayNamesMin: [\"Su\", \"Mo\", \"Tu\", \"We\", \"Th\", \"Fr\", \"Sa\"],\n digits: null,\n dateFormat: \"mm/dd/yyyy\",\n firstDay: 0,\n isRTL: false\n }\n },\n /** Determine whether this date is in a leap year.\n @memberof GregorianCalendar\n @param year {CDate|number} The date to examine or the year to examine.\n @return {boolean} true if this is a leap year, false if not.\n @throws Error if an invalid year or a different calendar used. */\n leapYear: function(year) {\n var date = this._validate(\n year,\n this.minMonth,\n this.minDay,\n _exports.local.invalidYear || _exports.regionalOptions[\"\"].invalidYear\n );\n var year = date.year() + (date.year() < 0 ? 1 : 0);\n return year % 4 === 0 && (year % 100 !== 0 || year % 400 === 0);\n },\n /** Determine the week of the year for a date - ISO 8601.\n @memberof GregorianCalendar\n @param year {CDate|number} The date to examine or the year to examine.\n @param [month] {number} The month to examine.\n @param [day] {number} The day to examine.\n @return {number} The week of the year, starting from 1.\n @throws Error if an invalid date or a different calendar used. */\n weekOfYear: function(year, month, day) {\n var checkDate = this.newDate(year, month, day);\n checkDate.add(4 - (checkDate.dayOfWeek() || 7), \"d\");\n return Math.floor((checkDate.dayOfYear() - 1) / 7) + 1;\n },\n /** Retrieve the number of days in a month.\n @memberof GregorianCalendar\n @param year {CDate|number} The date to examine or the year of the month.\n @param [month] {number} The month.\n @return {number} The number of days in this month.\n @throws Error if an invalid month/year or a different calendar used. */\n daysInMonth: function(year, month) {\n var date = this._validate(\n year,\n month,\n this.minDay,\n _exports.local.invalidMonth || _exports.regionalOptions[\"\"].invalidMonth\n );\n return this.daysPerMonth[date.month() - 1] + (date.month() === 2 && this.leapYear(date.year()) ? 1 : 0);\n },\n /** Determine whether this date is a week day.\n @memberof GregorianCalendar\n @param year {CDate|number} The date to examine or the year to examine.\n @param [month] {number} The month to examine.\n @param [day] {number} The day to examine.\n @return {boolean} true if a week day, false if not.\n @throws Error if an invalid date or a different calendar used. */\n weekDay: function(year, month, day) {\n return (this.dayOfWeek(year, month, day) || 7) < 6;\n },\n /** Retrieve the Julian date equivalent for this date,\n i.e. days since January 1, 4713 BCE Greenwich noon.\n @memberof GregorianCalendar\n @param year {CDate|number} The date to convert or the year to convert.\n @param [month] {number} The month to convert.\n @param [day] {number} The day to convert.\n @return {number} The equivalent Julian date.\n @throws Error if an invalid date or a different calendar used. */\n toJD: function(year, month, day) {\n var date = this._validate(\n year,\n month,\n day,\n _exports.local.invalidDate || _exports.regionalOptions[\"\"].invalidDate\n );\n year = date.year();\n month = date.month();\n day = date.day();\n if (year < 0) {\n year++;\n }\n if (month < 3) {\n month += 12;\n year--;\n }\n var a = Math.floor(year / 100);\n var b = 2 - a + Math.floor(a / 4);\n return Math.floor(365.25 * (year + 4716)) + Math.floor(30.6001 * (month + 1)) + day + b - 1524.5;\n },\n /** Create a new date from a Julian date.\n @memberof GregorianCalendar\n @param jd {number} The Julian date to convert.\n @return {CDate} The equivalent date. */\n fromJD: function(jd) {\n var z = Math.floor(jd + 0.5);\n var a = Math.floor((z - 186721625e-2) / 36524.25);\n a = z + 1 + a - Math.floor(a / 4);\n var b = a + 1524;\n var c = Math.floor((b - 122.1) / 365.25);\n var d = Math.floor(365.25 * c);\n var e = Math.floor((b - d) / 30.6001);\n var day = b - d - Math.floor(e * 30.6001);\n var month = e - (e > 13.5 ? 13 : 1);\n var year = c - (month > 2.5 ? 4716 : 4715);\n if (year <= 0) {\n year--;\n }\n return this.newDate(year, month, day);\n },\n /** Convert this date to a standard (Gregorian) JavaScript Date.\n @memberof GregorianCalendar\n @param year {CDate|number} The date to convert or the year to convert.\n @param [month] {number} The month to convert.\n @param [day] {number} The day to convert.\n @return {Date} The equivalent JavaScript date.\n @throws Error if an invalid date or a different calendar used. */\n toJSDate: function(year, month, day) {\n var date = this._validate(\n year,\n month,\n day,\n _exports.local.invalidDate || _exports.regionalOptions[\"\"].invalidDate\n );\n var jsd = new Date(date.year(), date.month() - 1, date.day());\n jsd.setHours(0);\n jsd.setMinutes(0);\n jsd.setSeconds(0);\n jsd.setMilliseconds(0);\n jsd.setHours(jsd.getHours() > 12 ? jsd.getHours() + 2 : 0);\n return jsd;\n },\n /** Create a new date from a standard (Gregorian) JavaScript Date.\n @memberof GregorianCalendar\n @param jsd {Date} The JavaScript date to convert.\n @return {CDate} The equivalent date. */\n fromJSDate: function(jsd) {\n return this.newDate(jsd.getFullYear(), jsd.getMonth() + 1, jsd.getDate());\n }\n });\n var _exports = module.exports = new Calendars();\n _exports.cdate = CDate;\n _exports.baseCalendar = BaseCalendar;\n _exports.calendars.gregorian = GregorianCalendar;\n }\n });\n\n // node_modules/world-calendars/dist/plus.js\n var require_plus = __commonJS({\n \"node_modules/world-calendars/dist/plus.js\"() {\n var assign = require_object_assign();\n var main = require_main();\n assign(main.regionalOptions[\"\"], {\n invalidArguments: \"Invalid arguments\",\n invalidFormat: \"Cannot format a date from another calendar\",\n missingNumberAt: \"Missing number at position {0}\",\n unknownNameAt: \"Unknown name at position {0}\",\n unexpectedLiteralAt: \"Unexpected literal at position {0}\",\n unexpectedText: \"Additional text found at end\"\n });\n main.local = main.regionalOptions[\"\"];\n assign(main.cdate.prototype, {\n /** Format this date.\n Found in the jquery.calendars.plus.js module.\n @memberof CDate\n @param [format] {string} The date format to use (see formatDate).\n @param [settings] {object} Options for the formatDate function.\n @return {string} The formatted date. */\n formatDate: function(format, settings) {\n if (typeof format !== \"string\") {\n settings = format;\n format = \"\";\n }\n return this._calendar.formatDate(format || \"\", this, settings);\n }\n });\n assign(main.baseCalendar.prototype, {\n UNIX_EPOCH: main.instance().newDate(1970, 1, 1).toJD(),\n SECS_PER_DAY: 24 * 60 * 60,\n TICKS_EPOCH: main.instance().jdEpoch,\n // 1 January 0001 CE\n TICKS_PER_DAY: 24 * 60 * 60 * 1e7,\n /** Date form for ATOM (RFC 3339/ISO 8601).\n Found in the jquery.calendars.plus.js module.\n @memberof BaseCalendar */\n ATOM: \"yyyy-mm-dd\",\n /** Date form for cookies.\n Found in the jquery.calendars.plus.js module.\n @memberof BaseCalendar */\n COOKIE: \"D, dd M yyyy\",\n /** Date form for full date.\n Found in the jquery.calendars.plus.js module.\n @memberof BaseCalendar */\n FULL: \"DD, MM d, yyyy\",\n /** Date form for ISO 8601.\n Found in the jquery.calendars.plus.js module.\n @memberof BaseCalendar */\n ISO_8601: \"yyyy-mm-dd\",\n /** Date form for Julian date.\n Found in the jquery.calendars.plus.js module.\n @memberof BaseCalendar */\n JULIAN: \"J\",\n /** Date form for RFC 822.\n Found in the jquery.calendars.plus.js module.\n @memberof BaseCalendar */\n RFC_822: \"D, d M yy\",\n /** Date form for RFC 850.\n Found in the jquery.calendars.plus.js module.\n @memberof BaseCalendar */\n RFC_850: \"DD, dd-M-yy\",\n /** Date form for RFC 1036.\n Found in the jquery.calendars.plus.js module.\n @memberof BaseCalendar */\n RFC_1036: \"D, d M yy\",\n /** Date form for RFC 1123.\n Found in the jquery.calendars.plus.js module.\n @memberof BaseCalendar */\n RFC_1123: \"D, d M yyyy\",\n /** Date form for RFC 2822.\n Found in the jquery.calendars.plus.js module.\n @memberof BaseCalendar */\n RFC_2822: \"D, d M yyyy\",\n /** Date form for RSS (RFC 822).\n Found in the jquery.calendars.plus.js module.\n @memberof BaseCalendar */\n RSS: \"D, d M yy\",\n /** Date form for Windows ticks.\n Found in the jquery.calendars.plus.js module.\n @memberof BaseCalendar */\n TICKS: \"!\",\n /** Date form for Unix timestamp.\n Found in the jquery.calendars.plus.js module.\n @memberof BaseCalendar */\n TIMESTAMP: \"@\",\n /** Date form for W3c (ISO 8601).\n Found in the jquery.calendars.plus.js module.\n @memberof BaseCalendar */\n W3C: \"yyyy-mm-dd\",\n /** Format a date object into a string value.\n The format can be combinations of the following:\n
    \n
  • d - day of month (no leading zero)
  • \n
  • dd - day of month (two digit)
  • \n
  • o - day of year (no leading zeros)
  • \n
  • oo - day of year (three digit)
  • \n
  • D - day name short
  • \n
  • DD - day name long
  • \n
  • w - week of year (no leading zero)
  • \n
  • ww - week of year (two digit)
  • \n
  • m - month of year (no leading zero)
  • \n
  • mm - month of year (two digit)
  • \n
  • M - month name short
  • \n
  • MM - month name long
  • \n
  • yy - year (two digit)
  • \n
  • yyyy - year (four digit)
  • \n
  • YYYY - formatted year
  • \n
  • J - Julian date (days since January 1, 4713 BCE Greenwich noon)
  • \n
  • @ - Unix timestamp (s since 01/01/1970)
  • \n
  • ! - Windows ticks (100ns since 01/01/0001)
  • \n
  • '...' - literal text
  • \n
  • '' - single quote
  • \n
\n Found in the jquery.calendars.plus.js module.\n @memberof BaseCalendar\n @param [format] {string} The desired format of the date (defaults to calendar format).\n @param date {CDate} The date value to format.\n @param [settings] {object} Addition options, whose attributes include:\n @property [dayNamesShort] {string[]} Abbreviated names of the days from Sunday.\n @property [dayNames] {string[]} Names of the days from Sunday.\n @property [monthNamesShort] {string[]} Abbreviated names of the months.\n @property [monthNames] {string[]} Names of the months.\n @property [calculateWeek] {CalendarsPickerCalculateWeek} Function that determines week of the year.\n @property [localNumbers=false] {boolean} true to localise numbers (if available),\n false to use normal Arabic numerals.\n @return {string} The date in the above format.\n @throws Errors if the date is from a different calendar. */\n formatDate: function(format, date, settings) {\n if (typeof format !== \"string\") {\n settings = date;\n date = format;\n format = \"\";\n }\n if (!date) {\n return \"\";\n }\n if (date.calendar() !== this) {\n throw main.local.invalidFormat || main.regionalOptions[\"\"].invalidFormat;\n }\n format = format || this.local.dateFormat;\n settings = settings || {};\n var dayNamesShort = settings.dayNamesShort || this.local.dayNamesShort;\n var dayNames = settings.dayNames || this.local.dayNames;\n var monthNumbers = settings.monthNumbers || this.local.monthNumbers;\n var monthNamesShort = settings.monthNamesShort || this.local.monthNamesShort;\n var monthNames = settings.monthNames || this.local.monthNames;\n var calculateWeek = settings.calculateWeek || this.local.calculateWeek;\n var doubled = function(match, step) {\n var matches = 1;\n while (iFormat + matches < format.length && format.charAt(iFormat + matches) === match) {\n matches++;\n }\n iFormat += matches - 1;\n return Math.floor(matches / (step || 1)) > 1;\n };\n var formatNumber = function(match, value, len, step) {\n var num = \"\" + value;\n if (doubled(match, step)) {\n while (num.length < len) {\n num = \"0\" + num;\n }\n }\n return num;\n };\n var formatName = function(match, value, shortNames, longNames) {\n return doubled(match) ? longNames[value] : shortNames[value];\n };\n var calendar = this;\n var formatMonth = function(date2) {\n return typeof monthNumbers === \"function\" ? monthNumbers.call(calendar, date2, doubled(\"m\")) : localiseNumbers(formatNumber(\"m\", date2.month(), 2));\n };\n var formatMonthName = function(date2, useLongName) {\n if (useLongName) {\n return typeof monthNames === \"function\" ? monthNames.call(calendar, date2) : monthNames[date2.month() - calendar.minMonth];\n } else {\n return typeof monthNamesShort === \"function\" ? monthNamesShort.call(calendar, date2) : monthNamesShort[date2.month() - calendar.minMonth];\n }\n };\n var digits = this.local.digits;\n var localiseNumbers = function(value) {\n return settings.localNumbers && digits ? digits(value) : value;\n };\n var output = \"\";\n var literal = false;\n for (var iFormat = 0; iFormat < format.length; iFormat++) {\n if (literal) {\n if (format.charAt(iFormat) === \"'\" && !doubled(\"'\")) {\n literal = false;\n } else {\n output += format.charAt(iFormat);\n }\n } else {\n switch (format.charAt(iFormat)) {\n case \"d\":\n output += localiseNumbers(formatNumber(\"d\", date.day(), 2));\n break;\n case \"D\":\n output += formatName(\n \"D\",\n date.dayOfWeek(),\n dayNamesShort,\n dayNames\n );\n break;\n case \"o\":\n output += formatNumber(\"o\", date.dayOfYear(), 3);\n break;\n case \"w\":\n output += formatNumber(\"w\", date.weekOfYear(), 2);\n break;\n case \"m\":\n output += formatMonth(date);\n break;\n case \"M\":\n output += formatMonthName(date, doubled(\"M\"));\n break;\n case \"y\":\n output += doubled(\"y\", 2) ? date.year() : (date.year() % 100 < 10 ? \"0\" : \"\") + date.year() % 100;\n break;\n case \"Y\":\n doubled(\"Y\", 2);\n output += date.formatYear();\n break;\n case \"J\":\n output += date.toJD();\n break;\n case \"@\":\n output += (date.toJD() - this.UNIX_EPOCH) * this.SECS_PER_DAY;\n break;\n case \"!\":\n output += (date.toJD() - this.TICKS_EPOCH) * this.TICKS_PER_DAY;\n break;\n case \"'\":\n if (doubled(\"'\")) {\n output += \"'\";\n } else {\n literal = true;\n }\n break;\n default:\n output += format.charAt(iFormat);\n }\n }\n }\n return output;\n },\n /** Parse a string value into a date object.\n See formatDate for the possible formats, plus:\n
    \n
  • * - ignore rest of string
  • \n
\n Found in the jquery.calendars.plus.js module.\n @memberof BaseCalendar\n @param format {string} The expected format of the date ('' for default calendar format).\n @param value {string} The date in the above format.\n @param [settings] {object} Additional options whose attributes include:\n @property [shortYearCutoff] {number} The cutoff year for determining the century.\n @property [dayNamesShort] {string[]} Abbreviated names of the days from Sunday.\n @property [dayNames] {string[]} Names of the days from Sunday.\n @property [monthNamesShort] {string[]} Abbreviated names of the months.\n @property [monthNames] {string[]} Names of the months.\n @return {CDate} The extracted date value or null if value is blank.\n @throws Errors if the format and/or value are missing,\n if the value doesn't match the format, or if the date is invalid. */\n parseDate: function(format, value, settings) {\n if (value == null) {\n throw main.local.invalidArguments || main.regionalOptions[\"\"].invalidArguments;\n }\n value = typeof value === \"object\" ? value.toString() : value + \"\";\n if (value === \"\") {\n return null;\n }\n format = format || this.local.dateFormat;\n settings = settings || {};\n var shortYearCutoff = settings.shortYearCutoff || this.shortYearCutoff;\n shortYearCutoff = typeof shortYearCutoff !== \"string\" ? shortYearCutoff : this.today().year() % 100 + parseInt(shortYearCutoff, 10);\n var dayNamesShort = settings.dayNamesShort || this.local.dayNamesShort;\n var dayNames = settings.dayNames || this.local.dayNames;\n var parseMonth = settings.parseMonth || this.local.parseMonth;\n var monthNumbers = settings.monthNumbers || this.local.monthNumbers;\n var monthNamesShort = settings.monthNamesShort || this.local.monthNamesShort;\n var monthNames = settings.monthNames || this.local.monthNames;\n var jd = -1;\n var year = -1;\n var month = -1;\n var day = -1;\n var doy = -1;\n var shortYear = false;\n var literal = false;\n var doubled = function(match, step) {\n var matches = 1;\n while (iFormat + matches < format.length && format.charAt(iFormat + matches) === match) {\n matches++;\n }\n iFormat += matches - 1;\n return Math.floor(matches / (step || 1)) > 1;\n };\n var getNumber = function(match, step) {\n var isDoubled = doubled(match, step);\n var size = [2, 3, isDoubled ? 4 : 2, isDoubled ? 4 : 2, 10, 11, 20][\"oyYJ@!\".indexOf(match) + 1];\n var digits = new RegExp(\"^-?\\\\d{1,\" + size + \"}\");\n var num = value.substring(iValue).match(digits);\n if (!num) {\n throw (main.local.missingNumberAt || main.regionalOptions[\"\"].missingNumberAt).replace(/\\{0\\}/, iValue);\n }\n iValue += num[0].length;\n return parseInt(num[0], 10);\n };\n var calendar = this;\n var getMonthNumber = function() {\n if (typeof monthNumbers === \"function\") {\n doubled(\"m\");\n var month2 = monthNumbers.call(calendar, value.substring(iValue));\n iValue += month2.length;\n return month2;\n }\n return getNumber(\"m\");\n };\n var getName = function(match, shortNames, longNames, step) {\n var names = doubled(match, step) ? longNames : shortNames;\n for (var i = 0; i < names.length; i++) {\n if (value.substr(iValue, names[i].length).toLowerCase() === names[i].toLowerCase()) {\n iValue += names[i].length;\n return i + calendar.minMonth;\n }\n }\n throw (main.local.unknownNameAt || main.regionalOptions[\"\"].unknownNameAt).replace(/\\{0\\}/, iValue);\n };\n var getMonthName = function() {\n if (typeof monthNames === \"function\") {\n var month2 = doubled(\"M\") ? monthNames.call(calendar, value.substring(iValue)) : monthNamesShort.call(calendar, value.substring(iValue));\n iValue += month2.length;\n return month2;\n }\n return getName(\"M\", monthNamesShort, monthNames);\n };\n var checkLiteral = function() {\n if (value.charAt(iValue) !== format.charAt(iFormat)) {\n throw (main.local.unexpectedLiteralAt || main.regionalOptions[\"\"].unexpectedLiteralAt).replace(/\\{0\\}/, iValue);\n }\n iValue++;\n };\n var iValue = 0;\n for (var iFormat = 0; iFormat < format.length; iFormat++) {\n if (literal) {\n if (format.charAt(iFormat) === \"'\" && !doubled(\"'\")) {\n literal = false;\n } else {\n checkLiteral();\n }\n } else {\n switch (format.charAt(iFormat)) {\n case \"d\":\n day = getNumber(\"d\");\n break;\n case \"D\":\n getName(\"D\", dayNamesShort, dayNames);\n break;\n case \"o\":\n doy = getNumber(\"o\");\n break;\n case \"w\":\n getNumber(\"w\");\n break;\n case \"m\":\n month = getMonthNumber();\n break;\n case \"M\":\n month = getMonthName();\n break;\n case \"y\":\n var iSave = iFormat;\n shortYear = !doubled(\"y\", 2);\n iFormat = iSave;\n year = getNumber(\"y\", 2);\n break;\n case \"Y\":\n year = getNumber(\"Y\", 2);\n break;\n case \"J\":\n jd = getNumber(\"J\") + 0.5;\n if (value.charAt(iValue) === \".\") {\n iValue++;\n getNumber(\"J\");\n }\n break;\n case \"@\":\n jd = getNumber(\"@\") / this.SECS_PER_DAY + this.UNIX_EPOCH;\n break;\n case \"!\":\n jd = getNumber(\"!\") / this.TICKS_PER_DAY + this.TICKS_EPOCH;\n break;\n case \"*\":\n iValue = value.length;\n break;\n case \"'\":\n if (doubled(\"'\")) {\n checkLiteral();\n } else {\n literal = true;\n }\n break;\n default:\n checkLiteral();\n }\n }\n }\n if (iValue < value.length) {\n throw main.local.unexpectedText || main.regionalOptions[\"\"].unexpectedText;\n }\n if (year === -1) {\n year = this.today().year();\n } else if (year < 100 && shortYear) {\n year += shortYearCutoff === -1 ? 1900 : this.today().year() - this.today().year() % 100 - (year <= shortYearCutoff ? 0 : 100);\n }\n if (typeof month === \"string\") {\n month = parseMonth.call(this, year, month);\n }\n if (doy > -1) {\n month = 1;\n day = doy;\n for (var dim = this.daysInMonth(year, month); day > dim; dim = this.daysInMonth(year, month)) {\n month++;\n day -= dim;\n }\n }\n return jd > -1 ? this.fromJD(jd) : this.newDate(year, month, day);\n },\n /** A date may be specified as an exact value or a relative one.\n Found in the jquery.calendars.plus.js module.\n @memberof BaseCalendar\n @param dateSpec {CDate|number|string} The date as an object or string in the given format or\n an offset - numeric days from today, or string amounts and periods, e.g. '+1m +2w'.\n @param defaultDate {CDate} The date to use if no other supplied, may be null.\n @param currentDate {CDate} The current date as a possible basis for relative dates,\n if null today is used (optional)\n @param [dateFormat] {string} The expected date format - see formatDate.\n @param [settings] {object} Additional options whose attributes include:\n @property [shortYearCutoff] {number} The cutoff year for determining the century.\n @property [dayNamesShort] {string[]} Abbreviated names of the days from Sunday.\n @property [dayNames] {string[]} Names of the days from Sunday.\n @property [monthNamesShort] {string[]} Abbreviated names of the months.\n @property [monthNames] {string[]} Names of the months.\n @return {CDate} The decoded date. */\n determineDate: function(dateSpec, defaultDate, currentDate, dateFormat, settings) {\n if (currentDate && typeof currentDate !== \"object\") {\n settings = dateFormat;\n dateFormat = currentDate;\n currentDate = null;\n }\n if (typeof dateFormat !== \"string\") {\n settings = dateFormat;\n dateFormat = \"\";\n }\n var calendar = this;\n var offsetString = function(offset) {\n try {\n return calendar.parseDate(dateFormat, offset, settings);\n } catch (e) {\n }\n offset = offset.toLowerCase();\n var date = (offset.match(/^c/) && currentDate ? currentDate.newDate() : null) || calendar.today();\n var pattern = /([+-]?[0-9]+)\\s*(d|w|m|y)?/g;\n var matches = pattern.exec(offset);\n while (matches) {\n date.add(parseInt(matches[1], 10), matches[2] || \"d\");\n matches = pattern.exec(offset);\n }\n return date;\n };\n defaultDate = defaultDate ? defaultDate.newDate() : null;\n dateSpec = dateSpec == null ? defaultDate : typeof dateSpec === \"string\" ? offsetString(dateSpec) : typeof dateSpec === \"number\" ? isNaN(dateSpec) || dateSpec === Infinity || dateSpec === -Infinity ? defaultDate : calendar.today().add(dateSpec, \"d\") : calendar.newDate(dateSpec);\n return dateSpec;\n }\n });\n }\n });\n\n // node_modules/world-calendars/dist/calendars/chinese.js\n var require_chinese = __commonJS({\n \"node_modules/world-calendars/dist/calendars/chinese.js\"() {\n var main = require_main();\n var assign = require_object_assign();\n var gregorianCalendar = main.instance();\n function ChineseCalendar(language) {\n this.local = this.regionalOptions[language || \"\"] || this.regionalOptions[\"\"];\n }\n ChineseCalendar.prototype = new main.baseCalendar();\n assign(ChineseCalendar.prototype, {\n /** The calendar name.\n @memberof ChineseCalendar */\n name: \"Chinese\",\n /** Julian date of start of Gregorian epoch: 1 January 0001 CE.\n @memberof GregorianCalendar */\n jdEpoch: 17214255e-1,\n /** true if has a year zero, false if not.\n @memberof ChineseCalendar */\n hasYearZero: false,\n /** The minimum month number.\n This calendar uses month indices to account for intercalary months. \n @memberof ChineseCalendar */\n minMonth: 0,\n /** The first month in the year.\n This calendar uses month indices to account for intercalary months. \n @memberof ChineseCalendar */\n firstMonth: 0,\n /** The minimum day number.\n @memberof ChineseCalendar */\n minDay: 1,\n /** Localisations for the plugin.\n Entries are objects indexed by the language code ('' being the default US/English).\n Each object has the following attributes.\n @memberof ChineseCalendar\n @property name {string} The calendar name.\n @property epochs {string[]} The epoch names.\n @property monthNames {string[]} The long names of the months of the year.\n @property monthNamesShort {string[]} The short names of the months of the year.\n @property dayNames {string[]} The long names of the days of the week.\n @property dayNamesShort {string[]} The short names of the days of the week.\n @property dayNamesMin {string[]} The minimal names of the days of the week.\n @property dateFormat {string} The date format for this calendar.\n See the options on formatDate for details.\n @property firstDay {number} The number of the first day of the week, starting at 0.\n @property isRTL {number} true if this localisation reads right-to-left. */\n regionalOptions: {\n // Localisations\n \"\": {\n name: \"Chinese\",\n epochs: [\"BEC\", \"EC\"],\n monthNumbers: function(date, padded) {\n if (typeof date === \"string\") {\n var match = date.match(MONTH_NUMBER_REGEXP);\n return match ? match[0] : \"\";\n }\n var year = this._validateYear(date);\n var monthIndex = date.month();\n var month = \"\" + this.toChineseMonth(year, monthIndex);\n if (padded && month.length < 2) {\n month = \"0\" + month;\n }\n if (this.isIntercalaryMonth(year, monthIndex)) {\n month += \"i\";\n }\n return month;\n },\n monthNames: function(date) {\n if (typeof date === \"string\") {\n var match = date.match(MONTH_NAME_REGEXP);\n return match ? match[0] : \"\";\n }\n var year = this._validateYear(date);\n var monthIndex = date.month();\n var month = this.toChineseMonth(year, monthIndex);\n var monthName = [\n \"\\u4E00\\u6708\",\n \"\\u4E8C\\u6708\",\n \"\\u4E09\\u6708\",\n \"\\u56DB\\u6708\",\n \"\\u4E94\\u6708\",\n \"\\u516D\\u6708\",\n \"\\u4E03\\u6708\",\n \"\\u516B\\u6708\",\n \"\\u4E5D\\u6708\",\n \"\\u5341\\u6708\",\n \"\\u5341\\u4E00\\u6708\",\n \"\\u5341\\u4E8C\\u6708\"\n ][month - 1];\n if (this.isIntercalaryMonth(year, monthIndex)) {\n monthName = \"\\u95F0\" + monthName;\n }\n return monthName;\n },\n monthNamesShort: function(date) {\n if (typeof date === \"string\") {\n var match = date.match(MONTH_SHORT_NAME_REGEXP);\n return match ? match[0] : \"\";\n }\n var year = this._validateYear(date);\n var monthIndex = date.month();\n var month = this.toChineseMonth(year, monthIndex);\n var monthName = [\n \"\\u4E00\",\n \"\\u4E8C\",\n \"\\u4E09\",\n \"\\u56DB\",\n \"\\u4E94\",\n \"\\u516D\",\n \"\\u4E03\",\n \"\\u516B\",\n \"\\u4E5D\",\n \"\\u5341\",\n \"\\u5341\\u4E00\",\n \"\\u5341\\u4E8C\"\n ][month - 1];\n if (this.isIntercalaryMonth(year, monthIndex)) {\n monthName = \"\\u95F0\" + monthName;\n }\n return monthName;\n },\n parseMonth: function(year, monthString) {\n year = this._validateYear(year);\n var month = parseInt(monthString);\n var isIntercalary;\n if (!isNaN(month)) {\n var i = monthString[monthString.length - 1];\n isIntercalary = i === \"i\" || i === \"I\";\n } else {\n if (monthString[0] === \"\\u95F0\") {\n isIntercalary = true;\n monthString = monthString.substring(1);\n }\n if (monthString[monthString.length - 1] === \"\\u6708\") {\n monthString = monthString.substring(0, monthString.length - 1);\n }\n month = 1 + [\n \"\\u4E00\",\n \"\\u4E8C\",\n \"\\u4E09\",\n \"\\u56DB\",\n \"\\u4E94\",\n \"\\u516D\",\n \"\\u4E03\",\n \"\\u516B\",\n \"\\u4E5D\",\n \"\\u5341\",\n \"\\u5341\\u4E00\",\n \"\\u5341\\u4E8C\"\n ].indexOf(monthString);\n }\n var monthIndex = this.toMonthIndex(year, month, isIntercalary);\n return monthIndex;\n },\n dayNames: [\"Sunday\", \"Monday\", \"Tuesday\", \"Wednesday\", \"Thursday\", \"Friday\", \"Saturday\"],\n dayNamesShort: [\"Sun\", \"Mon\", \"Tue\", \"Wed\", \"Thu\", \"Fri\", \"Sat\"],\n dayNamesMin: [\"Su\", \"Mo\", \"Tu\", \"We\", \"Th\", \"Fr\", \"Sa\"],\n digits: null,\n dateFormat: \"yyyy/mm/dd\",\n firstDay: 1,\n isRTL: false\n }\n },\n /** Check that a candidate date is from the same calendar and is valid.\n @memberof BaseCalendar\n @private\n @param year {CDate|number} The date or the year to validate.\n @param error {string} Error message if invalid.\n @return {number} The year.\n @throws Error if year out of range. */\n _validateYear: function(year, error) {\n if (year.year) {\n year = year.year();\n }\n if (typeof year !== \"number\" || year < 1888 || year > 2111) {\n throw error.replace(/\\{0\\}/, this.local.name);\n }\n return year;\n },\n /** Retrieve the month index (i.e. accounting for intercalary months).\n @memberof ChineseCalendar\n @param year {number} The year.\n @param month {number} The month (1 for first month).\n @param [isIntercalary=false] {boolean} If month is intercalary.\n @return {number} The month index (0 for first month).\n @throws Error if an invalid month/year or a different calendar used. */\n toMonthIndex: function(year, month, isIntercalary) {\n var intercalaryMonth = this.intercalaryMonth(year);\n var invalidIntercalaryMonth = isIntercalary && month !== intercalaryMonth;\n if (invalidIntercalaryMonth || month < 1 || month > 12) {\n throw main.local.invalidMonth.replace(/\\{0\\}/, this.local.name);\n }\n var monthIndex;\n if (!intercalaryMonth) {\n monthIndex = month - 1;\n } else if (!isIntercalary && month <= intercalaryMonth) {\n monthIndex = month - 1;\n } else {\n monthIndex = month;\n }\n return monthIndex;\n },\n /** Retrieve the month (i.e. accounting for intercalary months).\n @memberof ChineseCalendar\n @param year {CDate|number} The date or the year to examine.\n @param monthIndex {number} The month index (0 for first month).\n @return {number} The month (1 for first month).\n @throws Error if an invalid month/year or a different calendar used. */\n toChineseMonth: function(year, monthIndex) {\n if (year.year) {\n year = year.year();\n monthIndex = year.month();\n }\n var intercalaryMonth = this.intercalaryMonth(year);\n var maxMonthIndex = intercalaryMonth ? 12 : 11;\n if (monthIndex < 0 || monthIndex > maxMonthIndex) {\n throw main.local.invalidMonth.replace(/\\{0\\}/, this.local.name);\n }\n var month;\n if (!intercalaryMonth) {\n month = monthIndex + 1;\n } else if (monthIndex < intercalaryMonth) {\n month = monthIndex + 1;\n } else {\n month = monthIndex;\n }\n return month;\n },\n /** Determine the intercalary month of a year (if any).\n @memberof ChineseCalendar\n @param year {CDate|number} The date to examine or the year to examine.\n @return {number} The intercalary month number, or 0 if none.\n @throws Error if an invalid year or a different calendar used. */\n intercalaryMonth: function(year) {\n year = this._validateYear(year);\n var monthDaysTable = LUNAR_MONTH_DAYS[year - LUNAR_MONTH_DAYS[0]];\n var intercalaryMonth = monthDaysTable >> 13;\n return intercalaryMonth;\n },\n /** Determine whether this date is an intercalary month.\n @memberof ChineseCalendar\n @param year {CDate|number} The date to examine or the year to examine.\n @param [monthIndex] {number} The month index to examine.\n @return {boolean} true if this is an intercalary month, false if not.\n @throws Error if an invalid year or a different calendar used. */\n isIntercalaryMonth: function(year, monthIndex) {\n if (year.year) {\n year = year.year();\n monthIndex = year.month();\n }\n var intercalaryMonth = this.intercalaryMonth(year);\n return !!intercalaryMonth && intercalaryMonth === monthIndex;\n },\n /** Determine whether this date is in a leap year.\n @memberof ChineseCalendar\n @param year {CDate|number} The date to examine or the year to examine.\n @return {boolean} true if this is a leap year, false if not.\n @throws Error if an invalid year or a different calendar used. */\n leapYear: function(year) {\n return this.intercalaryMonth(year) !== 0;\n },\n /** Determine the week of the year for a date - ISO 8601.\n @memberof ChineseCalendar\n @param year {CDate|number} The date to examine or the year to examine.\n @param [monthIndex] {number} The month index to examine.\n @param [day] {number} The day to examine.\n @return {number} The week of the year.\n @throws Error if an invalid date or a different calendar used. */\n weekOfYear: function(year, monthIndex, day) {\n var validatedYear = this._validateYear(year, main.local.invalidyear);\n var packedDate = CHINESE_NEW_YEAR[validatedYear - CHINESE_NEW_YEAR[0]];\n var y = packedDate >> 9 & 4095;\n var m = packedDate >> 5 & 15;\n var d = packedDate & 31;\n var firstThursday;\n firstThursday = gregorianCalendar.newDate(y, m, d);\n firstThursday.add(4 - (firstThursday.dayOfWeek() || 7), \"d\");\n var offset = this.toJD(year, monthIndex, day) - firstThursday.toJD();\n return 1 + Math.floor(offset / 7);\n },\n /** Retrieve the number of months in a year.\n @memberof ChineseCalendar\n @param year {CDate|number} The date to examine or the year to examine.\n @return {number} The number of months.\n @throws Error if an invalid year or a different calendar used. */\n monthsInYear: function(year) {\n return this.leapYear(year) ? 13 : 12;\n },\n /** Retrieve the number of days in a month.\n @memberof ChineseCalendar\n @param year {CDate|number} The date to examine or the year of the month.\n @param [monthIndex] {number} The month index.\n @return {number} The number of days in this month.\n @throws Error if an invalid month/year or a different calendar used. */\n daysInMonth: function(year, monthIndex) {\n if (year.year) {\n monthIndex = year.month();\n year = year.year();\n }\n year = this._validateYear(year);\n var monthDaysTable = LUNAR_MONTH_DAYS[year - LUNAR_MONTH_DAYS[0]];\n var intercalaryMonth = monthDaysTable >> 13;\n var maxMonthIndex = intercalaryMonth ? 12 : 11;\n if (monthIndex > maxMonthIndex) {\n throw main.local.invalidMonth.replace(/\\{0\\}/, this.local.name);\n }\n var daysInMonth = monthDaysTable & 1 << 12 - monthIndex ? 30 : 29;\n return daysInMonth;\n },\n /** Determine whether this date is a week day.\n @memberof ChineseCalendar\n @param year {CDate|number} The date to examine or the year to examine.\n @param [monthIndex] {number} The month index to examine.\n @param [day] {number} The day to examine.\n @return {boolean} true if a week day, false if not.\n @throws Error if an invalid date or a different calendar used. */\n weekDay: function(year, monthIndex, day) {\n return (this.dayOfWeek(year, monthIndex, day) || 7) < 6;\n },\n /** Retrieve the Julian date equivalent for this date,\n i.e. days since January 1, 4713 BCE Greenwich noon.\n @memberof ChineseCalendar\n @param year {CDate|number} The date to convert or the year to convert.\n @param [monthIndex] {number} The month index to convert.\n @param [day] {number} The day to convert.\n @return {number} The equivalent Julian date.\n @throws Error if an invalid date or a different calendar used. */\n toJD: function(year, monthIndex, day) {\n var date = this._validate(year, month, day, main.local.invalidDate);\n year = this._validateYear(date.year());\n monthIndex = date.month();\n day = date.day();\n var isIntercalary = this.isIntercalaryMonth(year, monthIndex);\n var month = this.toChineseMonth(year, monthIndex);\n var solar = toSolar(year, month, day, isIntercalary);\n return gregorianCalendar.toJD(solar.year, solar.month, solar.day);\n },\n /** Create a new date from a Julian date.\n @memberof ChineseCalendar\n @param jd {number} The Julian date to convert.\n @return {CDate} The equivalent date. */\n fromJD: function(jd) {\n var date = gregorianCalendar.fromJD(jd);\n var lunar = toLunar(date.year(), date.month(), date.day());\n var monthIndex = this.toMonthIndex(\n lunar.year,\n lunar.month,\n lunar.isIntercalary\n );\n return this.newDate(lunar.year, monthIndex, lunar.day);\n },\n /** Create a new date from a string.\n @memberof ChineseCalendar\n @param dateString {string} String representing a Chinese date\n @return {CDate} The new date.\n @throws Error if an invalid date. */\n fromString: function(dateString) {\n var match = dateString.match(DATE_REGEXP);\n var year = this._validateYear(+match[1]);\n var month = +match[2];\n var isIntercalary = !!match[3];\n var monthIndex = this.toMonthIndex(year, month, isIntercalary);\n var day = +match[4];\n return this.newDate(year, monthIndex, day);\n },\n /** Add period(s) to a date.\n Cater for no year zero.\n @memberof ChineseCalendar\n @param date {CDate} The starting date.\n @param offset {number} The number of periods to adjust by.\n @param period {string} One of 'y' for year, 'm' for month, 'w' for week, 'd' for day.\n @return {CDate} The updated date.\n @throws Error if a different calendar used. */\n add: function(date, offset, period) {\n var year = date.year();\n var monthIndex = date.month();\n var isIntercalary = this.isIntercalaryMonth(year, monthIndex);\n var month = this.toChineseMonth(year, monthIndex);\n var cdate = Object.getPrototypeOf(ChineseCalendar.prototype).add.call(this, date, offset, period);\n if (period === \"y\") {\n var resultYear = cdate.year();\n var resultMonthIndex = cdate.month();\n var resultCanBeIntercalaryMonth = this.isIntercalaryMonth(resultYear, month);\n var correctedMonthIndex = isIntercalary && resultCanBeIntercalaryMonth ? this.toMonthIndex(resultYear, month, true) : this.toMonthIndex(resultYear, month, false);\n if (correctedMonthIndex !== resultMonthIndex) {\n cdate.month(correctedMonthIndex);\n }\n }\n return cdate;\n }\n });\n var DATE_REGEXP = /^\\s*(-?\\d\\d\\d\\d|\\d\\d)[-/](\\d?\\d)([iI]?)[-/](\\d?\\d)/m;\n var MONTH_NUMBER_REGEXP = /^\\d?\\d[iI]?/m;\n var MONTH_NAME_REGEXP = /^闰?十?[一二三四五六七八九]?月/m;\n var MONTH_SHORT_NAME_REGEXP = /^闰?十?[一二三四五六七八九]?/m;\n main.calendars.chinese = ChineseCalendar;\n var LUNAR_MONTH_DAYS = [\n 1887,\n 5780,\n 5802,\n 19157,\n 2742,\n 50359,\n 1198,\n 2646,\n 46378,\n 7466,\n 3412,\n 30122,\n 5482,\n 67949,\n 2396,\n 5294,\n 43597,\n 6732,\n 6954,\n 36181,\n 2772,\n 4954,\n 18781,\n 2396,\n 54427,\n 5274,\n 6730,\n 47781,\n 5800,\n 6868,\n 21210,\n 4790,\n 59703,\n 2350,\n 5270,\n 46667,\n 3402,\n 3496,\n 38325,\n 1388,\n 4782,\n 18735,\n 2350,\n 52374,\n 6804,\n 7498,\n 44457,\n 2906,\n 1388,\n 29294,\n 4700,\n 63789,\n 6442,\n 6804,\n 56138,\n 5802,\n 2772,\n 38235,\n 1210,\n 4698,\n 22827,\n 5418,\n 63125,\n 3476,\n 5802,\n 43701,\n 2484,\n 5302,\n 27223,\n 2646,\n 70954,\n 7466,\n 3412,\n 54698,\n 5482,\n 2412,\n 38062,\n 5294,\n 2636,\n 32038,\n 6954,\n 60245,\n 2772,\n 4826,\n 43357,\n 2394,\n 5274,\n 39501,\n 6730,\n 72357,\n 5800,\n 5844,\n 53978,\n 4790,\n 2358,\n 38039,\n 5270,\n 87627,\n 3402,\n 3496,\n 54708,\n 5484,\n 4782,\n 43311,\n 2350,\n 3222,\n 27978,\n 7498,\n 68965,\n 2904,\n 5484,\n 45677,\n 4700,\n 6444,\n 39573,\n 6804,\n 6986,\n 19285,\n 2772,\n 62811,\n 1210,\n 4698,\n 47403,\n 5418,\n 5780,\n 38570,\n 5546,\n 76469,\n 2420,\n 5302,\n 51799,\n 2646,\n 5414,\n 36501,\n 3412,\n 5546,\n 18869,\n 2412,\n 54446,\n 5276,\n 6732,\n 48422,\n 6822,\n 2900,\n 28010,\n 4826,\n 92509,\n 2394,\n 5274,\n 55883,\n 6730,\n 6820,\n 47956,\n 5812,\n 2778,\n 18779,\n 2358,\n 62615,\n 5270,\n 5450,\n 46757,\n 3492,\n 5556,\n 27318,\n 4718,\n 67887,\n 2350,\n 3222,\n 52554,\n 7498,\n 3428,\n 38252,\n 5468,\n 4700,\n 31022,\n 6444,\n 64149,\n 6804,\n 6986,\n 43861,\n 2772,\n 5338,\n 35421,\n 2650,\n 70955,\n 5418,\n 5780,\n 54954,\n 5546,\n 2740,\n 38074,\n 5302,\n 2646,\n 29991,\n 3366,\n 61011,\n 3412,\n 5546,\n 43445,\n 2412,\n 5294,\n 35406,\n 6732,\n 72998,\n 6820,\n 6996,\n 52586,\n 2778,\n 2396,\n 38045,\n 5274,\n 6698,\n 23333,\n 6820,\n 64338,\n 5812,\n 2746,\n 43355,\n 2358,\n 5270,\n 39499,\n 5450,\n 79525,\n 3492,\n 5548\n ];\n var CHINESE_NEW_YEAR = [\n 1887,\n 966732,\n 967231,\n 967733,\n 968265,\n 968766,\n 969297,\n 969798,\n 970298,\n 970829,\n 971330,\n 971830,\n 972362,\n 972863,\n 973395,\n 973896,\n 974397,\n 974928,\n 975428,\n 975929,\n 976461,\n 976962,\n 977462,\n 977994,\n 978494,\n 979026,\n 979526,\n 980026,\n 980558,\n 981059,\n 981559,\n 982091,\n 982593,\n 983124,\n 983624,\n 984124,\n 984656,\n 985157,\n 985656,\n 986189,\n 986690,\n 987191,\n 987722,\n 988222,\n 988753,\n 989254,\n 989754,\n 990286,\n 990788,\n 991288,\n 991819,\n 992319,\n 992851,\n 993352,\n 993851,\n 994383,\n 994885,\n 995385,\n 995917,\n 996418,\n 996918,\n 997450,\n 997949,\n 998481,\n 998982,\n 999483,\n 1000014,\n 1000515,\n 1001016,\n 1001548,\n 1002047,\n 1002578,\n 1003080,\n 1003580,\n 1004111,\n 1004613,\n 1005113,\n 1005645,\n 1006146,\n 1006645,\n 1007177,\n 1007678,\n 1008209,\n 1008710,\n 1009211,\n 1009743,\n 1010243,\n 1010743,\n 1011275,\n 1011775,\n 1012306,\n 1012807,\n 1013308,\n 1013840,\n 1014341,\n 1014841,\n 1015373,\n 1015874,\n 1016404,\n 1016905,\n 1017405,\n 1017937,\n 1018438,\n 1018939,\n 1019471,\n 1019972,\n 1020471,\n 1021002,\n 1021503,\n 1022035,\n 1022535,\n 1023036,\n 1023568,\n 1024069,\n 1024568,\n 1025100,\n 1025601,\n 1026102,\n 1026633,\n 1027133,\n 1027666,\n 1028167,\n 1028666,\n 1029198,\n 1029699,\n 1030199,\n 1030730,\n 1031231,\n 1031763,\n 1032264,\n 1032764,\n 1033296,\n 1033797,\n 1034297,\n 1034828,\n 1035329,\n 1035830,\n 1036362,\n 1036861,\n 1037393,\n 1037894,\n 1038394,\n 1038925,\n 1039427,\n 1039927,\n 1040459,\n 1040959,\n 1041491,\n 1041992,\n 1042492,\n 1043023,\n 1043524,\n 1044024,\n 1044556,\n 1045057,\n 1045558,\n 1046090,\n 1046590,\n 1047121,\n 1047622,\n 1048122,\n 1048654,\n 1049154,\n 1049655,\n 1050187,\n 1050689,\n 1051219,\n 1051720,\n 1052220,\n 1052751,\n 1053252,\n 1053752,\n 1054284,\n 1054786,\n 1055285,\n 1055817,\n 1056317,\n 1056849,\n 1057349,\n 1057850,\n 1058382,\n 1058883,\n 1059383,\n 1059915,\n 1060415,\n 1060947,\n 1061447,\n 1061947,\n 1062479,\n 1062981,\n 1063480,\n 1064012,\n 1064514,\n 1065014,\n 1065545,\n 1066045,\n 1066577,\n 1067078,\n 1067578,\n 1068110,\n 1068611,\n 1069112,\n 1069642,\n 1070142,\n 1070674,\n 1071175,\n 1071675,\n 1072207,\n 1072709,\n 1073209,\n 1073740,\n 1074241,\n 1074741,\n 1075273,\n 1075773,\n 1076305,\n 1076807,\n 1077308,\n 1077839,\n 1078340,\n 1078840,\n 1079372,\n 1079871,\n 1080403,\n 1080904\n ];\n function toLunar(yearOrDate, monthOrResult, day, result) {\n var solarDate;\n var lunarDate;\n if (typeof yearOrDate === \"object\") {\n solarDate = yearOrDate;\n lunarDate = monthOrResult || {};\n } else {\n var isValidYear = typeof yearOrDate === \"number\" && yearOrDate >= 1888 && yearOrDate <= 2111;\n if (!isValidYear)\n throw new Error(\"Solar year outside range 1888-2111\");\n var isValidMonth = typeof monthOrResult === \"number\" && monthOrResult >= 1 && monthOrResult <= 12;\n if (!isValidMonth)\n throw new Error(\"Solar month outside range 1 - 12\");\n var isValidDay = typeof day === \"number\" && day >= 1 && day <= 31;\n if (!isValidDay)\n throw new Error(\"Solar day outside range 1 - 31\");\n solarDate = {\n year: yearOrDate,\n month: monthOrResult,\n day\n };\n lunarDate = result || {};\n }\n var chineseNewYearPackedDate = CHINESE_NEW_YEAR[solarDate.year - CHINESE_NEW_YEAR[0]];\n var packedDate = solarDate.year << 9 | solarDate.month << 5 | solarDate.day;\n lunarDate.year = packedDate >= chineseNewYearPackedDate ? solarDate.year : solarDate.year - 1;\n chineseNewYearPackedDate = CHINESE_NEW_YEAR[lunarDate.year - CHINESE_NEW_YEAR[0]];\n var y = chineseNewYearPackedDate >> 9 & 4095;\n var m = chineseNewYearPackedDate >> 5 & 15;\n var d = chineseNewYearPackedDate & 31;\n var daysFromNewYear;\n var chineseNewYearJSDate = new Date(y, m - 1, d);\n var jsDate = new Date(solarDate.year, solarDate.month - 1, solarDate.day);\n daysFromNewYear = Math.round(\n (jsDate - chineseNewYearJSDate) / (24 * 3600 * 1e3)\n );\n var monthDaysTable = LUNAR_MONTH_DAYS[lunarDate.year - LUNAR_MONTH_DAYS[0]];\n var i;\n for (i = 0; i < 13; i++) {\n var daysInMonth = monthDaysTable & 1 << 12 - i ? 30 : 29;\n if (daysFromNewYear < daysInMonth) {\n break;\n }\n daysFromNewYear -= daysInMonth;\n }\n var intercalaryMonth = monthDaysTable >> 13;\n if (!intercalaryMonth || i < intercalaryMonth) {\n lunarDate.isIntercalary = false;\n lunarDate.month = 1 + i;\n } else if (i === intercalaryMonth) {\n lunarDate.isIntercalary = true;\n lunarDate.month = i;\n } else {\n lunarDate.isIntercalary = false;\n lunarDate.month = i;\n }\n lunarDate.day = 1 + daysFromNewYear;\n return lunarDate;\n }\n function toSolar(yearOrDate, monthOrResult, day, isIntercalaryOrResult, result) {\n var solarDate;\n var lunarDate;\n if (typeof yearOrDate === \"object\") {\n lunarDate = yearOrDate;\n solarDate = monthOrResult || {};\n } else {\n var isValidYear = typeof yearOrDate === \"number\" && yearOrDate >= 1888 && yearOrDate <= 2111;\n if (!isValidYear)\n throw new Error(\"Lunar year outside range 1888-2111\");\n var isValidMonth = typeof monthOrResult === \"number\" && monthOrResult >= 1 && monthOrResult <= 12;\n if (!isValidMonth)\n throw new Error(\"Lunar month outside range 1 - 12\");\n var isValidDay = typeof day === \"number\" && day >= 1 && day <= 30;\n if (!isValidDay)\n throw new Error(\"Lunar day outside range 1 - 30\");\n var isIntercalary;\n if (typeof isIntercalaryOrResult === \"object\") {\n isIntercalary = false;\n solarDate = isIntercalaryOrResult;\n } else {\n isIntercalary = !!isIntercalaryOrResult;\n solarDate = result || {};\n }\n lunarDate = {\n year: yearOrDate,\n month: monthOrResult,\n day,\n isIntercalary\n };\n }\n var daysFromNewYear;\n daysFromNewYear = lunarDate.day - 1;\n var monthDaysTable = LUNAR_MONTH_DAYS[lunarDate.year - LUNAR_MONTH_DAYS[0]];\n var intercalaryMonth = monthDaysTable >> 13;\n var monthsFromNewYear;\n if (!intercalaryMonth) {\n monthsFromNewYear = lunarDate.month - 1;\n } else if (lunarDate.month > intercalaryMonth) {\n monthsFromNewYear = lunarDate.month;\n } else if (lunarDate.isIntercalary) {\n monthsFromNewYear = lunarDate.month;\n } else {\n monthsFromNewYear = lunarDate.month - 1;\n }\n for (var i = 0; i < monthsFromNewYear; i++) {\n var daysInMonth = monthDaysTable & 1 << 12 - i ? 30 : 29;\n daysFromNewYear += daysInMonth;\n }\n var packedDate = CHINESE_NEW_YEAR[lunarDate.year - CHINESE_NEW_YEAR[0]];\n var y = packedDate >> 9 & 4095;\n var m = packedDate >> 5 & 15;\n var d = packedDate & 31;\n var jsDate = new Date(y, m - 1, d + daysFromNewYear);\n solarDate.year = jsDate.getFullYear();\n solarDate.month = 1 + jsDate.getMonth();\n solarDate.day = jsDate.getDate();\n return solarDate;\n }\n }\n });\n\n // node_modules/world-calendars/dist/calendars/coptic.js\n var require_coptic = __commonJS({\n \"node_modules/world-calendars/dist/calendars/coptic.js\"() {\n var main = require_main();\n var assign = require_object_assign();\n function CopticCalendar(language) {\n this.local = this.regionalOptions[language || \"\"] || this.regionalOptions[\"\"];\n }\n CopticCalendar.prototype = new main.baseCalendar();\n assign(CopticCalendar.prototype, {\n /** The calendar name.\n @memberof CopticCalendar */\n name: \"Coptic\",\n /** Julian date of start of Coptic epoch: 29 August 284 CE (Gregorian).\n @memberof CopticCalendar */\n jdEpoch: 18250295e-1,\n /** Days per month in a common year.\n @memberof CopticCalendar */\n daysPerMonth: [30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 5],\n /** true if has a year zero, false if not.\n @memberof CopticCalendar */\n hasYearZero: false,\n /** The minimum month number.\n @memberof CopticCalendar */\n minMonth: 1,\n /** The first month in the year.\n @memberof CopticCalendar */\n firstMonth: 1,\n /** The minimum day number.\n @memberof CopticCalendar */\n minDay: 1,\n /** Localisations for the plugin.\n Entries are objects indexed by the language code ('' being the default US/English).\n Each object has the following attributes.\n @memberof CopticCalendar\n @property name {string} The calendar name.\n @property epochs {string[]} The epoch names.\n @property monthNames {string[]} The long names of the months of the year.\n @property monthNamesShort {string[]} The short names of the months of the year.\n @property dayNames {string[]} The long names of the days of the week.\n @property dayNamesShort {string[]} The short names of the days of the week.\n @property dayNamesMin {string[]} The minimal names of the days of the week.\n @property dateFormat {string} The date format for this calendar.\n See the options on formatDate for details.\n @property firstDay {number} The number of the first day of the week, starting at 0.\n @property isRTL {number} true if this localisation reads right-to-left. */\n regionalOptions: {\n // Localisations\n \"\": {\n name: \"Coptic\",\n epochs: [\"BAM\", \"AM\"],\n monthNames: [\n \"Thout\",\n \"Paopi\",\n \"Hathor\",\n \"Koiak\",\n \"Tobi\",\n \"Meshir\",\n \"Paremhat\",\n \"Paremoude\",\n \"Pashons\",\n \"Paoni\",\n \"Epip\",\n \"Mesori\",\n \"Pi Kogi Enavot\"\n ],\n monthNamesShort: [\n \"Tho\",\n \"Pao\",\n \"Hath\",\n \"Koi\",\n \"Tob\",\n \"Mesh\",\n \"Pat\",\n \"Pad\",\n \"Pash\",\n \"Pao\",\n \"Epi\",\n \"Meso\",\n \"PiK\"\n ],\n dayNames: [\"Tkyriaka\", \"Pesnau\", \"Pshoment\", \"Peftoou\", \"Ptiou\", \"Psoou\", \"Psabbaton\"],\n dayNamesShort: [\"Tky\", \"Pes\", \"Psh\", \"Pef\", \"Pti\", \"Pso\", \"Psa\"],\n dayNamesMin: [\"Tk\", \"Pes\", \"Psh\", \"Pef\", \"Pt\", \"Pso\", \"Psa\"],\n digits: null,\n dateFormat: \"dd/mm/yyyy\",\n firstDay: 0,\n isRTL: false\n }\n },\n /** Determine whether this date is in a leap year.\n @memberof CopticCalendar\n @param year {CDate|number} The date to examine or the year to examine.\n @return {boolean} true if this is a leap year, false if not.\n @throws Error if an invalid year or a different calendar used. */\n leapYear: function(year) {\n var date = this._validate(year, this.minMonth, this.minDay, main.local.invalidYear);\n var year = date.year() + (date.year() < 0 ? 1 : 0);\n return year % 4 === 3 || year % 4 === -1;\n },\n /** Retrieve the number of months in a year.\n @memberof CopticCalendar\n @param year {CDate|number} The date to examine or the year to examine.\n @return {number} The number of months.\n @throws Error if an invalid year or a different calendar used. */\n monthsInYear: function(year) {\n this._validate(\n year,\n this.minMonth,\n this.minDay,\n main.local.invalidYear || main.regionalOptions[\"\"].invalidYear\n );\n return 13;\n },\n /** Determine the week of the year for a date.\n @memberof CopticCalendar\n @param year {CDate|number} The date to examine or the year to examine.\n @param [month] {number) the month to examine.\n @param [day] {number} The day to examine.\n @return {number} The week of the year.\n @throws Error if an invalid date or a different calendar used. */\n weekOfYear: function(year, month, day) {\n var checkDate = this.newDate(year, month, day);\n checkDate.add(-checkDate.dayOfWeek(), \"d\");\n return Math.floor((checkDate.dayOfYear() - 1) / 7) + 1;\n },\n /** Retrieve the number of days in a month.\n @memberof CopticCalendar\n @param year {CDate|number} The date to examine or the year of the month.\n @param [month] {number} The month.\n @return {number} The number of days in this month.\n @throws Error if an invalid month/year or a different calendar used. */\n daysInMonth: function(year, month) {\n var date = this._validate(year, month, this.minDay, main.local.invalidMonth);\n return this.daysPerMonth[date.month() - 1] + (date.month() === 13 && this.leapYear(date.year()) ? 1 : 0);\n },\n /** Determine whether this date is a week day.\n @memberof CopticCalendar\n @param year {CDate|number} The date to examine or the year to examine.\n @param month {number} The month to examine.\n @param day {number} The day to examine.\n @return {boolean} true if a week day, false if not.\n @throws Error if an invalid date or a different calendar used. */\n weekDay: function(year, month, day) {\n return (this.dayOfWeek(year, month, day) || 7) < 6;\n },\n /** Retrieve the Julian date equivalent for this date,\n i.e. days since January 1, 4713 BCE Greenwich noon.\n @memberof CopticCalendar\n @param year {CDate|number} The date to convert or the year to convert.\n @param [month] {number) the month to convert.\n @param [day] {number} The day to convert.\n @return {number} The equivalent Julian date.\n @throws Error if an invalid date or a different calendar used. */\n toJD: function(year, month, day) {\n var date = this._validate(year, month, day, main.local.invalidDate);\n year = date.year();\n if (year < 0) {\n year++;\n }\n return date.day() + (date.month() - 1) * 30 + (year - 1) * 365 + Math.floor(year / 4) + this.jdEpoch - 1;\n },\n /** Create a new date from a Julian date.\n @memberof CopticCalendar\n @param jd {number} The Julian date to convert.\n @return {CDate} The equivalent date. */\n fromJD: function(jd) {\n var c = Math.floor(jd) + 0.5 - this.jdEpoch;\n var year = Math.floor((c - Math.floor((c + 366) / 1461)) / 365) + 1;\n if (year <= 0) {\n year--;\n }\n c = Math.floor(jd) + 0.5 - this.newDate(year, 1, 1).toJD();\n var month = Math.floor(c / 30) + 1;\n var day = c - (month - 1) * 30 + 1;\n return this.newDate(year, month, day);\n }\n });\n main.calendars.coptic = CopticCalendar;\n }\n });\n\n // node_modules/world-calendars/dist/calendars/discworld.js\n var require_discworld = __commonJS({\n \"node_modules/world-calendars/dist/calendars/discworld.js\"() {\n var main = require_main();\n var assign = require_object_assign();\n function DiscworldCalendar(language) {\n this.local = this.regionalOptions[language || \"\"] || this.regionalOptions[\"\"];\n }\n DiscworldCalendar.prototype = new main.baseCalendar();\n assign(DiscworldCalendar.prototype, {\n /** The calendar name.\n @memberof DiscworldCalendar */\n name: \"Discworld\",\n /** Julian date of start of Discworld epoch: 1 January 0001 CE.\n @memberof DiscworldCalendar */\n jdEpoch: 17214255e-1,\n /** Days per month in a common year.\n @memberof DiscworldCalendar */\n daysPerMonth: [16, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32],\n /** true if has a year zero, false if not.\n @memberof DiscworldCalendar */\n hasYearZero: false,\n /** The minimum month number.\n @memberof DiscworldCalendar */\n minMonth: 1,\n /** The first month in the year.\n @memberof DiscworldCalendar */\n firstMonth: 1,\n /** The minimum day number.\n @memberof DiscworldCalendar */\n minDay: 1,\n /** Localisations for the plugin.\n Entries are objects indexed by the language code ('' being the default US/English).\n Each object has the following attributes.\n @memberof DiscworldCalendar\n @property name {string} The calendar name.\n @property epochs {string[]} The epoch names.\n @property monthNames {string[]} The long names of the months of the year.\n @property monthNamesShort {string[]} The short names of the months of the year.\n @property dayNames {string[]} The long names of the days of the week.\n @property dayNamesShort {string[]} The short names of the days of the week.\n @property dayNamesMin {string[]} The minimal names of the days of the week.\n @property dateFormat {string} The date format for this calendar.\n See the options on formatDate for details.\n @property firstDay {number} The number of the first day of the week, starting at 0.\n @property isRTL {number} true if this localisation reads right-to-left. */\n regionalOptions: {\n // Localisations\n \"\": {\n name: \"Discworld\",\n epochs: [\"BUC\", \"UC\"],\n monthNames: [\n \"Ick\",\n \"Offle\",\n \"February\",\n \"March\",\n \"April\",\n \"May\",\n \"June\",\n \"Grune\",\n \"August\",\n \"Spune\",\n \"Sektober\",\n \"Ember\",\n \"December\"\n ],\n monthNamesShort: [\"Ick\", \"Off\", \"Feb\", \"Mar\", \"Apr\", \"May\", \"Jun\", \"Gru\", \"Aug\", \"Spu\", \"Sek\", \"Emb\", \"Dec\"],\n dayNames: [\"Sunday\", \"Octeday\", \"Monday\", \"Tuesday\", \"Wednesday\", \"Thursday\", \"Friday\", \"Saturday\"],\n dayNamesShort: [\"Sun\", \"Oct\", \"Mon\", \"Tue\", \"Wed\", \"Thu\", \"Fri\", \"Sat\"],\n dayNamesMin: [\"Su\", \"Oc\", \"Mo\", \"Tu\", \"We\", \"Th\", \"Fr\", \"Sa\"],\n digits: null,\n dateFormat: \"yyyy/mm/dd\",\n firstDay: 2,\n isRTL: false\n }\n },\n /** Determine whether this date is in a leap year.\n @memberof DiscworldCalendar\n @param year {CDate|number} The date to examine or the year to examine.\n @return {boolean} true if this is a leap year, false if not.\n @throws Error if an invalid year or a different calendar used. */\n leapYear: function(year) {\n this._validate(year, this.minMonth, this.minDay, main.local.invalidYear);\n return false;\n },\n /** Retrieve the number of months in a year.\n @memberof DiscworldCalendar\n @param year {CDate|number} The date to examine or the year to examine.\n @return {number} The number of months.\n @throws Error if an invalid year or a different calendar used. */\n monthsInYear: function(year) {\n this._validate(year, this.minMonth, this.minDay, main.local.invalidYear);\n return 13;\n },\n /** Retrieve the number of days in a year.\n @memberof DiscworldCalendar\n @param year {CDate|number} The date to examine or the year to examine.\n @return {number} The number of days.\n @throws Error if an invalid year or a different calendar used. */\n daysInYear: function(year) {\n this._validate(year, this.minMonth, this.minDay, main.local.invalidYear);\n return 400;\n },\n /** Determine the week of the year for a date.\n @memberof DiscworldCalendar\n @param year {CDate|number} The date to examine or the year to examine.\n @param [month] {number} The month to examine.\n @param [day] {number} The day to examine.\n @return {number} The week of the year.\n @throws Error if an invalid date or a different calendar used. */\n weekOfYear: function(year, month, day) {\n var checkDate = this.newDate(year, month, day);\n checkDate.add(-checkDate.dayOfWeek(), \"d\");\n return Math.floor((checkDate.dayOfYear() - 1) / 8) + 1;\n },\n /** Retrieve the number of days in a month.\n @memberof DiscworldCalendar\n @param year {CDate|number} The date to examine or the year of the month.\n @param [month] {number} The month.\n @return {number} The number of days in this month.\n @throws Error if an invalid month/year or a different calendar used. */\n daysInMonth: function(year, month) {\n var date = this._validate(year, month, this.minDay, main.local.invalidMonth);\n return this.daysPerMonth[date.month() - 1];\n },\n /** Retrieve the number of days in a week.\n @memberof DiscworldCalendar\n @return {number} The number of days. */\n daysInWeek: function() {\n return 8;\n },\n /** Retrieve the day of the week for a date.\n @memberof DiscworldCalendar\n @param year {CDate|number} The date to examine or the year to examine.\n @param [month] {number} The month to examine.\n @param [day] {number} The day to examine.\n @return {number} The day of the week: 0 to number of days - 1.\n @throws Error if an invalid date or a different calendar used. */\n dayOfWeek: function(year, month, day) {\n var date = this._validate(year, month, day, main.local.invalidDate);\n return (date.day() + 1) % 8;\n },\n /** Determine whether this date is a week day.\n @memberof DiscworldCalendar\n @param year {CDate|number} The date to examine or the year to examine.\n @param [month] {number} The month to examine.\n @param [day] {number} The day to examine.\n @return {boolean} true if a week day, false if not.\n @throws Error if an invalid date or a different calendar used. */\n weekDay: function(year, month, day) {\n var dow = this.dayOfWeek(year, month, day);\n return dow >= 2 && dow <= 6;\n },\n /** Retrieve additional information about a date.\n @memberof DiscworldCalendar\n @param year {CDate|number} The date to examine or the year to examine.\n @param [month] {number} The month to examine.\n @param [day] {number} The day to examine.\n @return {object} Additional information - contents depends on calendar.\n @throws Error if an invalid date or a different calendar used. */\n extraInfo: function(year, month, day) {\n var date = this._validate(year, month, day, main.local.invalidDate);\n return { century: centuries[Math.floor((date.year() - 1) / 100) + 1] || \"\" };\n },\n /** Retrieve the Julian date equivalent for this date,\n i.e. days since January 1, 4713 BCE Greenwich noon.\n @memberof DiscworldCalendar\n @param year {CDate|number} The date to convert or the year to convert.\n @param [month] {number} The month to convert.\n @param [day] {number} The day to convert.\n @return {number} The equivalent Julian date.\n @throws Error if an invalid date or a different calendar used. */\n toJD: function(year, month, day) {\n var date = this._validate(year, month, day, main.local.invalidDate);\n year = date.year() + (date.year() < 0 ? 1 : 0);\n month = date.month();\n day = date.day();\n return day + (month > 1 ? 16 : 0) + (month > 2 ? (month - 2) * 32 : 0) + (year - 1) * 400 + this.jdEpoch - 1;\n },\n /** Create a new date from a Julian date.\n @memberof DiscworldCalendar\n @param jd {number} The Julian date to convert.\n @return {CDate} The equivalent date. */\n fromJD: function(jd) {\n jd = Math.floor(jd + 0.5) - Math.floor(this.jdEpoch) - 1;\n var year = Math.floor(jd / 400) + 1;\n jd -= (year - 1) * 400;\n jd += jd > 15 ? 16 : 0;\n var month = Math.floor(jd / 32) + 1;\n var day = jd - (month - 1) * 32 + 1;\n return this.newDate(year <= 0 ? year - 1 : year, month, day);\n }\n });\n var centuries = {\n 20: \"Fruitbat\",\n 21: \"Anchovy\"\n };\n main.calendars.discworld = DiscworldCalendar;\n }\n });\n\n // node_modules/world-calendars/dist/calendars/ethiopian.js\n var require_ethiopian = __commonJS({\n \"node_modules/world-calendars/dist/calendars/ethiopian.js\"() {\n var main = require_main();\n var assign = require_object_assign();\n function EthiopianCalendar(language) {\n this.local = this.regionalOptions[language || \"\"] || this.regionalOptions[\"\"];\n }\n EthiopianCalendar.prototype = new main.baseCalendar();\n assign(EthiopianCalendar.prototype, {\n /** The calendar name.\n @memberof EthiopianCalendar */\n name: \"Ethiopian\",\n /** Julian date of start of Ethiopian epoch: 27 August 8 CE (Gregorian).\n @memberof EthiopianCalendar */\n jdEpoch: 17242205e-1,\n /** Days per month in a common year.\n @memberof EthiopianCalendar */\n daysPerMonth: [30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 5],\n /** true if has a year zero, false if not.\n @memberof EthiopianCalendar */\n hasYearZero: false,\n /** The minimum month number.\n @memberof EthiopianCalendar */\n minMonth: 1,\n /** The first month in the year.\n @memberof EthiopianCalendar */\n firstMonth: 1,\n /** The minimum day number.\n @memberof EthiopianCalendar */\n minDay: 1,\n /** Localisations for the plugin.\n Entries are objects indexed by the language code ('' being the default US/English).\n Each object has the following attributes.\n @memberof EthiopianCalendar\n @property name {string} The calendar name.\n @property epochs {string[]} The epoch names.\n @property monthNames {string[]} The long names of the months of the year.\n @property monthNamesShort {string[]} The short names of the months of the year.\n @property dayNames {string[]} The long names of the days of the week.\n @property dayNamesShort {string[]} The short names of the days of the week.\n @property dayNamesMin {string[]} The minimal names of the days of the week.\n @property dateFormat {string} The date format for this calendar.\n See the options on formatDate for details.\n @property firstDay {number} The number of the first day of the week, starting at 0.\n @property isRTL {number} true if this localisation reads right-to-left. */\n regionalOptions: {\n // Localisations\n \"\": {\n name: \"Ethiopian\",\n epochs: [\"BEE\", \"EE\"],\n monthNames: [\n \"Meskerem\",\n \"Tikemet\",\n \"Hidar\",\n \"Tahesas\",\n \"Tir\",\n \"Yekatit\",\n \"Megabit\",\n \"Miazia\",\n \"Genbot\",\n \"Sene\",\n \"Hamle\",\n \"Nehase\",\n \"Pagume\"\n ],\n monthNamesShort: [\n \"Mes\",\n \"Tik\",\n \"Hid\",\n \"Tah\",\n \"Tir\",\n \"Yek\",\n \"Meg\",\n \"Mia\",\n \"Gen\",\n \"Sen\",\n \"Ham\",\n \"Neh\",\n \"Pag\"\n ],\n dayNames: [\"Ehud\", \"Segno\", \"Maksegno\", \"Irob\", \"Hamus\", \"Arb\", \"Kidame\"],\n dayNamesShort: [\"Ehu\", \"Seg\", \"Mak\", \"Iro\", \"Ham\", \"Arb\", \"Kid\"],\n dayNamesMin: [\"Eh\", \"Se\", \"Ma\", \"Ir\", \"Ha\", \"Ar\", \"Ki\"],\n digits: null,\n dateFormat: \"dd/mm/yyyy\",\n firstDay: 0,\n isRTL: false\n }\n },\n /** Determine whether this date is in a leap year.\n @memberof EthiopianCalendar\n @param year {CDate|number} The date to examine or the year to examine.\n @return {boolean} true if this is a leap year, false if not.\n @throws Error if an invalid year or a different calendar used. */\n leapYear: function(year) {\n var date = this._validate(year, this.minMonth, this.minDay, main.local.invalidYear);\n var year = date.year() + (date.year() < 0 ? 1 : 0);\n return year % 4 === 3 || year % 4 === -1;\n },\n /** Retrieve the number of months in a year.\n @memberof EthiopianCalendar\n @param year {CDate|number} The date to examine or the year to examine.\n @return {number} The number of months.\n @throws Error if an invalid year or a different calendar used. */\n monthsInYear: function(year) {\n this._validate(\n year,\n this.minMonth,\n this.minDay,\n main.local.invalidYear || main.regionalOptions[\"\"].invalidYear\n );\n return 13;\n },\n /** Determine the week of the year for a date.\n @memberof EthiopianCalendar\n @param year {CDate|number} The date to examine or the year to examine.\n @param [month] {number} The month to examine.\n @param [day] {number} The day to examine.\n @return {number} The week of the year.\n @throws Error if an invalid date or a different calendar used. */\n weekOfYear: function(year, month, day) {\n var checkDate = this.newDate(year, month, day);\n checkDate.add(-checkDate.dayOfWeek(), \"d\");\n return Math.floor((checkDate.dayOfYear() - 1) / 7) + 1;\n },\n /** Retrieve the number of days in a month.\n @memberof EthiopianCalendar\n @param year {CDate|number} The date to examine or the year of the month.\n @param [month] {number} The month.\n @return {number} The number of days in this month.\n @throws Error if an invalid month/year or a different calendar used. */\n daysInMonth: function(year, month) {\n var date = this._validate(year, month, this.minDay, main.local.invalidMonth);\n return this.daysPerMonth[date.month() - 1] + (date.month() === 13 && this.leapYear(date.year()) ? 1 : 0);\n },\n /** Determine whether this date is a week day.\n @memberof EthiopianCalendar\n @param year {CDate|number} The date to examine or the year to examine.\n @param [month] {number} The month to examine.\n @param [day] {number} The day to examine.\n @return {boolean} true if a week day, false if not.\n @throws Error if an invalid date or a different calendar used. */\n weekDay: function(year, month, day) {\n return (this.dayOfWeek(year, month, day) || 7) < 6;\n },\n /** Retrieve the Julian date equivalent for this date,\n i.e. days since January 1, 4713 BCE Greenwich noon.\n @memberof EthiopianCalendar\n @param year {CDate|number} The date to convert or the year to convert.\n @param [month] {number} The month to convert.\n @param [day] {number} The day to convert.\n @return {number} The equivalent Julian date.\n @throws Error if an invalid date or a different calendar used. */\n toJD: function(year, month, day) {\n var date = this._validate(year, month, day, main.local.invalidDate);\n year = date.year();\n if (year < 0) {\n year++;\n }\n return date.day() + (date.month() - 1) * 30 + (year - 1) * 365 + Math.floor(year / 4) + this.jdEpoch - 1;\n },\n /** Create a new date from a Julian date.\n @memberof EthiopianCalendar\n @param jd {number} the Julian date to convert.\n @return {CDate} the equivalent date. */\n fromJD: function(jd) {\n var c = Math.floor(jd) + 0.5 - this.jdEpoch;\n var year = Math.floor((c - Math.floor((c + 366) / 1461)) / 365) + 1;\n if (year <= 0) {\n year--;\n }\n c = Math.floor(jd) + 0.5 - this.newDate(year, 1, 1).toJD();\n var month = Math.floor(c / 30) + 1;\n var day = c - (month - 1) * 30 + 1;\n return this.newDate(year, month, day);\n }\n });\n main.calendars.ethiopian = EthiopianCalendar;\n }\n });\n\n // node_modules/world-calendars/dist/calendars/hebrew.js\n var require_hebrew = __commonJS({\n \"node_modules/world-calendars/dist/calendars/hebrew.js\"() {\n var main = require_main();\n var assign = require_object_assign();\n function HebrewCalendar(language) {\n this.local = this.regionalOptions[language || \"\"] || this.regionalOptions[\"\"];\n }\n HebrewCalendar.prototype = new main.baseCalendar();\n assign(HebrewCalendar.prototype, {\n /** The calendar name.\n @memberof HebrewCalendar */\n name: \"Hebrew\",\n /** Julian date of start of Hebrew epoch: 7 October 3761 BCE.\n @memberof HebrewCalendar */\n jdEpoch: 347995.5,\n /** Days per month in a common year.\n @memberof HebrewCalendar */\n daysPerMonth: [30, 29, 30, 29, 30, 29, 30, 29, 30, 29, 30, 29, 29],\n /** true if has a year zero, false if not.\n @memberof HebrewCalendar */\n hasYearZero: false,\n /** The minimum month number.\n @memberof HebrewCalendar */\n minMonth: 1,\n /** The first month in the year.\n @memberof HebrewCalendar */\n firstMonth: 7,\n /** The minimum day number.\n @memberof HebrewCalendar */\n minDay: 1,\n /** Localisations for the plugin.\n Entries are objects indexed by the language code ('' being the default US/English).\n Each object has the following attributes.\n @memberof HebrewCalendar\n @property name {string} The calendar name.\n @property epochs {string[]} The epoch names.\n @property monthNames {string[]} The long names of the months of the year.\n @property monthNamesShort {string[]} The short names of the months of the year.\n @property dayNames {string[]} The long names of the days of the week.\n @property dayNamesShort {string[]} The short names of the days of the week.\n @property dayNamesMin {string[]} The minimal names of the days of the week.\n @property dateFormat {string} The date format for this calendar.\n See the options on formatDate for details.\n @property firstDay {number} The number of the first day of the week, starting at 0.\n @property isRTL {number} true if this localisation reads right-to-left. */\n regionalOptions: {\n // Localisations\n \"\": {\n name: \"Hebrew\",\n epochs: [\"BAM\", \"AM\"],\n monthNames: [\n \"Nisan\",\n \"Iyar\",\n \"Sivan\",\n \"Tammuz\",\n \"Av\",\n \"Elul\",\n \"Tishrei\",\n \"Cheshvan\",\n \"Kislev\",\n \"Tevet\",\n \"Shevat\",\n \"Adar\",\n \"Adar II\"\n ],\n monthNamesShort: [\"Nis\", \"Iya\", \"Siv\", \"Tam\", \"Av\", \"Elu\", \"Tis\", \"Che\", \"Kis\", \"Tev\", \"She\", \"Ada\", \"Ad2\"],\n dayNames: [\"Yom Rishon\", \"Yom Sheni\", \"Yom Shlishi\", \"Yom Revi'i\", \"Yom Chamishi\", \"Yom Shishi\", \"Yom Shabbat\"],\n dayNamesShort: [\"Ris\", \"She\", \"Shl\", \"Rev\", \"Cha\", \"Shi\", \"Sha\"],\n dayNamesMin: [\"Ri\", \"She\", \"Shl\", \"Re\", \"Ch\", \"Shi\", \"Sha\"],\n digits: null,\n dateFormat: \"dd/mm/yyyy\",\n firstDay: 0,\n isRTL: false\n }\n },\n /** Determine whether this date is in a leap year.\n @memberof HebrewCalendar\n @param year {CDate|number} The date to examine or the year to examine.\n @return {boolean} true if this is a leap year, false if not.\n @throws Error if an invalid year or a different calendar used. */\n leapYear: function(year) {\n var date = this._validate(year, this.minMonth, this.minDay, main.local.invalidYear);\n return this._leapYear(date.year());\n },\n /** Determine whether this date is in a leap year.\n @memberof HebrewCalendar\n @private\n @param year {number} The year to examine.\n @return {boolean} true if this is a leap year, false if not.\n @throws Error if an invalid year or a different calendar used. */\n _leapYear: function(year) {\n year = year < 0 ? year + 1 : year;\n return mod(year * 7 + 1, 19) < 7;\n },\n /** Retrieve the number of months in a year.\n @memberof HebrewCalendar\n @param year {CDate|number} The date to examine or the year to examine.\n @return {number} The number of months.\n @throws Error if an invalid year or a different calendar used. */\n monthsInYear: function(year) {\n this._validate(year, this.minMonth, this.minDay, main.local.invalidYear);\n return this._leapYear(year.year ? year.year() : year) ? 13 : 12;\n },\n /** Determine the week of the year for a date.\n @memberof HebrewCalendar\n @param year {CDate|number} The date to examine or the year to examine.\n @param [month] {number} The month to examine.\n @param [day] {number} The day to examine.\n @return {number} The week of the year.\n @throws Error if an invalid date or a different calendar used. */\n weekOfYear: function(year, month, day) {\n var checkDate = this.newDate(year, month, day);\n checkDate.add(-checkDate.dayOfWeek(), \"d\");\n return Math.floor((checkDate.dayOfYear() - 1) / 7) + 1;\n },\n /** Retrieve the number of days in a year.\n @memberof HebrewCalendar\n @param year {CDate|number} The date to examine or the year to examine.\n @return {number} The number of days.\n @throws Error if an invalid year or a different calendar used. */\n daysInYear: function(year) {\n var date = this._validate(year, this.minMonth, this.minDay, main.local.invalidYear);\n year = date.year();\n return this.toJD(year === -1 ? 1 : year + 1, 7, 1) - this.toJD(year, 7, 1);\n },\n /** Retrieve the number of days in a month.\n @memberof HebrewCalendar\n @param year {CDate|number} The date to examine or the year of the month.\n @param [month] {number} The month.\n @return {number} The number of days in this month.\n @throws Error if an invalid month/year or a different calendar used. */\n daysInMonth: function(year, month) {\n if (year.year) {\n month = year.month();\n year = year.year();\n }\n this._validate(year, month, this.minDay, main.local.invalidMonth);\n return month === 12 && this.leapYear(year) ? 30 : (\n // Adar I\n month === 8 && mod(this.daysInYear(year), 10) === 5 ? 30 : (\n // Cheshvan in shlemah year\n month === 9 && mod(this.daysInYear(year), 10) === 3 ? 29 : (\n // Kislev in chaserah year\n this.daysPerMonth[month - 1]\n )\n )\n );\n },\n /** Determine whether this date is a week day.\n @memberof HebrewCalendar\n @param year {CDate|number} The date to examine or the year to examine.\n @param [month] {number} The month to examine.\n @param [day] {number} The day to examine.\n @return {boolean} true if a week day, false if not.\n @throws Error if an invalid date or a different calendar used. */\n weekDay: function(year, month, day) {\n return this.dayOfWeek(year, month, day) !== 6;\n },\n /** Retrieve additional information about a date - year type.\n @memberof HebrewCalendar\n @param year {CDate|number} The date to examine or the year to examine.\n @param [month] {number} The month to examine.\n @param [day] {number} The day to examine.\n @return {object} Additional information - contents depends on calendar.\n @throws Error if an invalid date or a different calendar used. */\n extraInfo: function(year, month, day) {\n var date = this._validate(year, month, day, main.local.invalidDate);\n return { yearType: (this.leapYear(date) ? \"embolismic\" : \"common\") + \" \" + [\"deficient\", \"regular\", \"complete\"][this.daysInYear(date) % 10 - 3] };\n },\n /** Retrieve the Julian date equivalent for this date,\n i.e. days since January 1, 4713 BCE Greenwich noon.\n @memberof HebrewCalendar\n @param year {CDate)|number} The date to convert or the year to convert.\n @param [month] {number} The month to convert.\n @param [day] {number} The day to convert.\n @return {number} The equivalent Julian date.\n @throws Error if an invalid date or a different calendar used. */\n toJD: function(year, month, day) {\n var date = this._validate(year, month, day, main.local.invalidDate);\n year = date.year();\n month = date.month();\n day = date.day();\n var adjYear = year <= 0 ? year + 1 : year;\n var jd = this.jdEpoch + this._delay1(adjYear) + this._delay2(adjYear) + day + 1;\n if (month < 7) {\n for (var m = 7; m <= this.monthsInYear(year); m++) {\n jd += this.daysInMonth(year, m);\n }\n for (var m = 1; m < month; m++) {\n jd += this.daysInMonth(year, m);\n }\n } else {\n for (var m = 7; m < month; m++) {\n jd += this.daysInMonth(year, m);\n }\n }\n return jd;\n },\n /** Test for delay of start of new year and to avoid\n Sunday, Wednesday, or Friday as start of the new year.\n @memberof HebrewCalendar\n @private\n @param year {number} The year to examine.\n @return {number} The days to offset by. */\n _delay1: function(year) {\n var months = Math.floor((235 * year - 234) / 19);\n var parts = 12084 + 13753 * months;\n var day = months * 29 + Math.floor(parts / 25920);\n if (mod(3 * (day + 1), 7) < 3) {\n day++;\n }\n return day;\n },\n /** Check for delay in start of new year due to length of adjacent years.\n @memberof HebrewCalendar\n @private\n @param year {number} The year to examine.\n @return {number} The days to offset by. */\n _delay2: function(year) {\n var last = this._delay1(year - 1);\n var present = this._delay1(year);\n var next = this._delay1(year + 1);\n return next - present === 356 ? 2 : present - last === 382 ? 1 : 0;\n },\n /** Create a new date from a Julian date.\n @memberof HebrewCalendar\n @param jd {number} The Julian date to convert.\n @return {CDate} The equivalent date. */\n fromJD: function(jd) {\n jd = Math.floor(jd) + 0.5;\n var year = Math.floor((jd - this.jdEpoch) * 98496 / 35975351) - 1;\n while (jd >= this.toJD(year === -1 ? 1 : year + 1, 7, 1)) {\n year++;\n }\n var month = jd < this.toJD(year, 1, 1) ? 7 : 1;\n while (jd > this.toJD(year, month, this.daysInMonth(year, month))) {\n month++;\n }\n var day = jd - this.toJD(year, month, 1) + 1;\n return this.newDate(year, month, day);\n }\n });\n function mod(a, b) {\n return a - b * Math.floor(a / b);\n }\n main.calendars.hebrew = HebrewCalendar;\n }\n });\n\n // node_modules/world-calendars/dist/calendars/islamic.js\n var require_islamic = __commonJS({\n \"node_modules/world-calendars/dist/calendars/islamic.js\"() {\n var main = require_main();\n var assign = require_object_assign();\n function IslamicCalendar(language) {\n this.local = this.regionalOptions[language || \"\"] || this.regionalOptions[\"\"];\n }\n IslamicCalendar.prototype = new main.baseCalendar();\n assign(IslamicCalendar.prototype, {\n /** The calendar name.\n @memberof IslamicCalendar */\n name: \"Islamic\",\n /** Julian date of start of Islamic epoch: 16 July 622 CE.\n @memberof IslamicCalendar */\n jdEpoch: 19484395e-1,\n /** Days per month in a common year.\n @memberof IslamicCalendar */\n daysPerMonth: [30, 29, 30, 29, 30, 29, 30, 29, 30, 29, 30, 29],\n /** true if has a year zero, false if not.\n @memberof IslamicCalendar */\n hasYearZero: false,\n /** The minimum month number.\n @memberof IslamicCalendar */\n minMonth: 1,\n /** The first month in the year.\n @memberof IslamicCalendar */\n firstMonth: 1,\n /** The minimum day number.\n @memberof IslamicCalendar */\n minDay: 1,\n /** Localisations for the plugin.\n Entries are objects indexed by the language code ('' being the default US/English).\n Each object has the following attributes.\n @memberof IslamicCalendar\n @property name {string} The calendar name.\n @property epochs {string[]} The epoch names.\n @property monthNames {string[]} The long names of the months of the year.\n @property monthNamesShort {string[]} The short names of the months of the year.\n @property dayNames {string[]} The long names of the days of the week.\n @property dayNamesShort {string[]} The short names of the days of the week.\n @property dayNamesMin {string[]} The minimal names of the days of the week.\n @property dateFormat {string} The date format for this calendar.\n See the options on formatDate for details.\n @property firstDay {number} The number of the first day of the week, starting at 0.\n @property isRTL {number} true if this localisation reads right-to-left. */\n regionalOptions: {\n // Localisations\n \"\": {\n name: \"Islamic\",\n epochs: [\"BH\", \"AH\"],\n monthNames: [\n \"Muharram\",\n \"Safar\",\n \"Rabi' al-awwal\",\n \"Rabi' al-thani\",\n \"Jumada al-awwal\",\n \"Jumada al-thani\",\n \"Rajab\",\n \"Sha'aban\",\n \"Ramadan\",\n \"Shawwal\",\n \"Dhu al-Qi'dah\",\n \"Dhu al-Hijjah\"\n ],\n monthNamesShort: [\"Muh\", \"Saf\", \"Rab1\", \"Rab2\", \"Jum1\", \"Jum2\", \"Raj\", \"Sha'\", \"Ram\", \"Shaw\", \"DhuQ\", \"DhuH\"],\n dayNames: [\n \"Yawm al-ahad\",\n \"Yawm al-ithnayn\",\n \"Yawm ath-thulaathaa'\",\n \"Yawm al-arbi'aa'\",\n \"Yawm al-kham\\u012Bs\",\n \"Yawm al-jum'a\",\n \"Yawm as-sabt\"\n ],\n dayNamesShort: [\"Aha\", \"Ith\", \"Thu\", \"Arb\", \"Kha\", \"Jum\", \"Sab\"],\n dayNamesMin: [\"Ah\", \"It\", \"Th\", \"Ar\", \"Kh\", \"Ju\", \"Sa\"],\n digits: null,\n dateFormat: \"yyyy/mm/dd\",\n firstDay: 6,\n isRTL: false\n }\n },\n /** Determine whether this date is in a leap year.\n @memberof IslamicCalendar\n @param year {CDate|number} The date to examine or the year to examine.\n @return {boolean} true if this is a leap year, false if not.\n @throws Error if an invalid year or a different calendar used. */\n leapYear: function(year) {\n var date = this._validate(year, this.minMonth, this.minDay, main.local.invalidYear);\n return (date.year() * 11 + 14) % 30 < 11;\n },\n /** Determine the week of the year for a date.\n @memberof IslamicCalendar\n @param year {CDate|number} The date to examine or the year to examine.\n @param [month] {number} The month to examine.\n @param [day] {number} The day to examine.\n @return {number} The week of the year.\n @throws Error if an invalid date or a different calendar used. */\n weekOfYear: function(year, month, day) {\n var checkDate = this.newDate(year, month, day);\n checkDate.add(-checkDate.dayOfWeek(), \"d\");\n return Math.floor((checkDate.dayOfYear() - 1) / 7) + 1;\n },\n /** Retrieve the number of days in a year.\n @memberof IslamicCalendar\n @param year {CDate|number} The date to examine or the year to examine.\n @return {number} The number of days.\n @throws Error if an invalid year or a different calendar used. */\n daysInYear: function(year) {\n return this.leapYear(year) ? 355 : 354;\n },\n /** Retrieve the number of days in a month.\n @memberof IslamicCalendar\n @param year {CDate|number} The date to examine or the year of the month.\n @param [month] {number} The month.\n @return {number} The number of days in this month.\n @throws Error if an invalid month/year or a different calendar used. */\n daysInMonth: function(year, month) {\n var date = this._validate(year, month, this.minDay, main.local.invalidMonth);\n return this.daysPerMonth[date.month() - 1] + (date.month() === 12 && this.leapYear(date.year()) ? 1 : 0);\n },\n /** Determine whether this date is a week day.\n @memberof IslamicCalendar\n @param year {CDate|number} The date to examine or the year to examine.\n @param [month] {number} The month to examine.\n @param [day] {number} The day to examine.\n @return {boolean} true if a week day, false if not.\n @throws Error if an invalid date or a different calendar used. */\n weekDay: function(year, month, day) {\n return this.dayOfWeek(year, month, day) !== 5;\n },\n /** Retrieve the Julian date equivalent for this date,\n i.e. days since January 1, 4713 BCE Greenwich noon.\n @memberof IslamicCalendar\n @param year {CDate|number} The date to convert or the year to convert.\n @param [month] {number} The month to convert.\n @param [day] {number} The day to convert.\n @return {number} The equivalent Julian date.\n @throws Error if an invalid date or a different calendar used. */\n toJD: function(year, month, day) {\n var date = this._validate(year, month, day, main.local.invalidDate);\n year = date.year();\n month = date.month();\n day = date.day();\n year = year <= 0 ? year + 1 : year;\n return day + Math.ceil(29.5 * (month - 1)) + (year - 1) * 354 + Math.floor((3 + 11 * year) / 30) + this.jdEpoch - 1;\n },\n /** Create a new date from a Julian date.\n @memberof IslamicCalendar\n @param jd {number} The Julian date to convert.\n @return {CDate} The equivalent date. */\n fromJD: function(jd) {\n jd = Math.floor(jd) + 0.5;\n var year = Math.floor((30 * (jd - this.jdEpoch) + 10646) / 10631);\n year = year <= 0 ? year - 1 : year;\n var month = Math.min(12, Math.ceil((jd - 29 - this.toJD(year, 1, 1)) / 29.5) + 1);\n var day = jd - this.toJD(year, month, 1) + 1;\n return this.newDate(year, month, day);\n }\n });\n main.calendars.islamic = IslamicCalendar;\n }\n });\n\n // node_modules/world-calendars/dist/calendars/julian.js\n var require_julian = __commonJS({\n \"node_modules/world-calendars/dist/calendars/julian.js\"() {\n var main = require_main();\n var assign = require_object_assign();\n function JulianCalendar(language) {\n this.local = this.regionalOptions[language || \"\"] || this.regionalOptions[\"\"];\n }\n JulianCalendar.prototype = new main.baseCalendar();\n assign(JulianCalendar.prototype, {\n /** The calendar name.\n @memberof JulianCalendar */\n name: \"Julian\",\n /** Julian date of start of Julian epoch: 1 January 0001 AD = 30 December 0001 BCE.\n @memberof JulianCalendar */\n jdEpoch: 17214235e-1,\n /** Days per month in a common year.\n @memberof JulianCalendar */\n daysPerMonth: [31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31],\n /** true if has a year zero, false if not.\n @memberof JulianCalendar */\n hasYearZero: false,\n /** The minimum month number.\n @memberof JulianCalendar */\n minMonth: 1,\n /** The first month in the year.\n @memberof JulianCalendar */\n firstMonth: 1,\n /** The minimum day number.\n @memberof JulianCalendar */\n minDay: 1,\n /** Localisations for the plugin.\n Entries are objects indexed by the language code ('' being the default US/English).\n Each object has the following attributes.\n @memberof JulianCalendar\n @property name {string} The calendar name.\n @property epochs {string[]} The epoch names.\n @property monthNames {string[]} The long names of the months of the year.\n @property monthNamesShort {string[]} The short names of the months of the year.\n @property dayNames {string[]} The long names of the days of the week.\n @property dayNamesShort {string[]} The short names of the days of the week.\n @property dayNamesMin {string[]} The minimal names of the days of the week.\n @property dateFormat {string} The date format for this calendar.\n See the options on formatDate for details.\n @property firstDay {number} The number of the first day of the week, starting at 0.\n @property isRTL {number} true if this localisation reads right-to-left. */\n regionalOptions: {\n // Localisations\n \"\": {\n name: \"Julian\",\n epochs: [\"BC\", \"AD\"],\n monthNames: [\n \"January\",\n \"February\",\n \"March\",\n \"April\",\n \"May\",\n \"June\",\n \"July\",\n \"August\",\n \"September\",\n \"October\",\n \"November\",\n \"December\"\n ],\n monthNamesShort: [\"Jan\", \"Feb\", \"Mar\", \"Apr\", \"May\", \"Jun\", \"Jul\", \"Aug\", \"Sep\", \"Oct\", \"Nov\", \"Dec\"],\n dayNames: [\"Sunday\", \"Monday\", \"Tuesday\", \"Wednesday\", \"Thursday\", \"Friday\", \"Saturday\"],\n dayNamesShort: [\"Sun\", \"Mon\", \"Tue\", \"Wed\", \"Thu\", \"Fri\", \"Sat\"],\n dayNamesMin: [\"Su\", \"Mo\", \"Tu\", \"We\", \"Th\", \"Fr\", \"Sa\"],\n digits: null,\n dateFormat: \"mm/dd/yyyy\",\n firstDay: 0,\n isRTL: false\n }\n },\n /** Determine whether this date is in a leap year.\n @memberof JulianCalendar\n @param year {CDate|number} The date to examine or the year to examine.\n @return {boolean} true if this is a leap year, false if not.\n @throws Error if an invalid year or a different calendar used. */\n leapYear: function(year) {\n var date = this._validate(year, this.minMonth, this.minDay, main.local.invalidYear);\n var year = date.year() < 0 ? date.year() + 1 : date.year();\n return year % 4 === 0;\n },\n /** Determine the week of the year for a date - ISO 8601.\n @memberof JulianCalendar\n @param year {CDate|number} The date to examine or the year to examine.\n @param [month] {number} The month to examine.\n @param [day] {number} The day to examine.\n @return {number} The week of the year.\n @throws Error if an invalid date or a different calendar used. */\n weekOfYear: function(year, month, day) {\n var checkDate = this.newDate(year, month, day);\n checkDate.add(4 - (checkDate.dayOfWeek() || 7), \"d\");\n return Math.floor((checkDate.dayOfYear() - 1) / 7) + 1;\n },\n /** Retrieve the number of days in a month.\n @memberof JulianCalendar\n @param year {CDate|number} The date to examine or the year of the month.\n @param [month] {number} The month.\n @return {number} The number of days in this month.\n @throws Error if an invalid month/year or a different calendar used. */\n daysInMonth: function(year, month) {\n var date = this._validate(year, month, this.minDay, main.local.invalidMonth);\n return this.daysPerMonth[date.month() - 1] + (date.month() === 2 && this.leapYear(date.year()) ? 1 : 0);\n },\n /** Determine whether this date is a week day.\n @memberof JulianCalendar\n @param year {CDate|number} The date to examine or the year to examine.\n @param [month] {number} The month to examine.\n @param [day] {number} The day to examine.\n @return {boolean} True if a week day, false if not.\n @throws Error if an invalid date or a different calendar used. */\n weekDay: function(year, month, day) {\n return (this.dayOfWeek(year, month, day) || 7) < 6;\n },\n /** Retrieve the Julian date equivalent for this date,\n i.e. days since January 1, 4713 BCE Greenwich noon.\n @memberof JulianCalendar\n @param year {CDate|number} The date to convert or the year to convert.\n @param [month] {number} The month to convert.\n @param [day] {number} The day to convert.\n @return {number} The equivalent Julian date.\n @throws Error if an invalid date or a different calendar used. */\n toJD: function(year, month, day) {\n var date = this._validate(year, month, day, main.local.invalidDate);\n year = date.year();\n month = date.month();\n day = date.day();\n if (year < 0) {\n year++;\n }\n if (month <= 2) {\n year--;\n month += 12;\n }\n return Math.floor(365.25 * (year + 4716)) + Math.floor(30.6001 * (month + 1)) + day - 1524.5;\n },\n /** Create a new date from a Julian date.\n @memberof JulianCalendar\n @param jd {number} The Julian date to convert.\n @return {CDate} The equivalent date. */\n fromJD: function(jd) {\n var a = Math.floor(jd + 0.5);\n var b = a + 1524;\n var c = Math.floor((b - 122.1) / 365.25);\n var d = Math.floor(365.25 * c);\n var e = Math.floor((b - d) / 30.6001);\n var month = e - Math.floor(e < 14 ? 1 : 13);\n var year = c - Math.floor(month > 2 ? 4716 : 4715);\n var day = b - d - Math.floor(30.6001 * e);\n if (year <= 0) {\n year--;\n }\n return this.newDate(year, month, day);\n }\n });\n main.calendars.julian = JulianCalendar;\n }\n });\n\n // node_modules/world-calendars/dist/calendars/mayan.js\n var require_mayan = __commonJS({\n \"node_modules/world-calendars/dist/calendars/mayan.js\"() {\n var main = require_main();\n var assign = require_object_assign();\n function MayanCalendar(language) {\n this.local = this.regionalOptions[language || \"\"] || this.regionalOptions[\"\"];\n }\n MayanCalendar.prototype = new main.baseCalendar();\n assign(MayanCalendar.prototype, {\n /** The calendar name.\n @memberof MayanCalendar */\n name: \"Mayan\",\n /** Julian date of start of Mayan epoch: 11 August 3114 BCE.\n @memberof MayanCalendar */\n jdEpoch: 584282.5,\n /** true if has a year zero, false if not.\n @memberof MayanCalendar */\n hasYearZero: true,\n /** The minimum month number.\n @memberof MayanCalendar */\n minMonth: 0,\n /** The first month in the year.\n @memberof MayanCalendar */\n firstMonth: 0,\n /** The minimum day number.\n @memberof MayanCalendar */\n minDay: 0,\n /** Localisations for the plugin.\n Entries are objects indexed by the language code ('' being the default US/English).\n Each object has the following attributes.\n @memberof MayanCalendar\n @property name {string} The calendar name.\n @property epochs {string[]} The epoch names.\n @property monthNames {string[]} The long names of the months of the year.\n @property monthNamesShort {string[]} The short names of the months of the year.\n @property dayNames {string[]} The long names of the days of the week.\n @property dayNamesShort {string[]} The short names of the days of the week.\n @property dayNamesMin {string[]} The minimal names of the days of the week.\n @property dateFormat {string} The date format for this calendar.\n See the options on formatDate for details.\n @property firstDay {number} The number of the first day of the week, starting at 0.\n @property isRTL {number} true if this localisation reads right-to-left.\n @property haabMonths {string[]} The names of the Haab months.\n @property tzolkinMonths {string[]} The names of the Tzolkin months. */\n regionalOptions: {\n // Localisations\n \"\": {\n name: \"Mayan\",\n epochs: [\"\", \"\"],\n monthNames: [\n \"0\",\n \"1\",\n \"2\",\n \"3\",\n \"4\",\n \"5\",\n \"6\",\n \"7\",\n \"8\",\n \"9\",\n \"10\",\n \"11\",\n \"12\",\n \"13\",\n \"14\",\n \"15\",\n \"16\",\n \"17\"\n ],\n monthNamesShort: [\n \"0\",\n \"1\",\n \"2\",\n \"3\",\n \"4\",\n \"5\",\n \"6\",\n \"7\",\n \"8\",\n \"9\",\n \"10\",\n \"11\",\n \"12\",\n \"13\",\n \"14\",\n \"15\",\n \"16\",\n \"17\"\n ],\n dayNames: [\n \"0\",\n \"1\",\n \"2\",\n \"3\",\n \"4\",\n \"5\",\n \"6\",\n \"7\",\n \"8\",\n \"9\",\n \"10\",\n \"11\",\n \"12\",\n \"13\",\n \"14\",\n \"15\",\n \"16\",\n \"17\",\n \"18\",\n \"19\"\n ],\n dayNamesShort: [\n \"0\",\n \"1\",\n \"2\",\n \"3\",\n \"4\",\n \"5\",\n \"6\",\n \"7\",\n \"8\",\n \"9\",\n \"10\",\n \"11\",\n \"12\",\n \"13\",\n \"14\",\n \"15\",\n \"16\",\n \"17\",\n \"18\",\n \"19\"\n ],\n dayNamesMin: [\n \"0\",\n \"1\",\n \"2\",\n \"3\",\n \"4\",\n \"5\",\n \"6\",\n \"7\",\n \"8\",\n \"9\",\n \"10\",\n \"11\",\n \"12\",\n \"13\",\n \"14\",\n \"15\",\n \"16\",\n \"17\",\n \"18\",\n \"19\"\n ],\n digits: null,\n dateFormat: \"YYYY.m.d\",\n firstDay: 0,\n isRTL: false,\n haabMonths: [\n \"Pop\",\n \"Uo\",\n \"Zip\",\n \"Zotz\",\n \"Tzec\",\n \"Xul\",\n \"Yaxkin\",\n \"Mol\",\n \"Chen\",\n \"Yax\",\n \"Zac\",\n \"Ceh\",\n \"Mac\",\n \"Kankin\",\n \"Muan\",\n \"Pax\",\n \"Kayab\",\n \"Cumku\",\n \"Uayeb\"\n ],\n tzolkinMonths: [\n \"Imix\",\n \"Ik\",\n \"Akbal\",\n \"Kan\",\n \"Chicchan\",\n \"Cimi\",\n \"Manik\",\n \"Lamat\",\n \"Muluc\",\n \"Oc\",\n \"Chuen\",\n \"Eb\",\n \"Ben\",\n \"Ix\",\n \"Men\",\n \"Cib\",\n \"Caban\",\n \"Etznab\",\n \"Cauac\",\n \"Ahau\"\n ]\n }\n },\n /** Determine whether this date is in a leap year.\n @memberof MayanCalendar\n @param year {CDate|number} The date to examine or the year to examine.\n @return {boolean} true if this is a leap year, false if not.\n @throws Error if an invalid year or a different calendar used. */\n leapYear: function(year) {\n this._validate(year, this.minMonth, this.minDay, main.local.invalidYear);\n return false;\n },\n /** Format the year, if not a simple sequential number.\n @memberof MayanCalendar\n @param year {CDate|number} The date to format or the year to format.\n @return {string} The formatted year.\n @throws Error if an invalid year or a different calendar used. */\n formatYear: function(year) {\n var date = this._validate(year, this.minMonth, this.minDay, main.local.invalidYear);\n year = date.year();\n var baktun = Math.floor(year / 400);\n year = year % 400;\n year += year < 0 ? 400 : 0;\n var katun = Math.floor(year / 20);\n return baktun + \".\" + katun + \".\" + year % 20;\n },\n /** Convert from the formatted year back to a single number.\n @memberof MayanCalendar\n @param years {string} The year as n.n.n.\n @return {number} The sequential year.\n @throws Error if an invalid value is supplied. */\n forYear: function(years) {\n years = years.split(\".\");\n if (years.length < 3) {\n throw \"Invalid Mayan year\";\n }\n var year = 0;\n for (var i = 0; i < years.length; i++) {\n var y = parseInt(years[i], 10);\n if (Math.abs(y) > 19 || i > 0 && y < 0) {\n throw \"Invalid Mayan year\";\n }\n year = year * 20 + y;\n }\n return year;\n },\n /** Retrieve the number of months in a year.\n @memberof MayanCalendar\n @param year {CDate|number} The date to examine or the year to examine.\n @return {number} The number of months.\n @throws Error if an invalid year or a different calendar used. */\n monthsInYear: function(year) {\n this._validate(year, this.minMonth, this.minDay, main.local.invalidYear);\n return 18;\n },\n /** Determine the week of the year for a date.\n @memberof MayanCalendar\n @param year {CDate|number} The date to examine or the year to examine.\n @param [month] {number} The month to examine.\n @param [day] {number} The day to examine.\n @return {number} The week of the year.\n @throws Error if an invalid date or a different calendar used. */\n weekOfYear: function(year, month, day) {\n this._validate(year, month, day, main.local.invalidDate);\n return 0;\n },\n /** Retrieve the number of days in a year.\n @memberof MayanCalendar\n @param year {CDate|number} The date to examine or the year to examine.\n @return {number} The number of days.\n @throws Error if an invalid year or a different calendar used. */\n daysInYear: function(year) {\n this._validate(year, this.minMonth, this.minDay, main.local.invalidYear);\n return 360;\n },\n /** Retrieve the number of days in a month.\n @memberof MayanCalendar\n @param year {CDate|number} The date to examine or the year of the month.\n @param [month] {number} The month.\n @return {number} The number of days in this month.\n @throws Error if an invalid month/year or a different calendar used. */\n daysInMonth: function(year, month) {\n this._validate(year, month, this.minDay, main.local.invalidMonth);\n return 20;\n },\n /** Retrieve the number of days in a week.\n @memberof MayanCalendar\n @return {number} The number of days. */\n daysInWeek: function() {\n return 5;\n },\n /** Retrieve the day of the week for a date.\n @memberof MayanCalendar\n @param year {CDate|number} The date to examine or the year to examine.\n @param [month] {number} The month to examine.\n @param [day] {number} The day to examine.\n @return {number} The day of the week: 0 to number of days - 1.\n @throws Error if an invalid date or a different calendar used. */\n dayOfWeek: function(year, month, day) {\n var date = this._validate(year, month, day, main.local.invalidDate);\n return date.day();\n },\n /** Determine whether this date is a week day.\n @memberof MayanCalendar\n @param year {CDate|number} The date to examine or the year to examine.\n @param [month] {number} The month to examine.\n @param [day] {number} The day to examine.\n @return {boolean} true if a week day, false if not.\n @throws Error if an invalid date or a different calendar used. */\n weekDay: function(year, month, day) {\n this._validate(year, month, day, main.local.invalidDate);\n return true;\n },\n /** Retrieve additional information about a date - Haab and Tzolkin equivalents.\n @memberof MayanCalendar\n @param year {CDate|number} The date to examine or the year to examine.\n @param [month] {number} The month to examine.\n @param [day] {number} The day to examine.\n @return {object} Additional information - contents depends on calendar.\n @throws Error if an invalid date or a different calendar used. */\n extraInfo: function(year, month, day) {\n var date = this._validate(year, month, day, main.local.invalidDate);\n var jd = date.toJD();\n var haab = this._toHaab(jd);\n var tzolkin = this._toTzolkin(jd);\n return {\n haabMonthName: this.local.haabMonths[haab[0] - 1],\n haabMonth: haab[0],\n haabDay: haab[1],\n tzolkinDayName: this.local.tzolkinMonths[tzolkin[0] - 1],\n tzolkinDay: tzolkin[0],\n tzolkinTrecena: tzolkin[1]\n };\n },\n /** Retrieve Haab date from a Julian date.\n @memberof MayanCalendar\n @private\n @param jd {number} The Julian date.\n @return {number[]} Corresponding Haab month and day. */\n _toHaab: function(jd) {\n jd -= this.jdEpoch;\n var day = mod(jd + 8 + (18 - 1) * 20, 365);\n return [Math.floor(day / 20) + 1, mod(day, 20)];\n },\n /** Retrieve Tzolkin date from a Julian date.\n @memberof MayanCalendar\n @private\n @param jd {number} The Julian date.\n @return {number[]} Corresponding Tzolkin day and trecena. */\n _toTzolkin: function(jd) {\n jd -= this.jdEpoch;\n return [amod(jd + 20, 20), amod(jd + 4, 13)];\n },\n /** Retrieve the Julian date equivalent for this date,\n i.e. days since January 1, 4713 BCE Greenwich noon.\n @memberof MayanCalendar\n @param year {CDate|number} The date to convert or the year to convert.\n @param [month] {number} The month to convert.\n @param [day] {number} The day to convert.\n @return {number} The equivalent Julian date.\n @throws Error if an invalid date or a different calendar used. */\n toJD: function(year, month, day) {\n var date = this._validate(year, month, day, main.local.invalidDate);\n return date.day() + date.month() * 20 + date.year() * 360 + this.jdEpoch;\n },\n /** Create a new date from a Julian date.\n @memberof MayanCalendar\n @param jd {number} The Julian date to convert.\n @return {CDate} The equivalent date. */\n fromJD: function(jd) {\n jd = Math.floor(jd) + 0.5 - this.jdEpoch;\n var year = Math.floor(jd / 360);\n jd = jd % 360;\n jd += jd < 0 ? 360 : 0;\n var month = Math.floor(jd / 20);\n var day = jd % 20;\n return this.newDate(year, month, day);\n }\n });\n function mod(a, b) {\n return a - b * Math.floor(a / b);\n }\n function amod(a, b) {\n return mod(a - 1, b) + 1;\n }\n main.calendars.mayan = MayanCalendar;\n }\n });\n\n // node_modules/world-calendars/dist/calendars/nanakshahi.js\n var require_nanakshahi = __commonJS({\n \"node_modules/world-calendars/dist/calendars/nanakshahi.js\"() {\n var main = require_main();\n var assign = require_object_assign();\n function NanakshahiCalendar(language) {\n this.local = this.regionalOptions[language || \"\"] || this.regionalOptions[\"\"];\n }\n NanakshahiCalendar.prototype = new main.baseCalendar();\n var gregorian = main.instance(\"gregorian\");\n assign(NanakshahiCalendar.prototype, {\n /** The calendar name.\n @memberof NanakshahiCalendar */\n name: \"Nanakshahi\",\n /** Julian date of start of Nanakshahi epoch: 14 March 1469 CE.\n @memberof NanakshahiCalendar */\n jdEpoch: 22576735e-1,\n /** Days per month in a common year.\n @memberof NanakshahiCalendar */\n daysPerMonth: [31, 31, 31, 31, 31, 30, 30, 30, 30, 30, 30, 30],\n /** true if has a year zero, false if not.\n @memberof NanakshahiCalendar */\n hasYearZero: false,\n /** The minimum month number.\n @memberof NanakshahiCalendar */\n minMonth: 1,\n /** The first month in the year.\n @memberof NanakshahiCalendar */\n firstMonth: 1,\n /** The minimum day number.\n @memberof NanakshahiCalendar */\n minDay: 1,\n /** Localisations for the plugin.\n Entries are objects indexed by the language code ('' being the default US/English).\n Each object has the following attributes.\n @memberof NanakshahiCalendar\n @property name {string} The calendar name.\n @property epochs {string[]} The epoch names.\n @property monthNames {string[]} The long names of the months of the year.\n @property monthNamesShort {string[]} The short names of the months of the year.\n @property dayNames {string[]} The long names of the days of the week.\n @property dayNamesShort {string[]} The short names of the days of the week.\n @property dayNamesMin {string[]} The minimal names of the days of the week.\n @property dateFormat {string} The date format for this calendar.\n See the options on formatDate for details.\n @property firstDay {number} The number of the first day of the week, starting at 0.\n @property isRTL {number} true if this localisation reads right-to-left. */\n regionalOptions: {\n // Localisations\n \"\": {\n name: \"Nanakshahi\",\n epochs: [\"BN\", \"AN\"],\n monthNames: [\n \"Chet\",\n \"Vaisakh\",\n \"Jeth\",\n \"Harh\",\n \"Sawan\",\n \"Bhadon\",\n \"Assu\",\n \"Katak\",\n \"Maghar\",\n \"Poh\",\n \"Magh\",\n \"Phagun\"\n ],\n monthNamesShort: [\"Che\", \"Vai\", \"Jet\", \"Har\", \"Saw\", \"Bha\", \"Ass\", \"Kat\", \"Mgr\", \"Poh\", \"Mgh\", \"Pha\"],\n dayNames: [\"Somvaar\", \"Mangalvar\", \"Budhvaar\", \"Veervaar\", \"Shukarvaar\", \"Sanicharvaar\", \"Etvaar\"],\n dayNamesShort: [\"Som\", \"Mangal\", \"Budh\", \"Veer\", \"Shukar\", \"Sanichar\", \"Et\"],\n dayNamesMin: [\"So\", \"Ma\", \"Bu\", \"Ve\", \"Sh\", \"Sa\", \"Et\"],\n digits: null,\n dateFormat: \"dd-mm-yyyy\",\n firstDay: 0,\n isRTL: false\n }\n },\n /** Determine whether this date is in a leap year.\n @memberof NanakshahiCalendar\n @param year {CDate|number} The date to examine or the year to examine.\n @return {boolean} true if this is a leap year, false if not.\n @throws Error if an invalid year or a different calendar used. */\n leapYear: function(year) {\n var date = this._validate(\n year,\n this.minMonth,\n this.minDay,\n main.local.invalidYear || main.regionalOptions[\"\"].invalidYear\n );\n return gregorian.leapYear(date.year() + (date.year() < 1 ? 1 : 0) + 1469);\n },\n /** Determine the week of the year for a date.\n @memberof NanakshahiCalendar\n @param year {CDate|number} The date to examine or the year to examine.\n @param [month] {number} The month to examine.\n @param [day] {number} The day to examine.\n @return {number} The week of the year.\n @throws Error if an invalid date or a different calendar used. */\n weekOfYear: function(year, month, day) {\n var checkDate = this.newDate(year, month, day);\n checkDate.add(1 - (checkDate.dayOfWeek() || 7), \"d\");\n return Math.floor((checkDate.dayOfYear() - 1) / 7) + 1;\n },\n /** Retrieve the number of days in a month.\n @memberof NanakshahiCalendar\n @param year {CDate|number} The date to examine or the year of the month.\n @param [month] {number} The month.\n @return {number} The number of days in this month.\n @throws Error if an invalid month/year or a different calendar used. */\n daysInMonth: function(year, month) {\n var date = this._validate(year, month, this.minDay, main.local.invalidMonth);\n return this.daysPerMonth[date.month() - 1] + (date.month() === 12 && this.leapYear(date.year()) ? 1 : 0);\n },\n /** Determine whether this date is a week day.\n @memberof NanakshahiCalendar\n @param year {CDate|number} The date to examine or the year to examine.\n @param [month] {number} The month to examine.\n @param [day] {number} The day to examine.\n @return {boolean} true if a week day, false if not.\n @throws Error if an invalid date or a different calendar used. */\n weekDay: function(year, month, day) {\n return (this.dayOfWeek(year, month, day) || 7) < 6;\n },\n /** Retrieve the Julian date equivalent for this date,\n i.e. days since January 1, 4713 BCE Greenwich noon.\n @memberof NanakshahiCalendar\n @param year {CDate|number} The date to convert or the year to convert.\n @param [month] {number} The month to convert.\n @param [day] {number} The day to convert.\n @return {number} The equivalent Julian date.\n @throws Error if an invalid date or a different calendar used. */\n toJD: function(year, month, day) {\n var date = this._validate(year, month, day, main.local.invalidMonth);\n var year = date.year();\n if (year < 0) {\n year++;\n }\n var doy = date.day();\n for (var m = 1; m < date.month(); m++) {\n doy += this.daysPerMonth[m - 1];\n }\n return doy + gregorian.toJD(year + 1468, 3, 13);\n },\n /** Create a new date from a Julian date.\n @memberof NanakshahiCalendar\n @param jd {number} The Julian date to convert.\n @return {CDate} The equivalent date. */\n fromJD: function(jd) {\n jd = Math.floor(jd + 0.5);\n var year = Math.floor((jd - (this.jdEpoch - 1)) / 366);\n while (jd >= this.toJD(year + 1, 1, 1)) {\n year++;\n }\n var day = jd - Math.floor(this.toJD(year, 1, 1) + 0.5) + 1;\n var month = 1;\n while (day > this.daysInMonth(year, month)) {\n day -= this.daysInMonth(year, month);\n month++;\n }\n return this.newDate(year, month, day);\n }\n });\n main.calendars.nanakshahi = NanakshahiCalendar;\n }\n });\n\n // node_modules/world-calendars/dist/calendars/nepali.js\n var require_nepali = __commonJS({\n \"node_modules/world-calendars/dist/calendars/nepali.js\"() {\n var main = require_main();\n var assign = require_object_assign();\n function NepaliCalendar(language) {\n this.local = this.regionalOptions[language || \"\"] || this.regionalOptions[\"\"];\n }\n NepaliCalendar.prototype = new main.baseCalendar();\n assign(NepaliCalendar.prototype, {\n /** The calendar name.\n @memberof NepaliCalendar */\n name: \"Nepali\",\n /** Julian date of start of Nepali epoch: 14 April 57 BCE.\n @memberof NepaliCalendar */\n jdEpoch: 17007095e-1,\n /** Days per month in a common year.\n @memberof NepaliCalendar */\n daysPerMonth: [31, 31, 32, 32, 31, 30, 30, 29, 30, 29, 30, 30],\n /** true if has a year zero, false if not.\n @memberof NepaliCalendar */\n hasYearZero: false,\n /** The minimum month number.\n @memberof NepaliCalendar */\n minMonth: 1,\n /** The first month in the year.\n @memberof NepaliCalendar */\n firstMonth: 1,\n /** The minimum day number.\n @memberof NepaliCalendar */\n minDay: 1,\n /** The number of days in the year.\n @memberof NepaliCalendar */\n daysPerYear: 365,\n /** Localisations for the plugin.\n Entries are objects indexed by the language code ('' being the default US/English).\n Each object has the following attributes.\n @memberof NepaliCalendar\n @property name {string} The calendar name.\n @property epochs {string[]} The epoch names.\n @property monthNames {string[]} The long names of the months of the year.\n @property monthNamesShort {string[]} The short names of the months of the year.\n @property dayNames {string[]} The long names of the days of the week.\n @property dayNamesShort {string[]} The short names of the days of the week.\n @property dayNamesMin {string[]} The minimal names of the days of the week.\n @property dateFormat {string} The date format for this calendar.\n See the options on formatDate for details.\n @property firstDay {number} The number of the first day of the week, starting at 0.\n @property isRTL {number} true if this localisation reads right-to-left. */\n regionalOptions: {\n // Localisations\n \"\": {\n name: \"Nepali\",\n epochs: [\"BBS\", \"ABS\"],\n monthNames: [\n \"Baisakh\",\n \"Jestha\",\n \"Ashadh\",\n \"Shrawan\",\n \"Bhadra\",\n \"Ashwin\",\n \"Kartik\",\n \"Mangsir\",\n \"Paush\",\n \"Mangh\",\n \"Falgun\",\n \"Chaitra\"\n ],\n monthNamesShort: [\"Bai\", \"Je\", \"As\", \"Shra\", \"Bha\", \"Ash\", \"Kar\", \"Mang\", \"Pau\", \"Ma\", \"Fal\", \"Chai\"],\n dayNames: [\"Aaitabaar\", \"Sombaar\", \"Manglbaar\", \"Budhabaar\", \"Bihibaar\", \"Shukrabaar\", \"Shanibaar\"],\n dayNamesShort: [\"Aaita\", \"Som\", \"Mangl\", \"Budha\", \"Bihi\", \"Shukra\", \"Shani\"],\n dayNamesMin: [\"Aai\", \"So\", \"Man\", \"Bu\", \"Bi\", \"Shu\", \"Sha\"],\n digits: null,\n dateFormat: \"dd/mm/yyyy\",\n firstDay: 1,\n isRTL: false\n }\n },\n /** Determine whether this date is in a leap year.\n @memberof NepaliCalendar\n @param year {CDate|number} The date to examine or the year to examine.\n @return {boolean} true if this is a leap year, false if not.\n @throws Error if an invalid year or a different calendar used. */\n leapYear: function(year) {\n return this.daysInYear(year) !== this.daysPerYear;\n },\n /** Determine the week of the year for a date.\n @memberof NepaliCalendar\n @param year {CDate|number} The date to examine or the year to examine.\n @param [month] {number} The month to examine.\n @param [day] {number} The day to examine.\n @return {number} The week of the year.\n @throws Error if an invalid date or a different calendar used. */\n weekOfYear: function(year, month, day) {\n var checkDate = this.newDate(year, month, day);\n checkDate.add(-checkDate.dayOfWeek(), \"d\");\n return Math.floor((checkDate.dayOfYear() - 1) / 7) + 1;\n },\n /** Retrieve the number of days in a year.\n @memberof NepaliCalendar\n @param year {CDate|number} The date to examine or the year to examine.\n @return {number} The number of days.\n @throws Error if an invalid year or a different calendar used. */\n daysInYear: function(year) {\n var date = this._validate(year, this.minMonth, this.minDay, main.local.invalidYear);\n year = date.year();\n if (typeof this.NEPALI_CALENDAR_DATA[year] === \"undefined\") {\n return this.daysPerYear;\n }\n var daysPerYear = 0;\n for (var month_number = this.minMonth; month_number <= 12; month_number++) {\n daysPerYear += this.NEPALI_CALENDAR_DATA[year][month_number];\n }\n return daysPerYear;\n },\n /** Retrieve the number of days in a month.\n @memberof NepaliCalendar\n @param year {CDate|number| The date to examine or the year of the month.\n @param [month] {number} The month.\n @return {number} The number of days in this month.\n @throws Error if an invalid month/year or a different calendar used. */\n daysInMonth: function(year, month) {\n if (year.year) {\n month = year.month();\n year = year.year();\n }\n this._validate(year, month, this.minDay, main.local.invalidMonth);\n return typeof this.NEPALI_CALENDAR_DATA[year] === \"undefined\" ? this.daysPerMonth[month - 1] : this.NEPALI_CALENDAR_DATA[year][month];\n },\n /** Determine whether this date is a week day.\n @memberof NepaliCalendar\n @param year {CDate|number} The date to examine or the year to examine.\n @param [month] {number} The month to examine.\n @param [day] {number} The day to examine.\n @return {boolean} true if a week day, false if not.\n @throws Error if an invalid date or a different calendar used. */\n weekDay: function(year, month, day) {\n return this.dayOfWeek(year, month, day) !== 6;\n },\n /** Retrieve the Julian date equivalent for this date,\n i.e. days since January 1, 4713 BCE Greenwich noon.\n @memberof NepaliCalendar\n @param year {CDate|number} The date to convert or the year to convert.\n @param [month] {number} The month to convert.\n @param [day] {number} The day to convert.\n @return {number} The equivalent Julian date.\n @throws Error if an invalid date or a different calendar used. */\n toJD: function(nepaliYear, nepaliMonth, nepaliDay) {\n var date = this._validate(nepaliYear, nepaliMonth, nepaliDay, main.local.invalidDate);\n nepaliYear = date.year();\n nepaliMonth = date.month();\n nepaliDay = date.day();\n var gregorianCalendar = main.instance();\n var gregorianDayOfYear = 0;\n var nepaliMonthToCheck = nepaliMonth;\n var nepaliYearToCheck = nepaliYear;\n this._createMissingCalendarData(nepaliYear);\n var gregorianYear = nepaliYear - (nepaliMonthToCheck > 9 || nepaliMonthToCheck === 9 && nepaliDay >= this.NEPALI_CALENDAR_DATA[nepaliYearToCheck][0] ? 56 : 57);\n if (nepaliMonth !== 9) {\n gregorianDayOfYear = nepaliDay;\n nepaliMonthToCheck--;\n }\n while (nepaliMonthToCheck !== 9) {\n if (nepaliMonthToCheck <= 0) {\n nepaliMonthToCheck = 12;\n nepaliYearToCheck--;\n }\n gregorianDayOfYear += this.NEPALI_CALENDAR_DATA[nepaliYearToCheck][nepaliMonthToCheck];\n nepaliMonthToCheck--;\n }\n if (nepaliMonth === 9) {\n gregorianDayOfYear += nepaliDay - this.NEPALI_CALENDAR_DATA[nepaliYearToCheck][0];\n if (gregorianDayOfYear < 0) {\n gregorianDayOfYear += gregorianCalendar.daysInYear(gregorianYear);\n }\n } else {\n gregorianDayOfYear += this.NEPALI_CALENDAR_DATA[nepaliYearToCheck][9] - this.NEPALI_CALENDAR_DATA[nepaliYearToCheck][0];\n }\n return gregorianCalendar.newDate(gregorianYear, 1, 1).add(gregorianDayOfYear, \"d\").toJD();\n },\n /** Create a new date from a Julian date.\n @memberof NepaliCalendar\n @param jd {number} The Julian date to convert.\n @return {CDate} The equivalent date. */\n fromJD: function(jd) {\n var gregorianCalendar = main.instance();\n var gregorianDate = gregorianCalendar.fromJD(jd);\n var gregorianYear = gregorianDate.year();\n var gregorianDayOfYear = gregorianDate.dayOfYear();\n var nepaliYear = gregorianYear + 56;\n this._createMissingCalendarData(nepaliYear);\n var nepaliMonth = 9;\n var dayOfFirstJanInPaush = this.NEPALI_CALENDAR_DATA[nepaliYear][0];\n var daysSinceJanFirstToEndOfNepaliMonth = this.NEPALI_CALENDAR_DATA[nepaliYear][nepaliMonth] - dayOfFirstJanInPaush + 1;\n while (gregorianDayOfYear > daysSinceJanFirstToEndOfNepaliMonth) {\n nepaliMonth++;\n if (nepaliMonth > 12) {\n nepaliMonth = 1;\n nepaliYear++;\n }\n daysSinceJanFirstToEndOfNepaliMonth += this.NEPALI_CALENDAR_DATA[nepaliYear][nepaliMonth];\n }\n var nepaliDayOfMonth = this.NEPALI_CALENDAR_DATA[nepaliYear][nepaliMonth] - (daysSinceJanFirstToEndOfNepaliMonth - gregorianDayOfYear);\n return this.newDate(nepaliYear, nepaliMonth, nepaliDayOfMonth);\n },\n /** Creates missing data in the NEPALI_CALENDAR_DATA table.\n This data will not be correct but just give an estimated result. Mostly -/+ 1 day\n @private\n @param nepaliYear {number} The missing year number. */\n _createMissingCalendarData: function(nepaliYear) {\n var tmp_calendar_data = this.daysPerMonth.slice(0);\n tmp_calendar_data.unshift(17);\n for (var nepaliYearToCreate = nepaliYear - 1; nepaliYearToCreate < nepaliYear + 2; nepaliYearToCreate++) {\n if (typeof this.NEPALI_CALENDAR_DATA[nepaliYearToCreate] === \"undefined\") {\n this.NEPALI_CALENDAR_DATA[nepaliYearToCreate] = tmp_calendar_data;\n }\n }\n },\n NEPALI_CALENDAR_DATA: {\n // These data are from http://www.ashesh.com.np\n 1970: [18, 31, 31, 32, 31, 31, 31, 30, 29, 30, 29, 30, 30],\n 1971: [18, 31, 31, 32, 31, 32, 30, 30, 29, 30, 29, 30, 30],\n 1972: [17, 31, 32, 31, 32, 31, 30, 30, 30, 29, 29, 30, 30],\n 1973: [19, 30, 32, 31, 32, 31, 30, 30, 30, 29, 30, 29, 31],\n 1974: [19, 31, 31, 32, 30, 31, 31, 30, 29, 30, 29, 30, 30],\n 1975: [18, 31, 31, 32, 32, 30, 31, 30, 29, 30, 29, 30, 30],\n 1976: [17, 31, 32, 31, 32, 31, 30, 30, 30, 29, 29, 30, 31],\n 1977: [18, 31, 32, 31, 32, 31, 31, 29, 30, 29, 30, 29, 31],\n 1978: [18, 31, 31, 32, 31, 31, 31, 30, 29, 30, 29, 30, 30],\n 1979: [18, 31, 31, 32, 32, 31, 30, 30, 29, 30, 29, 30, 30],\n 1980: [17, 31, 32, 31, 32, 31, 30, 30, 30, 29, 29, 30, 31],\n 1981: [18, 31, 31, 31, 32, 31, 31, 29, 30, 30, 29, 30, 30],\n 1982: [18, 31, 31, 32, 31, 31, 31, 30, 29, 30, 29, 30, 30],\n 1983: [18, 31, 31, 32, 32, 31, 30, 30, 29, 30, 29, 30, 30],\n 1984: [17, 31, 32, 31, 32, 31, 30, 30, 30, 29, 29, 30, 31],\n 1985: [18, 31, 31, 31, 32, 31, 31, 29, 30, 30, 29, 30, 30],\n 1986: [18, 31, 31, 32, 31, 31, 31, 30, 29, 30, 29, 30, 30],\n 1987: [18, 31, 32, 31, 32, 31, 30, 30, 29, 30, 29, 30, 30],\n 1988: [17, 31, 32, 31, 32, 31, 30, 30, 30, 29, 29, 30, 31],\n 1989: [18, 31, 31, 31, 32, 31, 31, 30, 29, 30, 29, 30, 30],\n 1990: [18, 31, 31, 32, 31, 31, 31, 30, 29, 30, 29, 30, 30],\n 1991: [18, 31, 32, 31, 32, 31, 30, 30, 29, 30, 29, 30, 30],\n // These data are from http://nepalicalendar.rat32.com/index.php\n 1992: [17, 31, 32, 31, 32, 31, 30, 30, 30, 29, 30, 29, 31],\n 1993: [18, 31, 31, 31, 32, 31, 31, 30, 29, 30, 29, 30, 30],\n 1994: [18, 31, 31, 32, 31, 31, 31, 30, 29, 30, 29, 30, 30],\n 1995: [17, 31, 32, 31, 32, 31, 30, 30, 30, 29, 29, 30, 30],\n 1996: [17, 31, 32, 31, 32, 31, 30, 30, 30, 29, 30, 29, 31],\n 1997: [18, 31, 31, 32, 31, 31, 31, 30, 29, 30, 29, 30, 30],\n 1998: [18, 31, 31, 32, 31, 31, 31, 30, 29, 30, 29, 30, 30],\n 1999: [17, 31, 32, 31, 32, 31, 30, 30, 30, 29, 29, 30, 31],\n 2e3: [17, 30, 32, 31, 32, 31, 30, 30, 30, 29, 30, 29, 31],\n 2001: [18, 31, 31, 32, 31, 31, 31, 30, 29, 30, 29, 30, 30],\n 2002: [18, 31, 31, 32, 32, 31, 30, 30, 29, 30, 29, 30, 30],\n 2003: [17, 31, 32, 31, 32, 31, 30, 30, 30, 29, 29, 30, 31],\n 2004: [17, 30, 32, 31, 32, 31, 30, 30, 30, 29, 30, 29, 31],\n 2005: [18, 31, 31, 32, 31, 31, 31, 30, 29, 30, 29, 30, 30],\n 2006: [18, 31, 31, 32, 32, 31, 30, 30, 29, 30, 29, 30, 30],\n 2007: [17, 31, 32, 31, 32, 31, 30, 30, 30, 29, 29, 30, 31],\n 2008: [17, 31, 31, 31, 32, 31, 31, 29, 30, 30, 29, 29, 31],\n 2009: [18, 31, 31, 32, 31, 31, 31, 30, 29, 30, 29, 30, 30],\n 2010: [18, 31, 31, 32, 32, 31, 30, 30, 29, 30, 29, 30, 30],\n 2011: [17, 31, 32, 31, 32, 31, 30, 30, 30, 29, 29, 30, 31],\n 2012: [17, 31, 31, 31, 32, 31, 31, 29, 30, 30, 29, 30, 30],\n 2013: [18, 31, 31, 32, 31, 31, 31, 30, 29, 30, 29, 30, 30],\n 2014: [18, 31, 31, 32, 32, 31, 30, 30, 29, 30, 29, 30, 30],\n 2015: [17, 31, 32, 31, 32, 31, 30, 30, 30, 29, 29, 30, 31],\n 2016: [17, 31, 31, 31, 32, 31, 31, 29, 30, 30, 29, 30, 30],\n 2017: [18, 31, 31, 32, 31, 31, 31, 30, 29, 30, 29, 30, 30],\n 2018: [18, 31, 32, 31, 32, 31, 30, 30, 29, 30, 29, 30, 30],\n 2019: [17, 31, 32, 31, 32, 31, 30, 30, 30, 29, 30, 29, 31],\n 2020: [17, 31, 31, 31, 32, 31, 31, 30, 29, 30, 29, 30, 30],\n 2021: [18, 31, 31, 32, 31, 31, 31, 30, 29, 30, 29, 30, 30],\n 2022: [17, 31, 32, 31, 32, 31, 30, 30, 30, 29, 29, 30, 30],\n 2023: [17, 31, 32, 31, 32, 31, 30, 30, 30, 29, 30, 29, 31],\n 2024: [17, 31, 31, 31, 32, 31, 31, 30, 29, 30, 29, 30, 30],\n 2025: [18, 31, 31, 32, 31, 31, 31, 30, 29, 30, 29, 30, 30],\n 2026: [17, 31, 32, 31, 32, 31, 30, 30, 30, 29, 29, 30, 31],\n 2027: [17, 30, 32, 31, 32, 31, 30, 30, 30, 29, 30, 29, 31],\n 2028: [17, 31, 31, 32, 31, 31, 31, 30, 29, 30, 29, 30, 30],\n 2029: [18, 31, 31, 32, 31, 32, 30, 30, 29, 30, 29, 30, 30],\n 2030: [17, 31, 32, 31, 32, 31, 30, 30, 30, 30, 30, 30, 31],\n 2031: [17, 31, 32, 31, 32, 31, 31, 31, 31, 31, 31, 31, 31],\n 2032: [17, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32],\n 2033: [18, 31, 31, 32, 32, 31, 30, 30, 29, 30, 29, 30, 30],\n 2034: [17, 31, 32, 31, 32, 31, 30, 30, 30, 29, 29, 30, 31],\n 2035: [17, 30, 32, 31, 32, 31, 31, 29, 30, 30, 29, 29, 31],\n 2036: [17, 31, 31, 32, 31, 31, 31, 30, 29, 30, 29, 30, 30],\n 2037: [18, 31, 31, 32, 32, 31, 30, 30, 29, 30, 29, 30, 30],\n 2038: [17, 31, 32, 31, 32, 31, 30, 30, 30, 29, 29, 30, 31],\n 2039: [17, 31, 31, 31, 32, 31, 31, 29, 30, 30, 29, 30, 30],\n 2040: [17, 31, 31, 32, 31, 31, 31, 30, 29, 30, 29, 30, 30],\n 2041: [18, 31, 31, 32, 32, 31, 30, 30, 29, 30, 29, 30, 30],\n 2042: [17, 31, 32, 31, 32, 31, 30, 30, 30, 29, 29, 30, 31],\n 2043: [17, 31, 31, 31, 32, 31, 31, 29, 30, 30, 29, 30, 30],\n 2044: [17, 31, 31, 32, 31, 31, 31, 30, 29, 30, 29, 30, 30],\n 2045: [18, 31, 32, 31, 32, 31, 30, 30, 29, 30, 29, 30, 30],\n 2046: [17, 31, 32, 31, 32, 31, 30, 30, 30, 29, 29, 30, 31],\n 2047: [17, 31, 31, 31, 32, 31, 31, 30, 29, 30, 29, 30, 30],\n 2048: [17, 31, 31, 32, 31, 31, 31, 30, 29, 30, 29, 30, 30],\n 2049: [17, 31, 32, 31, 32, 31, 30, 30, 30, 29, 29, 30, 30],\n 2050: [17, 31, 32, 31, 32, 31, 30, 30, 30, 29, 30, 29, 31],\n 2051: [17, 31, 31, 31, 32, 31, 31, 30, 29, 30, 29, 30, 30],\n 2052: [17, 31, 31, 32, 31, 31, 31, 30, 29, 30, 29, 30, 30],\n 2053: [17, 31, 32, 31, 32, 31, 30, 30, 30, 29, 29, 30, 30],\n 2054: [17, 31, 32, 31, 32, 31, 30, 30, 30, 29, 30, 29, 31],\n 2055: [17, 31, 31, 32, 31, 31, 31, 30, 29, 30, 30, 29, 30],\n 2056: [17, 31, 31, 32, 31, 32, 30, 30, 29, 30, 29, 30, 30],\n 2057: [17, 31, 32, 31, 32, 31, 30, 30, 30, 29, 29, 30, 31],\n 2058: [17, 30, 32, 31, 32, 31, 30, 30, 30, 29, 30, 29, 31],\n 2059: [17, 31, 31, 32, 31, 31, 31, 30, 29, 30, 29, 30, 30],\n 2060: [17, 31, 31, 32, 32, 31, 30, 30, 29, 30, 29, 30, 30],\n 2061: [17, 31, 32, 31, 32, 31, 30, 30, 30, 29, 29, 30, 31],\n 2062: [17, 30, 32, 31, 32, 31, 31, 29, 30, 29, 30, 29, 31],\n 2063: [17, 31, 31, 32, 31, 31, 31, 30, 29, 30, 29, 30, 30],\n 2064: [17, 31, 31, 32, 32, 31, 30, 30, 29, 30, 29, 30, 30],\n 2065: [17, 31, 32, 31, 32, 31, 30, 30, 30, 29, 29, 30, 31],\n 2066: [17, 31, 31, 31, 32, 31, 31, 29, 30, 30, 29, 29, 31],\n 2067: [17, 31, 31, 32, 31, 31, 31, 30, 29, 30, 29, 30, 30],\n 2068: [17, 31, 31, 32, 32, 31, 30, 30, 29, 30, 29, 30, 30],\n 2069: [17, 31, 32, 31, 32, 31, 30, 30, 30, 29, 29, 30, 31],\n 2070: [17, 31, 31, 31, 32, 31, 31, 29, 30, 30, 29, 30, 30],\n 2071: [17, 31, 31, 32, 31, 31, 31, 30, 29, 30, 29, 30, 30],\n 2072: [17, 31, 32, 31, 32, 31, 30, 30, 29, 30, 29, 30, 30],\n 2073: [17, 31, 32, 31, 32, 31, 30, 30, 30, 29, 29, 30, 31],\n 2074: [17, 31, 31, 31, 32, 31, 31, 30, 29, 30, 29, 30, 30],\n 2075: [17, 31, 31, 32, 31, 31, 31, 30, 29, 30, 29, 30, 30],\n 2076: [16, 31, 32, 31, 32, 31, 30, 30, 30, 29, 29, 30, 30],\n 2077: [17, 31, 32, 31, 32, 31, 30, 30, 30, 29, 30, 29, 31],\n 2078: [17, 31, 31, 31, 32, 31, 31, 30, 29, 30, 29, 30, 30],\n 2079: [17, 31, 31, 32, 31, 31, 31, 30, 29, 30, 29, 30, 30],\n 2080: [16, 31, 32, 31, 32, 31, 30, 30, 30, 29, 29, 30, 30],\n // These data are from http://www.ashesh.com.np/nepali-calendar/\n 2081: [17, 31, 31, 32, 32, 31, 30, 30, 30, 29, 30, 30, 30],\n 2082: [17, 31, 32, 31, 32, 31, 30, 30, 30, 29, 30, 30, 30],\n 2083: [17, 31, 31, 32, 31, 31, 30, 30, 30, 29, 30, 30, 30],\n 2084: [17, 31, 31, 32, 31, 31, 30, 30, 30, 29, 30, 30, 30],\n 2085: [17, 31, 32, 31, 32, 31, 31, 30, 30, 29, 30, 30, 30],\n 2086: [17, 31, 32, 31, 32, 31, 30, 30, 30, 29, 30, 30, 30],\n 2087: [16, 31, 31, 32, 31, 31, 31, 30, 30, 29, 30, 30, 30],\n 2088: [16, 30, 31, 32, 32, 30, 31, 30, 30, 29, 30, 30, 30],\n 2089: [17, 31, 32, 31, 32, 31, 30, 30, 30, 29, 30, 30, 30],\n 2090: [17, 31, 32, 31, 32, 31, 30, 30, 30, 29, 30, 30, 30],\n 2091: [16, 31, 31, 32, 31, 31, 31, 30, 30, 29, 30, 30, 30],\n 2092: [16, 31, 31, 32, 32, 31, 30, 30, 30, 29, 30, 30, 30],\n 2093: [17, 31, 32, 31, 32, 31, 30, 30, 30, 29, 30, 30, 30],\n 2094: [17, 31, 31, 32, 31, 31, 30, 30, 30, 29, 30, 30, 30],\n 2095: [17, 31, 31, 32, 31, 31, 31, 30, 29, 30, 30, 30, 30],\n 2096: [17, 30, 31, 32, 32, 31, 30, 30, 29, 30, 29, 30, 30],\n 2097: [17, 31, 32, 31, 32, 31, 30, 30, 30, 29, 30, 30, 30],\n 2098: [17, 31, 31, 32, 31, 31, 31, 29, 30, 29, 30, 30, 31],\n 2099: [17, 31, 31, 32, 31, 31, 31, 30, 29, 29, 30, 30, 30],\n 2100: [17, 31, 32, 31, 32, 30, 31, 30, 29, 30, 29, 30, 30]\n }\n });\n main.calendars.nepali = NepaliCalendar;\n }\n });\n\n // node_modules/world-calendars/dist/calendars/persian.js\n var require_persian = __commonJS({\n \"node_modules/world-calendars/dist/calendars/persian.js\"() {\n var main = require_main();\n var assign = require_object_assign();\n function PersianCalendar(language) {\n this.local = this.regionalOptions[language || \"\"] || this.regionalOptions[\"\"];\n }\n PersianCalendar.prototype = new main.baseCalendar();\n assign(PersianCalendar.prototype, {\n /** The calendar name.\n @memberof PersianCalendar */\n name: \"Persian\",\n /** Julian date of start of Persian epoch: 19 March 622 CE.\n @memberof PersianCalendar */\n jdEpoch: 19483205e-1,\n /** Days per month in a common year.\n @memberof PersianCalendar */\n daysPerMonth: [31, 31, 31, 31, 31, 31, 30, 30, 30, 30, 30, 29],\n /** true if has a year zero, false if not.\n @memberof PersianCalendar */\n hasYearZero: false,\n /** The minimum month number.\n @memberof PersianCalendar */\n minMonth: 1,\n /** The first month in the year.\n @memberof PersianCalendar */\n firstMonth: 1,\n /** The minimum day number.\n @memberof PersianCalendar */\n minDay: 1,\n /** Localisations for the plugin.\n Entries are objects indexed by the language code ('' being the default US/English).\n Each object has the following attributes.\n @memberof PersianCalendar\n @property name {string} The calendar name.\n @property epochs {string[]} The epoch names.\n @property monthNames {string[]} The long names of the months of the year.\n @property monthNamesShort {string[]} The short names of the months of the year.\n @property dayNames {string[]} The long names of the days of the week.\n @property dayNamesShort {string[]} The short names of the days of the week.\n @property dayNamesMin {string[]} The minimal names of the days of the week.\n @property dateFormat {string} The date format for this calendar.\n See the options on formatDate for details.\n @property firstDay {number} The number of the first day of the week, starting at 0.\n @property isRTL {number} true if this localisation reads right-to-left. */\n regionalOptions: {\n // Localisations\n \"\": {\n name: \"Persian\",\n epochs: [\"BP\", \"AP\"],\n monthNames: [\n \"Farvardin\",\n \"Ordibehesht\",\n \"Khordad\",\n \"Tir\",\n \"Mordad\",\n \"Shahrivar\",\n \"Mehr\",\n \"Aban\",\n \"Azar\",\n \"Day\",\n \"Bahman\",\n \"Esfand\"\n ],\n monthNamesShort: [\"Far\", \"Ord\", \"Kho\", \"Tir\", \"Mor\", \"Sha\", \"Meh\", \"Aba\", \"Aza\", \"Day\", \"Bah\", \"Esf\"],\n dayNames: [\"Yekshambe\", \"Doshambe\", \"Seshambe\", \"Ch\\xE6harshambe\", \"Panjshambe\", \"Jom'e\", \"Shambe\"],\n dayNamesShort: [\"Yek\", \"Do\", \"Se\", \"Ch\\xE6\", \"Panj\", \"Jom\", \"Sha\"],\n dayNamesMin: [\"Ye\", \"Do\", \"Se\", \"Ch\", \"Pa\", \"Jo\", \"Sh\"],\n digits: null,\n dateFormat: \"yyyy/mm/dd\",\n firstDay: 6,\n isRTL: false\n }\n },\n /** Determine whether this date is in a leap year.\n @memberof PersianCalendar\n @param year {CDate|number} The date to examine or the year to examine.\n @return {boolean} true if this is a leap year, false if not.\n @throws Error if an invalid year or a different calendar used. */\n leapYear: function(year) {\n var date = this._validate(year, this.minMonth, this.minDay, main.local.invalidYear);\n return ((date.year() - (date.year() > 0 ? 474 : 473)) % 2820 + 474 + 38) * 682 % 2816 < 682;\n },\n /** Determine the week of the year for a date.\n @memberof PersianCalendar\n @param year {CDate|number} The date to examine or the year to examine.\n @param [month] {number} The month to examine.\n @param [day] {number} The day to examine.\n @return {number} The week of the year.\n @throws Error if an invalid date or a different calendar used. */\n weekOfYear: function(year, month, day) {\n var checkDate = this.newDate(year, month, day);\n checkDate.add(-((checkDate.dayOfWeek() + 1) % 7), \"d\");\n return Math.floor((checkDate.dayOfYear() - 1) / 7) + 1;\n },\n /** Retrieve the number of days in a month.\n @memberof PersianCalendar\n @param year {CDate|number} The date to examine or the year of the month.\n @param [month] {number} The month.\n @return {number} The number of days in this month.\n @throws Error if an invalid month/year or a different calendar used. */\n daysInMonth: function(year, month) {\n var date = this._validate(year, month, this.minDay, main.local.invalidMonth);\n return this.daysPerMonth[date.month() - 1] + (date.month() === 12 && this.leapYear(date.year()) ? 1 : 0);\n },\n /** Determine whether this date is a week day.\n @memberof PersianCalendar\n @param year {CDate|number} The date to examine or the year to examine.\n @param [month] {number} The month to examine.\n @param [day] {number} The day to examine.\n @return {boolean} true if a week day, false if not.\n @throws Error if an invalid date or a different calendar used. */\n weekDay: function(year, month, day) {\n return this.dayOfWeek(year, month, day) !== 5;\n },\n /** Retrieve the Julian date equivalent for this date,\n i.e. days since January 1, 4713 BCE Greenwich noon.\n @memberof PersianCalendar\n @param year {CDate|number} The date to convert or the year to convert.\n @param [month] {number} The month to convert.\n @param [day] {number} The day to convert.\n @return {number} The equivalent Julian date.\n @throws Error if an invalid date or a different calendar used. */\n toJD: function(year, month, day) {\n var date = this._validate(year, month, day, main.local.invalidDate);\n year = date.year();\n month = date.month();\n day = date.day();\n var epBase = year - (year >= 0 ? 474 : 473);\n var epYear = 474 + mod(epBase, 2820);\n return day + (month <= 7 ? (month - 1) * 31 : (month - 1) * 30 + 6) + Math.floor((epYear * 682 - 110) / 2816) + (epYear - 1) * 365 + Math.floor(epBase / 2820) * 1029983 + this.jdEpoch - 1;\n },\n /** Create a new date from a Julian date.\n @memberof PersianCalendar\n @param jd {number} The Julian date to convert.\n @return {CDate} The equivalent date. */\n fromJD: function(jd) {\n jd = Math.floor(jd) + 0.5;\n var depoch = jd - this.toJD(475, 1, 1);\n var cycle = Math.floor(depoch / 1029983);\n var cyear = mod(depoch, 1029983);\n var ycycle = 2820;\n if (cyear !== 1029982) {\n var aux1 = Math.floor(cyear / 366);\n var aux2 = mod(cyear, 366);\n ycycle = Math.floor((2134 * aux1 + 2816 * aux2 + 2815) / 1028522) + aux1 + 1;\n }\n var year = ycycle + 2820 * cycle + 474;\n year = year <= 0 ? year - 1 : year;\n var yday = jd - this.toJD(year, 1, 1) + 1;\n var month = yday <= 186 ? Math.ceil(yday / 31) : Math.ceil((yday - 6) / 30);\n var day = jd - this.toJD(year, month, 1) + 1;\n return this.newDate(year, month, day);\n }\n });\n function mod(a, b) {\n return a - b * Math.floor(a / b);\n }\n main.calendars.persian = PersianCalendar;\n main.calendars.jalali = PersianCalendar;\n }\n });\n\n // node_modules/world-calendars/dist/calendars/taiwan.js\n var require_taiwan = __commonJS({\n \"node_modules/world-calendars/dist/calendars/taiwan.js\"() {\n var main = require_main();\n var assign = require_object_assign();\n var gregorianCalendar = main.instance();\n function TaiwanCalendar(language) {\n this.local = this.regionalOptions[language || \"\"] || this.regionalOptions[\"\"];\n }\n TaiwanCalendar.prototype = new main.baseCalendar();\n assign(TaiwanCalendar.prototype, {\n /** The calendar name.\n @memberof TaiwanCalendar */\n name: \"Taiwan\",\n /** Julian date of start of Taiwan epoch: 1 January 1912 CE (Gregorian).\n @memberof TaiwanCalendar */\n jdEpoch: 24194025e-1,\n /** Difference in years between Taiwan and Gregorian calendars.\n @memberof TaiwanCalendar */\n yearsOffset: 1911,\n /** Days per month in a common year.\n @memberof TaiwanCalendar */\n daysPerMonth: [31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31],\n /** true if has a year zero, false if not.\n @memberof TaiwanCalendar */\n hasYearZero: false,\n /** The minimum month number.\n @memberof TaiwanCalendar */\n minMonth: 1,\n /** The first month in the year.\n @memberof TaiwanCalendar */\n firstMonth: 1,\n /** The minimum day number.\n @memberof TaiwanCalendar */\n minDay: 1,\n /** Localisations for the plugin.\n Entries are objects indexed by the language code ('' being the default US/English).\n Each object has the following attributes.\n @memberof TaiwanCalendar\n @property name {string} The calendar name.\n @property epochs {string[]} The epoch names.\n @property monthNames {string[]} The long names of the months of the year.\n @property monthNamesShort {string[]} The short names of the months of the year.\n @property dayNames {string[]} The long names of the days of the week.\n @property dayNamesShort {string[]} The short names of the days of the week.\n @property dayNamesMin {string[]} The minimal names of the days of the week.\n @property dateFormat {string} The date format for this calendar.\n See the options on formatDate for details.\n @property firstDay {number} The number of the first day of the week, starting at 0.\n @property isRTL {number} true if this localisation reads right-to-left. */\n regionalOptions: {\n // Localisations\n \"\": {\n name: \"Taiwan\",\n epochs: [\"BROC\", \"ROC\"],\n monthNames: [\n \"January\",\n \"February\",\n \"March\",\n \"April\",\n \"May\",\n \"June\",\n \"July\",\n \"August\",\n \"September\",\n \"October\",\n \"November\",\n \"December\"\n ],\n monthNamesShort: [\"Jan\", \"Feb\", \"Mar\", \"Apr\", \"May\", \"Jun\", \"Jul\", \"Aug\", \"Sep\", \"Oct\", \"Nov\", \"Dec\"],\n dayNames: [\"Sunday\", \"Monday\", \"Tuesday\", \"Wednesday\", \"Thursday\", \"Friday\", \"Saturday\"],\n dayNamesShort: [\"Sun\", \"Mon\", \"Tue\", \"Wed\", \"Thu\", \"Fri\", \"Sat\"],\n dayNamesMin: [\"Su\", \"Mo\", \"Tu\", \"We\", \"Th\", \"Fr\", \"Sa\"],\n digits: null,\n dateFormat: \"yyyy/mm/dd\",\n firstDay: 1,\n isRTL: false\n }\n },\n /** Determine whether this date is in a leap year.\n @memberof TaiwanCalendar\n @param year {CDate|number} The date to examine or the year to examine.\n @return {boolean} true if this is a leap year, false if not.\n @throws Error if an invalid year or a different calendar used. */\n leapYear: function(year) {\n var date = this._validate(year, this.minMonth, this.minDay, main.local.invalidYear);\n var year = this._t2gYear(date.year());\n return gregorianCalendar.leapYear(year);\n },\n /** Determine the week of the year for a date - ISO 8601.\n @memberof TaiwanCalendar\n @param year {CDate|number} The date to examine or the year to examine.\n @param [month] {number} The month to examine.\n @param [day] {number} The day to examine.\n @return {number} The week of the year.\n @throws Error if an invalid date or a different calendar used. */\n weekOfYear: function(year, month, day) {\n var date = this._validate(year, this.minMonth, this.minDay, main.local.invalidYear);\n var year = this._t2gYear(date.year());\n return gregorianCalendar.weekOfYear(year, date.month(), date.day());\n },\n /** Retrieve the number of days in a month.\n @memberof TaiwanCalendar\n @param year {CDate|number} The date to examine or the year of the month.\n @param [month] {number} The month.\n @return {number} The number of days in this month.\n @throws Error if an invalid month/year or a different calendar used. */\n daysInMonth: function(year, month) {\n var date = this._validate(year, month, this.minDay, main.local.invalidMonth);\n return this.daysPerMonth[date.month() - 1] + (date.month() === 2 && this.leapYear(date.year()) ? 1 : 0);\n },\n /** Determine whether this date is a week day.\n @memberof TaiwanCalendar\n @param year {CDate|number} The date to examine or the year to examine.\n @param [month] {number} The month to examine.\n @param [day] {number} The day to examine.\n @return {boolean} true if a week day, false if not.\n @throws Error if an invalid date or a different calendar used. */\n weekDay: function(year, month, day) {\n return (this.dayOfWeek(year, month, day) || 7) < 6;\n },\n /** Retrieve the Julian date equivalent for this date,\n i.e. days since January 1, 4713 BCE Greenwich noon.\n @memberof TaiwanCalendar\n @param year {CDate|number} The date to convert or the year to convert.\n @param [month] {number} The month to convert.\n @param [day] {number} The day to convert.\n @return {number} The equivalent Julian date.\n @throws Error if an invalid date or a different calendar used. */\n toJD: function(year, month, day) {\n var date = this._validate(year, month, day, main.local.invalidDate);\n var year = this._t2gYear(date.year());\n return gregorianCalendar.toJD(year, date.month(), date.day());\n },\n /** Create a new date from a Julian date.\n @memberof TaiwanCalendar\n @param jd {number} The Julian date to convert.\n @return {CDate} The equivalent date. */\n fromJD: function(jd) {\n var date = gregorianCalendar.fromJD(jd);\n var year = this._g2tYear(date.year());\n return this.newDate(year, date.month(), date.day());\n },\n /** Convert Taiwanese to Gregorian year.\n @memberof TaiwanCalendar\n @private\n @param year {number} The Taiwanese year.\n @return {number} The corresponding Gregorian year. */\n _t2gYear: function(year) {\n return year + this.yearsOffset + (year >= -this.yearsOffset && year <= -1 ? 1 : 0);\n },\n /** Convert Gregorian to Taiwanese year.\n @memberof TaiwanCalendar\n @private\n @param year {number} The Gregorian year.\n @return {number} The corresponding Taiwanese year. */\n _g2tYear: function(year) {\n return year - this.yearsOffset - (year >= 1 && year <= this.yearsOffset ? 1 : 0);\n }\n });\n main.calendars.taiwan = TaiwanCalendar;\n }\n });\n\n // node_modules/world-calendars/dist/calendars/thai.js\n var require_thai = __commonJS({\n \"node_modules/world-calendars/dist/calendars/thai.js\"() {\n var main = require_main();\n var assign = require_object_assign();\n var gregorianCalendar = main.instance();\n function ThaiCalendar(language) {\n this.local = this.regionalOptions[language || \"\"] || this.regionalOptions[\"\"];\n }\n ThaiCalendar.prototype = new main.baseCalendar();\n assign(ThaiCalendar.prototype, {\n /** The calendar name.\n @memberof ThaiCalendar */\n name: \"Thai\",\n /** Julian date of start of Thai epoch: 1 January 543 BCE (Gregorian).\n @memberof ThaiCalendar */\n jdEpoch: 15230985e-1,\n /** Difference in years between Thai and Gregorian calendars.\n @memberof ThaiCalendar */\n yearsOffset: 543,\n /** Days per month in a common year.\n @memberof ThaiCalendar */\n daysPerMonth: [31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31],\n /** true if has a year zero, false if not.\n @memberof ThaiCalendar */\n hasYearZero: false,\n /** The minimum month number.\n @memberof ThaiCalendar */\n minMonth: 1,\n /** The first month in the year.\n @memberof ThaiCalendar */\n firstMonth: 1,\n /** The minimum day number.\n @memberof ThaiCalendar */\n minDay: 1,\n /** Localisations for the plugin.\n Entries are objects indexed by the language code ('' being the default US/English).\n Each object has the following attributes.\n @memberof ThaiCalendar\n @property name {string} The calendar name.\n @property epochs {string[]} The epoch names.\n @property monthNames {string[]} The long names of the months of the year.\n @property monthNamesShort {string[]} The short names of the months of the year.\n @property dayNames {string[]} The long names of the days of the week.\n @property dayNamesShort {string[]} The short names of the days of the week.\n @property dayNamesMin {string[]} The minimal names of the days of the week.\n @property dateFormat {string} The date format for this calendar.\n See the options on formatDate for details.\n @property firstDay {number} The number of the first day of the week, starting at 0.\n @property isRTL {number} true if this localisation reads right-to-left. */\n regionalOptions: {\n // Localisations\n \"\": {\n name: \"Thai\",\n epochs: [\"BBE\", \"BE\"],\n monthNames: [\n \"January\",\n \"February\",\n \"March\",\n \"April\",\n \"May\",\n \"June\",\n \"July\",\n \"August\",\n \"September\",\n \"October\",\n \"November\",\n \"December\"\n ],\n monthNamesShort: [\"Jan\", \"Feb\", \"Mar\", \"Apr\", \"May\", \"Jun\", \"Jul\", \"Aug\", \"Sep\", \"Oct\", \"Nov\", \"Dec\"],\n dayNames: [\"Sunday\", \"Monday\", \"Tuesday\", \"Wednesday\", \"Thursday\", \"Friday\", \"Saturday\"],\n dayNamesShort: [\"Sun\", \"Mon\", \"Tue\", \"Wed\", \"Thu\", \"Fri\", \"Sat\"],\n dayNamesMin: [\"Su\", \"Mo\", \"Tu\", \"We\", \"Th\", \"Fr\", \"Sa\"],\n digits: null,\n dateFormat: \"dd/mm/yyyy\",\n firstDay: 0,\n isRTL: false\n }\n },\n /** Determine whether this date is in a leap year.\n @memberof ThaiCalendar\n @param year {CDate|number} The date to examine or the year to examine.\n @return {boolean} true if this is a leap year, false if not.\n @throws Error if an invalid year or a different calendar used. */\n leapYear: function(year) {\n var date = this._validate(year, this.minMonth, this.minDay, main.local.invalidYear);\n var year = this._t2gYear(date.year());\n return gregorianCalendar.leapYear(year);\n },\n /** Determine the week of the year for a date - ISO 8601.\n @memberof ThaiCalendar\n @param year {CDate|number} The date to examine or the year to examine.\n @param [month] {number} The month to examine.\n @param [day] {number} The day to examine.\n @return {number} The week of the year.\n @throws Error if an invalid date or a different calendar used. */\n weekOfYear: function(year, month, day) {\n var date = this._validate(year, this.minMonth, this.minDay, main.local.invalidYear);\n var year = this._t2gYear(date.year());\n return gregorianCalendar.weekOfYear(year, date.month(), date.day());\n },\n /** Retrieve the number of days in a month.\n @memberof ThaiCalendar\n @param year {CDate|number} The date to examine or the year of the month.\n @param [month] {number} The month.\n @return {number} The number of days in this month.\n @throws Error if an invalid month/year or a different calendar used. */\n daysInMonth: function(year, month) {\n var date = this._validate(year, month, this.minDay, main.local.invalidMonth);\n return this.daysPerMonth[date.month() - 1] + (date.month() === 2 && this.leapYear(date.year()) ? 1 : 0);\n },\n /** Determine whether this date is a week day.\n @memberof ThaiCalendar\n @param year {CDate|number} The date to examine or the year to examine.\n @param [month] {number} The month to examine.\n @param [day] {number} The day to examine.\n @return {boolean} true if a week day, false if not.\n @throws Error if an invalid date or a different calendar used. */\n weekDay: function(year, month, day) {\n return (this.dayOfWeek(year, month, day) || 7) < 6;\n },\n /** Retrieve the Julian date equivalent for this date,\n i.e. days since January 1, 4713 BCE Greenwich noon.\n @memberof ThaiCalendar\n @param year {CDate|number} The date to convert or the year to convert.\n @param [month] {number} The month to convert.\n @param [day] {number} The day to convert.\n @return {number} The equivalent Julian date.\n @throws Error if an invalid date or a different calendar used. */\n toJD: function(year, month, day) {\n var date = this._validate(year, month, day, main.local.invalidDate);\n var year = this._t2gYear(date.year());\n return gregorianCalendar.toJD(year, date.month(), date.day());\n },\n /** Create a new date from a Julian date.\n @memberof ThaiCalendar\n @param jd {number} The Julian date to convert.\n @return {CDate} The equivalent date. */\n fromJD: function(jd) {\n var date = gregorianCalendar.fromJD(jd);\n var year = this._g2tYear(date.year());\n return this.newDate(year, date.month(), date.day());\n },\n /** Convert Thai to Gregorian year.\n @memberof ThaiCalendar\n @private\n @param year {number} The Thai year.\n @return {number} The corresponding Gregorian year. */\n _t2gYear: function(year) {\n return year - this.yearsOffset - (year >= 1 && year <= this.yearsOffset ? 1 : 0);\n },\n /** Convert Gregorian to Thai year.\n @memberof ThaiCalendar\n @private\n @param year {number} The Gregorian year.\n @return {number} The corresponding Thai year. */\n _g2tYear: function(year) {\n return year + this.yearsOffset + (year >= -this.yearsOffset && year <= -1 ? 1 : 0);\n }\n });\n main.calendars.thai = ThaiCalendar;\n }\n });\n\n // node_modules/world-calendars/dist/calendars/ummalqura.js\n var require_ummalqura = __commonJS({\n \"node_modules/world-calendars/dist/calendars/ummalqura.js\"() {\n var main = require_main();\n var assign = require_object_assign();\n function UmmAlQuraCalendar(language) {\n this.local = this.regionalOptions[language || \"\"] || this.regionalOptions[\"\"];\n }\n UmmAlQuraCalendar.prototype = new main.baseCalendar();\n assign(UmmAlQuraCalendar.prototype, {\n /** The calendar name.\n @memberof UmmAlQuraCalendar */\n name: \"UmmAlQura\",\n //jdEpoch: 1948440, // Julian date of start of UmmAlQura epoch: 14 March 1937 CE\n //daysPerMonth: // Days per month in a common year, replaced by a method.\n /** true if has a year zero, false if not.\n @memberof UmmAlQuraCalendar */\n hasYearZero: false,\n /** The minimum month number.\n @memberof UmmAlQuraCalendar */\n minMonth: 1,\n /** The first month in the year.\n @memberof UmmAlQuraCalendar */\n firstMonth: 1,\n /** The minimum day number.\n @memberof UmmAlQuraCalendar */\n minDay: 1,\n /** Localisations for the plugin.\n Entries are objects indexed by the language code ('' being the default US/English).\n Each object has the following attributes.\n @memberof UmmAlQuraCalendar\n @property name {string} The calendar name.\n @property epochs {string[]} The epoch names.\n @property monthNames {string[]} The long names of the months of the year.\n @property monthNamesShort {string[]} The short names of the months of the year.\n @property dayNames {string[]} The long names of the days of the week.\n @property dayNamesShort {string[]} The short names of the days of the week.\n @property dayNamesMin {string[]} The minimal names of the days of the week.\n @property dateFormat {string} The date format for this calendar.\n See the options on formatDate for details.\n @property firstDay {number} The number of the first day of the week, starting at 0.\n @property isRTL {number} true if this localisation reads right-to-left. */\n regionalOptions: {\n // Localisations\n \"\": {\n name: \"Umm al-Qura\",\n epochs: [\"BH\", \"AH\"],\n monthNames: [\n \"Al-Muharram\",\n \"Safar\",\n \"Rabi' al-awwal\",\n \"Rabi' Al-Thani\",\n \"Jumada Al-Awwal\",\n \"Jumada Al-Thani\",\n \"Rajab\",\n \"Sha'aban\",\n \"Ramadan\",\n \"Shawwal\",\n \"Dhu al-Qi'dah\",\n \"Dhu al-Hijjah\"\n ],\n monthNamesShort: [\"Muh\", \"Saf\", \"Rab1\", \"Rab2\", \"Jum1\", \"Jum2\", \"Raj\", \"Sha'\", \"Ram\", \"Shaw\", \"DhuQ\", \"DhuH\"],\n dayNames: [\"Yawm al-Ahad\", \"Yawm al-Ithnain\", \"Yawm al-Thal\\u0101th\\u0101\\u2019\", \"Yawm al-Arba\\u2018\\u0101\\u2019\", \"Yawm al-Kham\\u012Bs\", \"Yawm al-Jum\\u2018a\", \"Yawm al-Sabt\"],\n dayNamesMin: [\"Ah\", \"Ith\", \"Th\", \"Ar\", \"Kh\", \"Ju\", \"Sa\"],\n digits: null,\n dateFormat: \"yyyy/mm/dd\",\n firstDay: 6,\n isRTL: true\n }\n },\n /** Determine whether this date is in a leap year.\n @memberof UmmAlQuraCalendar\n @param year {CDate|number} The date to examine or the year to examine.\n @return {boolean} true if this is a leap year, false if not.\n @throws Error if an invalid year or a different calendar used. */\n leapYear: function(year) {\n var date = this._validate(year, this.minMonth, this.minDay, main.local.invalidYear);\n return this.daysInYear(date.year()) === 355;\n },\n /** Determine the week of the year for a date.\n @memberof UmmAlQuraCalendar\n @param year {CDate|number} The date to examine or the year to examine.\n @param [month] {number} The month to examine.\n @param [day] {number} The day to examine.\n @return {number} The week of the year.\n @throws Error if an invalid date or a different calendar used. */\n weekOfYear: function(year, month, day) {\n var checkDate = this.newDate(year, month, day);\n checkDate.add(-checkDate.dayOfWeek(), \"d\");\n return Math.floor((checkDate.dayOfYear() - 1) / 7) + 1;\n },\n /** Retrieve the number of days in a year.\n @memberof UmmAlQuraCalendar\n @param year {CDate|number} The date to examine or the year to examine.\n @return {number} The number of days.\n @throws Error if an invalid year or a different calendar used. */\n daysInYear: function(year) {\n var daysCount = 0;\n for (var i = 1; i <= 12; i++) {\n daysCount += this.daysInMonth(year, i);\n }\n return daysCount;\n },\n /** Retrieve the number of days in a month.\n @memberof UmmAlQuraCalendar\n @param year {CDate|number} The date to examine or the year of the month.\n @param [month] {number} The month.\n @return {number} The number of days in this month.\n @throws Error if an invalid month/year or a different calendar used. */\n daysInMonth: function(year, month) {\n var date = this._validate(year, month, this.minDay, main.local.invalidMonth);\n var mcjdn = date.toJD() - 24e5 + 0.5;\n var index = 0;\n for (var i = 0; i < ummalqura_dat.length; i++) {\n if (ummalqura_dat[i] > mcjdn) {\n return ummalqura_dat[index] - ummalqura_dat[index - 1];\n }\n index++;\n }\n return 30;\n },\n /** Determine whether this date is a week day.\n @memberof UmmAlQuraCalendar\n @param year {CDate|number} The date to examine or the year to examine.\n @param [month] {number} The month to examine.\n @param [day] {number} The day to examine.\n @return {boolean} true if a week day, false if not.\n @throws Error if an invalid date or a different calendar used. */\n weekDay: function(year, month, day) {\n return this.dayOfWeek(year, month, day) !== 5;\n },\n /** Retrieve the Julian date equivalent for this date,\n i.e. days since January 1, 4713 BCE Greenwich noon.\n @memberof UmmAlQuraCalendar\n @param year {CDate|number} The date to convert or the year to convert.\n @param [month] {number} The month to convert.\n @param [day] {number} The day to convert.\n @return {number} The equivalent Julian date.\n @throws Error if an invalid date or a different calendar used. */\n toJD: function(year, month, day) {\n var date = this._validate(year, month, day, main.local.invalidDate);\n var index = 12 * (date.year() - 1) + date.month() - 15292;\n var mcjdn = date.day() + ummalqura_dat[index - 1] - 1;\n return mcjdn + 24e5 - 0.5;\n },\n /** Create a new date from a Julian date.\n @memberof UmmAlQuraCalendar\n @param jd {number} The Julian date to convert.\n @return {CDate} The equivalent date. */\n fromJD: function(jd) {\n var mcjdn = jd - 24e5 + 0.5;\n var index = 0;\n for (var i = 0; i < ummalqura_dat.length; i++) {\n if (ummalqura_dat[i] > mcjdn) break;\n index++;\n }\n var lunation = index + 15292;\n var ii = Math.floor((lunation - 1) / 12);\n var year = ii + 1;\n var month = lunation - 12 * ii;\n var day = mcjdn - ummalqura_dat[index - 1] + 1;\n return this.newDate(year, month, day);\n },\n /** Determine whether a date is valid for this calendar.\n @memberof UmmAlQuraCalendar\n @param year {number} The year to examine.\n @param month {number} The month to examine.\n @param day {number} The day to examine.\n @return {boolean} true if a valid date, false if not. */\n isValid: function(year, month, day) {\n var valid = main.baseCalendar.prototype.isValid.apply(this, arguments);\n if (valid) {\n year = year.year != null ? year.year : year;\n valid = year >= 1276 && year <= 1500;\n }\n return valid;\n },\n /** Check that a candidate date is from the same calendar and is valid.\n @memberof UmmAlQuraCalendar\n @private\n @param year {CDate|number} The date to validate or the year to validate.\n @param month {number} The month to validate.\n @param day {number} The day to validate.\n @param error {string} Error message if invalid.\n @throws Error if different calendars used or invalid date. */\n _validate: function(year, month, day, error) {\n var date = main.baseCalendar.prototype._validate.apply(this, arguments);\n if (date.year < 1276 || date.year > 1500) {\n throw error.replace(/\\{0\\}/, this.local.name);\n }\n return date;\n }\n });\n main.calendars.ummalqura = UmmAlQuraCalendar;\n var ummalqura_dat = [\n 20,\n 50,\n 79,\n 109,\n 138,\n 168,\n 197,\n 227,\n 256,\n 286,\n 315,\n 345,\n 374,\n 404,\n 433,\n 463,\n 492,\n 522,\n 551,\n 581,\n 611,\n 641,\n 670,\n 700,\n 729,\n 759,\n 788,\n 818,\n 847,\n 877,\n 906,\n 936,\n 965,\n 995,\n 1024,\n 1054,\n 1083,\n 1113,\n 1142,\n 1172,\n 1201,\n 1231,\n 1260,\n 1290,\n 1320,\n 1350,\n 1379,\n 1409,\n 1438,\n 1468,\n 1497,\n 1527,\n 1556,\n 1586,\n 1615,\n 1645,\n 1674,\n 1704,\n 1733,\n 1763,\n 1792,\n 1822,\n 1851,\n 1881,\n 1910,\n 1940,\n 1969,\n 1999,\n 2028,\n 2058,\n 2087,\n 2117,\n 2146,\n 2176,\n 2205,\n 2235,\n 2264,\n 2294,\n 2323,\n 2353,\n 2383,\n 2413,\n 2442,\n 2472,\n 2501,\n 2531,\n 2560,\n 2590,\n 2619,\n 2649,\n 2678,\n 2708,\n 2737,\n 2767,\n 2796,\n 2826,\n 2855,\n 2885,\n 2914,\n 2944,\n 2973,\n 3003,\n 3032,\n 3062,\n 3091,\n 3121,\n 3150,\n 3180,\n 3209,\n 3239,\n 3268,\n 3298,\n 3327,\n 3357,\n 3386,\n 3416,\n 3446,\n 3476,\n 3505,\n 3535,\n 3564,\n 3594,\n 3623,\n 3653,\n 3682,\n 3712,\n 3741,\n 3771,\n 3800,\n 3830,\n 3859,\n 3889,\n 3918,\n 3948,\n 3977,\n 4007,\n 4036,\n 4066,\n 4095,\n 4125,\n 4155,\n 4185,\n 4214,\n 4244,\n 4273,\n 4303,\n 4332,\n 4362,\n 4391,\n 4421,\n 4450,\n 4480,\n 4509,\n 4539,\n 4568,\n 4598,\n 4627,\n 4657,\n 4686,\n 4716,\n 4745,\n 4775,\n 4804,\n 4834,\n 4863,\n 4893,\n 4922,\n 4952,\n 4981,\n 5011,\n 5040,\n 5070,\n 5099,\n 5129,\n 5158,\n 5188,\n 5218,\n 5248,\n 5277,\n 5307,\n 5336,\n 5366,\n 5395,\n 5425,\n 5454,\n 5484,\n 5513,\n 5543,\n 5572,\n 5602,\n 5631,\n 5661,\n 5690,\n 5720,\n 5749,\n 5779,\n 5808,\n 5838,\n 5867,\n 5897,\n 5926,\n 5956,\n 5985,\n 6015,\n 6044,\n 6074,\n 6103,\n 6133,\n 6162,\n 6192,\n 6221,\n 6251,\n 6281,\n 6311,\n 6340,\n 6370,\n 6399,\n 6429,\n 6458,\n 6488,\n 6517,\n 6547,\n 6576,\n 6606,\n 6635,\n 6665,\n 6694,\n 6724,\n 6753,\n 6783,\n 6812,\n 6842,\n 6871,\n 6901,\n 6930,\n 6960,\n 6989,\n 7019,\n 7048,\n 7078,\n 7107,\n 7137,\n 7166,\n 7196,\n 7225,\n 7255,\n 7284,\n 7314,\n 7344,\n 7374,\n 7403,\n 7433,\n 7462,\n 7492,\n 7521,\n 7551,\n 7580,\n 7610,\n 7639,\n 7669,\n 7698,\n 7728,\n 7757,\n 7787,\n 7816,\n 7846,\n 7875,\n 7905,\n 7934,\n 7964,\n 7993,\n 8023,\n 8053,\n 8083,\n 8112,\n 8142,\n 8171,\n 8201,\n 8230,\n 8260,\n 8289,\n 8319,\n 8348,\n 8378,\n 8407,\n 8437,\n 8466,\n 8496,\n 8525,\n 8555,\n 8584,\n 8614,\n 8643,\n 8673,\n 8702,\n 8732,\n 8761,\n 8791,\n 8821,\n 8850,\n 8880,\n 8909,\n 8938,\n 8968,\n 8997,\n 9027,\n 9056,\n 9086,\n 9115,\n 9145,\n 9175,\n 9205,\n 9234,\n 9264,\n 9293,\n 9322,\n 9352,\n 9381,\n 9410,\n 9440,\n 9470,\n 9499,\n 9529,\n 9559,\n 9589,\n 9618,\n 9648,\n 9677,\n 9706,\n 9736,\n 9765,\n 9794,\n 9824,\n 9853,\n 9883,\n 9913,\n 9943,\n 9972,\n 10002,\n 10032,\n 10061,\n 10090,\n 10120,\n 10149,\n 10178,\n 10208,\n 10237,\n 10267,\n 10297,\n 10326,\n 10356,\n 10386,\n 10415,\n 10445,\n 10474,\n 10504,\n 10533,\n 10562,\n 10592,\n 10621,\n 10651,\n 10680,\n 10710,\n 10740,\n 10770,\n 10799,\n 10829,\n 10858,\n 10888,\n 10917,\n 10947,\n 10976,\n 11005,\n 11035,\n 11064,\n 11094,\n 11124,\n 11153,\n 11183,\n 11213,\n 11242,\n 11272,\n 11301,\n 11331,\n 11360,\n 11389,\n 11419,\n 11448,\n 11478,\n 11507,\n 11537,\n 11567,\n 11596,\n 11626,\n 11655,\n 11685,\n 11715,\n 11744,\n 11774,\n 11803,\n 11832,\n 11862,\n 11891,\n 11921,\n 11950,\n 11980,\n 12010,\n 12039,\n 12069,\n 12099,\n 12128,\n 12158,\n 12187,\n 12216,\n 12246,\n 12275,\n 12304,\n 12334,\n 12364,\n 12393,\n 12423,\n 12453,\n 12483,\n 12512,\n 12542,\n 12571,\n 12600,\n 12630,\n 12659,\n 12688,\n 12718,\n 12747,\n 12777,\n 12807,\n 12837,\n 12866,\n 12896,\n 12926,\n 12955,\n 12984,\n 13014,\n 13043,\n 13072,\n 13102,\n 13131,\n 13161,\n 13191,\n 13220,\n 13250,\n 13280,\n 13310,\n 13339,\n 13368,\n 13398,\n 13427,\n 13456,\n 13486,\n 13515,\n 13545,\n 13574,\n 13604,\n 13634,\n 13664,\n 13693,\n 13723,\n 13752,\n 13782,\n 13811,\n 13840,\n 13870,\n 13899,\n 13929,\n 13958,\n 13988,\n 14018,\n 14047,\n 14077,\n 14107,\n 14136,\n 14166,\n 14195,\n 14224,\n 14254,\n 14283,\n 14313,\n 14342,\n 14372,\n 14401,\n 14431,\n 14461,\n 14490,\n 14520,\n 14550,\n 14579,\n 14609,\n 14638,\n 14667,\n 14697,\n 14726,\n 14756,\n 14785,\n 14815,\n 14844,\n 14874,\n 14904,\n 14933,\n 14963,\n 14993,\n 15021,\n 15051,\n 15081,\n 15110,\n 15140,\n 15169,\n 15199,\n 15228,\n 15258,\n 15287,\n 15317,\n 15347,\n 15377,\n 15406,\n 15436,\n 15465,\n 15494,\n 15524,\n 15553,\n 15582,\n 15612,\n 15641,\n 15671,\n 15701,\n 15731,\n 15760,\n 15790,\n 15820,\n 15849,\n 15878,\n 15908,\n 15937,\n 15966,\n 15996,\n 16025,\n 16055,\n 16085,\n 16114,\n 16144,\n 16174,\n 16204,\n 16233,\n 16262,\n 16292,\n 16321,\n 16350,\n 16380,\n 16409,\n 16439,\n 16468,\n 16498,\n 16528,\n 16558,\n 16587,\n 16617,\n 16646,\n 16676,\n 16705,\n 16734,\n 16764,\n 16793,\n 16823,\n 16852,\n 16882,\n 16912,\n 16941,\n 16971,\n 17001,\n 17030,\n 17060,\n 17089,\n 17118,\n 17148,\n 17177,\n 17207,\n 17236,\n 17266,\n 17295,\n 17325,\n 17355,\n 17384,\n 17414,\n 17444,\n 17473,\n 17502,\n 17532,\n 17561,\n 17591,\n 17620,\n 17650,\n 17679,\n 17709,\n 17738,\n 17768,\n 17798,\n 17827,\n 17857,\n 17886,\n 17916,\n 17945,\n 17975,\n 18004,\n 18034,\n 18063,\n 18093,\n 18122,\n 18152,\n 18181,\n 18211,\n 18241,\n 18270,\n 18300,\n 18330,\n 18359,\n 18388,\n 18418,\n 18447,\n 18476,\n 18506,\n 18535,\n 18565,\n 18595,\n 18625,\n 18654,\n 18684,\n 18714,\n 18743,\n 18772,\n 18802,\n 18831,\n 18860,\n 18890,\n 18919,\n 18949,\n 18979,\n 19008,\n 19038,\n 19068,\n 19098,\n 19127,\n 19156,\n 19186,\n 19215,\n 19244,\n 19274,\n 19303,\n 19333,\n 19362,\n 19392,\n 19422,\n 19452,\n 19481,\n 19511,\n 19540,\n 19570,\n 19599,\n 19628,\n 19658,\n 19687,\n 19717,\n 19746,\n 19776,\n 19806,\n 19836,\n 19865,\n 19895,\n 19924,\n 19954,\n 19983,\n 20012,\n 20042,\n 20071,\n 20101,\n 20130,\n 20160,\n 20190,\n 20219,\n 20249,\n 20279,\n 20308,\n 20338,\n 20367,\n 20396,\n 20426,\n 20455,\n 20485,\n 20514,\n 20544,\n 20573,\n 20603,\n 20633,\n 20662,\n 20692,\n 20721,\n 20751,\n 20780,\n 20810,\n 20839,\n 20869,\n 20898,\n 20928,\n 20957,\n 20987,\n 21016,\n 21046,\n 21076,\n 21105,\n 21135,\n 21164,\n 21194,\n 21223,\n 21253,\n 21282,\n 21312,\n 21341,\n 21371,\n 21400,\n 21430,\n 21459,\n 21489,\n 21519,\n 21548,\n 21578,\n 21607,\n 21637,\n 21666,\n 21696,\n 21725,\n 21754,\n 21784,\n 21813,\n 21843,\n 21873,\n 21902,\n 21932,\n 21962,\n 21991,\n 22021,\n 22050,\n 22080,\n 22109,\n 22138,\n 22168,\n 22197,\n 22227,\n 22256,\n 22286,\n 22316,\n 22346,\n 22375,\n 22405,\n 22434,\n 22464,\n 22493,\n 22522,\n 22552,\n 22581,\n 22611,\n 22640,\n 22670,\n 22700,\n 22730,\n 22759,\n 22789,\n 22818,\n 22848,\n 22877,\n 22906,\n 22936,\n 22965,\n 22994,\n 23024,\n 23054,\n 23083,\n 23113,\n 23143,\n 23173,\n 23202,\n 23232,\n 23261,\n 23290,\n 23320,\n 23349,\n 23379,\n 23408,\n 23438,\n 23467,\n 23497,\n 23527,\n 23556,\n 23586,\n 23616,\n 23645,\n 23674,\n 23704,\n 23733,\n 23763,\n 23792,\n 23822,\n 23851,\n 23881,\n 23910,\n 23940,\n 23970,\n 23999,\n 24029,\n 24058,\n 24088,\n 24117,\n 24147,\n 24176,\n 24206,\n 24235,\n 24265,\n 24294,\n 24324,\n 24353,\n 24383,\n 24413,\n 24442,\n 24472,\n 24501,\n 24531,\n 24560,\n 24590,\n 24619,\n 24648,\n 24678,\n 24707,\n 24737,\n 24767,\n 24796,\n 24826,\n 24856,\n 24885,\n 24915,\n 24944,\n 24974,\n 25003,\n 25032,\n 25062,\n 25091,\n 25121,\n 25150,\n 25180,\n 25210,\n 25240,\n 25269,\n 25299,\n 25328,\n 25358,\n 25387,\n 25416,\n 25446,\n 25475,\n 25505,\n 25534,\n 25564,\n 25594,\n 25624,\n 25653,\n 25683,\n 25712,\n 25742,\n 25771,\n 25800,\n 25830,\n 25859,\n 25888,\n 25918,\n 25948,\n 25977,\n 26007,\n 26037,\n 26067,\n 26096,\n 26126,\n 26155,\n 26184,\n 26214,\n 26243,\n 26272,\n 26302,\n 26332,\n 26361,\n 26391,\n 26421,\n 26451,\n 26480,\n 26510,\n 26539,\n 26568,\n 26598,\n 26627,\n 26656,\n 26686,\n 26715,\n 26745,\n 26775,\n 26805,\n 26834,\n 26864,\n 26893,\n 26923,\n 26952,\n 26982,\n 27011,\n 27041,\n 27070,\n 27099,\n 27129,\n 27159,\n 27188,\n 27218,\n 27248,\n 27277,\n 27307,\n 27336,\n 27366,\n 27395,\n 27425,\n 27454,\n 27484,\n 27513,\n 27542,\n 27572,\n 27602,\n 27631,\n 27661,\n 27691,\n 27720,\n 27750,\n 27779,\n 27809,\n 27838,\n 27868,\n 27897,\n 27926,\n 27956,\n 27985,\n 28015,\n 28045,\n 28074,\n 28104,\n 28134,\n 28163,\n 28193,\n 28222,\n 28252,\n 28281,\n 28310,\n 28340,\n 28369,\n 28399,\n 28428,\n 28458,\n 28488,\n 28517,\n 28547,\n 28577,\n // From 1356\n 28607,\n 28636,\n 28665,\n 28695,\n 28724,\n 28754,\n 28783,\n 28813,\n 28843,\n 28872,\n 28901,\n 28931,\n 28960,\n 28990,\n 29019,\n 29049,\n 29078,\n 29108,\n 29137,\n 29167,\n 29196,\n 29226,\n 29255,\n 29285,\n 29315,\n 29345,\n 29375,\n 29404,\n 29434,\n 29463,\n 29492,\n 29522,\n 29551,\n 29580,\n 29610,\n 29640,\n 29669,\n 29699,\n 29729,\n 29759,\n 29788,\n 29818,\n 29847,\n 29876,\n 29906,\n 29935,\n 29964,\n 29994,\n 30023,\n 30053,\n 30082,\n 30112,\n 30141,\n 30171,\n 30200,\n 30230,\n 30259,\n 30289,\n 30318,\n 30348,\n 30378,\n 30408,\n 30437,\n 30467,\n 30496,\n 30526,\n 30555,\n 30585,\n 30614,\n 30644,\n 30673,\n 30703,\n 30732,\n 30762,\n 30791,\n 30821,\n 30850,\n 30880,\n 30909,\n 30939,\n 30968,\n 30998,\n 31027,\n 31057,\n 31086,\n 31116,\n 31145,\n 31175,\n 31204,\n 31234,\n 31263,\n 31293,\n 31322,\n 31352,\n 31381,\n 31411,\n 31441,\n 31471,\n 31500,\n 31530,\n 31559,\n 31589,\n 31618,\n 31648,\n 31676,\n 31706,\n 31736,\n 31766,\n 31795,\n 31825,\n 31854,\n 31884,\n 31913,\n 31943,\n 31972,\n 32002,\n 32031,\n 32061,\n 32090,\n 32120,\n 32150,\n 32180,\n 32209,\n 32239,\n 32268,\n 32298,\n 32327,\n 32357,\n 32386,\n 32416,\n 32445,\n 32475,\n 32504,\n 32534,\n 32563,\n 32593,\n 32622,\n 32652,\n 32681,\n 32711,\n 32740,\n 32770,\n 32799,\n 32829,\n 32858,\n 32888,\n 32917,\n 32947,\n 32976,\n 33006,\n 33035,\n 33065,\n 33094,\n 33124,\n 33153,\n 33183,\n 33213,\n 33243,\n 33272,\n 33302,\n 33331,\n 33361,\n 33390,\n 33420,\n 33450,\n 33479,\n 33509,\n 33539,\n 33568,\n 33598,\n 33627,\n 33657,\n 33686,\n 33716,\n 33745,\n 33775,\n 33804,\n 33834,\n 33863,\n 33893,\n 33922,\n 33952,\n 33981,\n 34011,\n 34040,\n 34069,\n 34099,\n 34128,\n 34158,\n 34187,\n 34217,\n 34247,\n 34277,\n 34306,\n 34336,\n 34365,\n 34395,\n 34424,\n 34454,\n 34483,\n 34512,\n 34542,\n 34571,\n 34601,\n 34631,\n 34660,\n 34690,\n 34719,\n 34749,\n 34778,\n 34808,\n 34837,\n 34867,\n 34896,\n 34926,\n 34955,\n 34985,\n 35015,\n 35044,\n 35074,\n 35103,\n 35133,\n 35162,\n 35192,\n 35222,\n 35251,\n 35280,\n 35310,\n 35340,\n 35370,\n 35399,\n 35429,\n 35458,\n 35488,\n 35517,\n 35547,\n 35576,\n 35605,\n 35635,\n 35665,\n 35694,\n 35723,\n 35753,\n 35782,\n 35811,\n 35841,\n 35871,\n 35901,\n 35930,\n 35960,\n 35989,\n 36019,\n 36048,\n 36078,\n 36107,\n 36136,\n 36166,\n 36195,\n 36225,\n 36254,\n 36284,\n 36314,\n 36343,\n 36373,\n 36403,\n 36433,\n 36462,\n 36492,\n 36521,\n 36551,\n 36580,\n 36610,\n 36639,\n 36669,\n 36698,\n 36728,\n 36757,\n 36786,\n 36816,\n 36845,\n 36875,\n 36904,\n 36934,\n 36963,\n 36993,\n 37022,\n 37052,\n 37081,\n 37111,\n 37141,\n 37170,\n 37200,\n 37229,\n 37259,\n 37288,\n 37318,\n 37347,\n 37377,\n 37406,\n 37436,\n 37465,\n 37495,\n 37524,\n 37554,\n 37584,\n 37613,\n 37643,\n 37672,\n 37701,\n 37731,\n 37760,\n 37790,\n 37819,\n 37849,\n 37878,\n 37908,\n 37938,\n 37967,\n 37997,\n 38027,\n 38056,\n 38085,\n 38115,\n 38144,\n 38174,\n 38203,\n 38233,\n 38262,\n 38292,\n 38322,\n 38351,\n 38381,\n 38410,\n 38440,\n 38469,\n 38499,\n 38528,\n 38558,\n 38587,\n 38617,\n 38646,\n 38676,\n 38705,\n 38735,\n 38764,\n 38794,\n 38823,\n 38853,\n 38882,\n 38912,\n 38941,\n 38971,\n 39001,\n 39030,\n 39059,\n 39089,\n 39118,\n 39148,\n 39178,\n 39208,\n 39237,\n 39267,\n 39297,\n 39326,\n 39355,\n 39385,\n 39414,\n 39444,\n 39473,\n 39503,\n 39532,\n 39562,\n 39592,\n 39621,\n 39650,\n 39680,\n 39709,\n 39739,\n 39768,\n 39798,\n 39827,\n 39857,\n 39886,\n 39916,\n 39946,\n 39975,\n 40005,\n 40035,\n 40064,\n 40094,\n 40123,\n 40153,\n 40182,\n 40212,\n 40241,\n 40271,\n 40300,\n 40330,\n 40359,\n 40389,\n 40418,\n 40448,\n 40477,\n 40507,\n 40536,\n 40566,\n 40595,\n 40625,\n 40655,\n 40685,\n 40714,\n 40744,\n 40773,\n 40803,\n 40832,\n 40862,\n 40892,\n 40921,\n 40951,\n 40980,\n 41009,\n 41039,\n 41068,\n 41098,\n 41127,\n 41157,\n 41186,\n 41216,\n 41245,\n 41275,\n 41304,\n 41334,\n 41364,\n 41393,\n 41422,\n 41452,\n 41481,\n 41511,\n 41540,\n 41570,\n 41599,\n 41629,\n 41658,\n 41688,\n 41718,\n 41748,\n 41777,\n 41807,\n 41836,\n 41865,\n 41894,\n 41924,\n 41953,\n 41983,\n 42012,\n 42042,\n 42072,\n 42102,\n 42131,\n 42161,\n 42190,\n 42220,\n 42249,\n 42279,\n 42308,\n 42337,\n 42367,\n 42397,\n 42426,\n 42456,\n 42485,\n 42515,\n 42545,\n 42574,\n 42604,\n 42633,\n 42662,\n 42692,\n 42721,\n 42751,\n 42780,\n 42810,\n 42839,\n 42869,\n 42899,\n 42929,\n 42958,\n 42988,\n 43017,\n 43046,\n 43076,\n 43105,\n 43135,\n 43164,\n 43194,\n 43223,\n 43253,\n 43283,\n 43312,\n 43342,\n 43371,\n 43401,\n 43430,\n 43460,\n 43489,\n 43519,\n 43548,\n 43578,\n 43607,\n 43637,\n 43666,\n 43696,\n 43726,\n 43755,\n 43785,\n 43814,\n 43844,\n 43873,\n 43903,\n 43932,\n 43962,\n 43991,\n 44021,\n 44050,\n 44080,\n 44109,\n 44139,\n 44169,\n 44198,\n 44228,\n 44258,\n 44287,\n 44317,\n 44346,\n 44375,\n 44405,\n 44434,\n 44464,\n 44493,\n 44523,\n 44553,\n 44582,\n 44612,\n 44641,\n 44671,\n 44700,\n 44730,\n 44759,\n 44788,\n 44818,\n 44847,\n 44877,\n 44906,\n 44936,\n 44966,\n 44996,\n 45025,\n 45055,\n 45084,\n 45114,\n 45143,\n 45172,\n 45202,\n 45231,\n 45261,\n 45290,\n 45320,\n 45350,\n 45380,\n 45409,\n 45439,\n 45468,\n 45498,\n 45527,\n 45556,\n 45586,\n 45615,\n 45644,\n 45674,\n 45704,\n 45733,\n 45763,\n 45793,\n 45823,\n 45852,\n 45882,\n 45911,\n 45940,\n 45970,\n 45999,\n 46028,\n 46058,\n 46088,\n 46117,\n 46147,\n 46177,\n 46206,\n 46236,\n 46265,\n 46295,\n 46324,\n 46354,\n 46383,\n 46413,\n 46442,\n 46472,\n 46501,\n 46531,\n 46560,\n 46590,\n 46620,\n 46649,\n 46679,\n 46708,\n 46738,\n 46767,\n 46797,\n 46826,\n 46856,\n 46885,\n 46915,\n 46944,\n 46974,\n 47003,\n 47033,\n 47063,\n 47092,\n 47122,\n 47151,\n 47181,\n 47210,\n 47240,\n 47269,\n 47298,\n 47328,\n 47357,\n 47387,\n 47417,\n 47446,\n 47476,\n 47506,\n 47535,\n 47565,\n 47594,\n 47624,\n 47653,\n 47682,\n 47712,\n 47741,\n 47771,\n 47800,\n 47830,\n 47860,\n 47890,\n 47919,\n 47949,\n 47978,\n 48008,\n 48037,\n 48066,\n 48096,\n 48125,\n 48155,\n 48184,\n 48214,\n 48244,\n 48273,\n 48303,\n 48333,\n 48362,\n 48392,\n 48421,\n 48450,\n 48480,\n 48509,\n 48538,\n 48568,\n 48598,\n 48627,\n 48657,\n 48687,\n 48717,\n 48746,\n 48776,\n 48805,\n 48834,\n 48864,\n 48893,\n 48922,\n 48952,\n 48982,\n 49011,\n 49041,\n 49071,\n 49100,\n 49130,\n 49160,\n 49189,\n 49218,\n 49248,\n 49277,\n 49306,\n 49336,\n 49365,\n 49395,\n 49425,\n 49455,\n 49484,\n 49514,\n 49543,\n 49573,\n 49602,\n 49632,\n 49661,\n 49690,\n 49720,\n 49749,\n 49779,\n 49809,\n 49838,\n 49868,\n 49898,\n 49927,\n 49957,\n 49986,\n 50016,\n 50045,\n 50075,\n 50104,\n 50133,\n 50163,\n 50192,\n 50222,\n 50252,\n 50281,\n 50311,\n 50340,\n 50370,\n 50400,\n 50429,\n 50459,\n 50488,\n 50518,\n 50547,\n 50576,\n 50606,\n 50635,\n 50665,\n 50694,\n 50724,\n 50754,\n 50784,\n 50813,\n 50843,\n 50872,\n 50902,\n 50931,\n 50960,\n 50990,\n 51019,\n 51049,\n 51078,\n 51108,\n 51138,\n 51167,\n 51197,\n 51227,\n 51256,\n 51286,\n 51315,\n 51345,\n 51374,\n 51403,\n 51433,\n 51462,\n 51492,\n 51522,\n 51552,\n 51582,\n 51611,\n 51641,\n 51670,\n 51699,\n 51729,\n 51758,\n 51787,\n 51816,\n 51846,\n 51876,\n 51906,\n 51936,\n 51965,\n 51995,\n 52025,\n 52054,\n 52083,\n 52113,\n 52142,\n 52171,\n 52200,\n 52230,\n 52260,\n 52290,\n 52319,\n 52349,\n 52379,\n 52408,\n 52438,\n 52467,\n 52497,\n 52526,\n 52555,\n 52585,\n 52614,\n 52644,\n 52673,\n 52703,\n 52733,\n 52762,\n 52792,\n 52822,\n 52851,\n 52881,\n 52910,\n 52939,\n 52969,\n 52998,\n 53028,\n 53057,\n 53087,\n 53116,\n 53146,\n 53176,\n 53205,\n 53235,\n 53264,\n 53294,\n 53324,\n 53353,\n 53383,\n 53412,\n 53441,\n 53471,\n 53500,\n 53530,\n 53559,\n 53589,\n 53619,\n 53648,\n 53678,\n 53708,\n 53737,\n 53767,\n 53796,\n 53825,\n 53855,\n 53884,\n 53913,\n 53943,\n 53973,\n 54003,\n 54032,\n 54062,\n 54092,\n 54121,\n 54151,\n 54180,\n 54209,\n 54239,\n 54268,\n 54297,\n 54327,\n 54357,\n 54387,\n 54416,\n 54446,\n 54476,\n 54505,\n 54535,\n 54564,\n 54593,\n 54623,\n 54652,\n 54681,\n 54711,\n 54741,\n 54770,\n 54800,\n 54830,\n 54859,\n 54889,\n 54919,\n 54948,\n 54977,\n 55007,\n 55036,\n 55066,\n 55095,\n 55125,\n 55154,\n 55184,\n 55213,\n 55243,\n 55273,\n 55302,\n 55332,\n 55361,\n 55391,\n 55420,\n 55450,\n 55479,\n 55508,\n 55538,\n 55567,\n 55597,\n 55627,\n 55657,\n 55686,\n 55716,\n 55745,\n 55775,\n 55804,\n 55834,\n 55863,\n 55892,\n 55922,\n 55951,\n 55981,\n 56011,\n 56040,\n 56070,\n 56100,\n 56129,\n 56159,\n 56188,\n 56218,\n 56247,\n 56276,\n 56306,\n 56335,\n 56365,\n 56394,\n 56424,\n 56454,\n 56483,\n 56513,\n 56543,\n 56572,\n 56601,\n 56631,\n 56660,\n 56690,\n 56719,\n 56749,\n 56778,\n 56808,\n 56837,\n 56867,\n 56897,\n 56926,\n 56956,\n 56985,\n 57015,\n 57044,\n 57074,\n 57103,\n 57133,\n 57162,\n 57192,\n 57221,\n 57251,\n 57280,\n 57310,\n 57340,\n 57369,\n 57399,\n 57429,\n 57458,\n 57487,\n 57517,\n 57546,\n 57576,\n 57605,\n 57634,\n 57664,\n 57694,\n 57723,\n 57753,\n 57783,\n 57813,\n 57842,\n 57871,\n 57901,\n 57930,\n 57959,\n 57989,\n 58018,\n 58048,\n 58077,\n 58107,\n 58137,\n 58167,\n 58196,\n 58226,\n 58255,\n 58285,\n 58314,\n 58343,\n 58373,\n 58402,\n 58432,\n 58461,\n 58491,\n 58521,\n 58551,\n 58580,\n 58610,\n 58639,\n 58669,\n 58698,\n 58727,\n 58757,\n 58786,\n 58816,\n 58845,\n 58875,\n 58905,\n 58934,\n 58964,\n 58994,\n 59023,\n 59053,\n 59082,\n 59111,\n 59141,\n 59170,\n 59200,\n 59229,\n 59259,\n 59288,\n 59318,\n 59348,\n 59377,\n 59407,\n 59436,\n 59466,\n 59495,\n 59525,\n 59554,\n 59584,\n 59613,\n 59643,\n 59672,\n 59702,\n 59731,\n 59761,\n 59791,\n 59820,\n 59850,\n 59879,\n 59909,\n 59939,\n 59968,\n 59997,\n 60027,\n 60056,\n 60086,\n 60115,\n 60145,\n 60174,\n 60204,\n 60234,\n 60264,\n 60293,\n 60323,\n 60352,\n 60381,\n 60411,\n 60440,\n 60469,\n 60499,\n 60528,\n 60558,\n 60588,\n 60618,\n 60648,\n 60677,\n 60707,\n 60736,\n 60765,\n 60795,\n 60824,\n 60853,\n 60883,\n 60912,\n 60942,\n 60972,\n 61002,\n 61031,\n 61061,\n 61090,\n 61120,\n 61149,\n 61179,\n 61208,\n 61237,\n 61267,\n 61296,\n 61326,\n 61356,\n 61385,\n 61415,\n 61445,\n 61474,\n 61504,\n 61533,\n 61563,\n 61592,\n 61621,\n 61651,\n 61680,\n 61710,\n 61739,\n 61769,\n 61799,\n 61828,\n 61858,\n 61888,\n 61917,\n 61947,\n 61976,\n 62006,\n 62035,\n 62064,\n 62094,\n 62123,\n 62153,\n 62182,\n 62212,\n 62242,\n 62271,\n 62301,\n 62331,\n 62360,\n 62390,\n 62419,\n 62448,\n 62478,\n 62507,\n 62537,\n 62566,\n 62596,\n 62625,\n 62655,\n 62685,\n 62715,\n 62744,\n 62774,\n 62803,\n 62832,\n 62862,\n 62891,\n 62921,\n 62950,\n 62980,\n 63009,\n 63039,\n 63069,\n 63099,\n 63128,\n 63157,\n 63187,\n 63216,\n 63246,\n 63275,\n 63305,\n 63334,\n 63363,\n 63393,\n 63423,\n 63453,\n 63482,\n 63512,\n 63541,\n 63571,\n 63600,\n 63630,\n 63659,\n 63689,\n 63718,\n 63747,\n 63777,\n 63807,\n 63836,\n 63866,\n 63895,\n 63925,\n 63955,\n 63984,\n 64014,\n 64043,\n 64073,\n 64102,\n 64131,\n 64161,\n 64190,\n 64220,\n 64249,\n 64279,\n 64309,\n 64339,\n 64368,\n 64398,\n 64427,\n 64457,\n 64486,\n 64515,\n 64545,\n 64574,\n 64603,\n 64633,\n 64663,\n 64692,\n 64722,\n 64752,\n 64782,\n 64811,\n 64841,\n 64870,\n 64899,\n 64929,\n 64958,\n 64987,\n 65017,\n 65047,\n 65076,\n 65106,\n 65136,\n 65166,\n 65195,\n 65225,\n 65254,\n 65283,\n 65313,\n 65342,\n 65371,\n 65401,\n 65431,\n 65460,\n 65490,\n 65520,\n 65549,\n 65579,\n 65608,\n 65638,\n 65667,\n 65697,\n 65726,\n 65755,\n 65785,\n 65815,\n 65844,\n 65874,\n 65903,\n 65933,\n 65963,\n 65992,\n 66022,\n 66051,\n 66081,\n 66110,\n 66140,\n 66169,\n 66199,\n 66228,\n 66258,\n 66287,\n 66317,\n 66346,\n 66376,\n 66405,\n 66435,\n 66465,\n 66494,\n 66524,\n 66553,\n 66583,\n 66612,\n 66641,\n 66671,\n 66700,\n 66730,\n 66760,\n 66789,\n 66819,\n 66849,\n 66878,\n 66908,\n 66937,\n 66967,\n 66996,\n 67025,\n 67055,\n 67084,\n 67114,\n 67143,\n 67173,\n 67203,\n 67233,\n 67262,\n 67292,\n 67321,\n 67351,\n 67380,\n 67409,\n 67439,\n 67468,\n 67497,\n 67527,\n 67557,\n 67587,\n 67617,\n 67646,\n 67676,\n 67705,\n 67735,\n 67764,\n 67793,\n 67823,\n 67852,\n 67882,\n 67911,\n 67941,\n 67971,\n 68e3,\n 68030,\n 68060,\n 68089,\n 68119,\n 68148,\n 68177,\n 68207,\n 68236,\n 68266,\n 68295,\n 68325,\n 68354,\n 68384,\n 68414,\n 68443,\n 68473,\n 68502,\n 68532,\n 68561,\n 68591,\n 68620,\n 68650,\n 68679,\n 68708,\n 68738,\n 68768,\n 68797,\n 68827,\n 68857,\n 68886,\n 68916,\n 68946,\n 68975,\n 69004,\n 69034,\n 69063,\n 69092,\n 69122,\n 69152,\n 69181,\n 69211,\n 69240,\n 69270,\n 69300,\n 69330,\n 69359,\n 69388,\n 69418,\n 69447,\n 69476,\n 69506,\n 69535,\n 69565,\n 69595,\n 69624,\n 69654,\n 69684,\n 69713,\n 69743,\n 69772,\n 69802,\n 69831,\n 69861,\n 69890,\n 69919,\n 69949,\n 69978,\n 70008,\n 70038,\n 70067,\n 70097,\n 70126,\n 70156,\n 70186,\n 70215,\n 70245,\n 70274,\n 70303,\n 70333,\n 70362,\n 70392,\n 70421,\n 70451,\n 70481,\n 70510,\n 70540,\n 70570,\n 70599,\n 70629,\n 70658,\n 70687,\n 70717,\n 70746,\n 70776,\n 70805,\n 70835,\n 70864,\n 70894,\n 70924,\n 70954,\n 70983,\n 71013,\n 71042,\n 71071,\n 71101,\n 71130,\n 71159,\n 71189,\n 71218,\n 71248,\n 71278,\n 71308,\n 71337,\n 71367,\n 71397,\n 71426,\n 71455,\n 71485,\n 71514,\n 71543,\n 71573,\n 71602,\n 71632,\n 71662,\n 71691,\n 71721,\n 71751,\n 71781,\n 71810,\n 71839,\n 71869,\n 71898,\n 71927,\n 71957,\n 71986,\n 72016,\n 72046,\n 72075,\n 72105,\n 72135,\n 72164,\n 72194,\n 72223,\n 72253,\n 72282,\n 72311,\n 72341,\n 72370,\n 72400,\n 72429,\n 72459,\n 72489,\n 72518,\n 72548,\n 72577,\n 72607,\n 72637,\n 72666,\n 72695,\n 72725,\n 72754,\n 72784,\n 72813,\n 72843,\n 72872,\n 72902,\n 72931,\n 72961,\n 72991,\n 73020,\n 73050,\n 73080,\n 73109,\n 73139,\n 73168,\n 73197,\n 73227,\n 73256,\n 73286,\n 73315,\n 73345,\n 73375,\n 73404,\n 73434,\n 73464,\n 73493,\n 73523,\n 73552,\n 73581,\n 73611,\n 73640,\n 73669,\n 73699,\n 73729,\n 73758,\n 73788,\n 73818,\n 73848,\n 73877,\n 73907,\n 73936,\n 73965,\n 73995,\n 74024,\n 74053,\n 74083,\n 74113,\n 74142,\n 74172,\n 74202,\n 74231,\n 74261,\n 74291,\n 74320,\n 74349,\n 74379,\n 74408,\n 74437,\n 74467,\n 74497,\n 74526,\n 74556,\n 74586,\n 74615,\n 74645,\n 74675,\n 74704,\n 74733,\n 74763,\n 74792,\n 74822,\n 74851,\n 74881,\n 74910,\n 74940,\n 74969,\n 74999,\n 75029,\n 75058,\n 75088,\n 75117,\n 75147,\n 75176,\n 75206,\n 75235,\n 75264,\n 75294,\n 75323,\n 75353,\n 75383,\n 75412,\n 75442,\n 75472,\n 75501,\n 75531,\n 75560,\n 75590,\n 75619,\n 75648,\n 75678,\n 75707,\n 75737,\n 75766,\n 75796,\n 75826,\n 75856,\n 75885,\n 75915,\n 75944,\n 75974,\n 76003,\n 76032,\n 76062,\n 76091,\n 76121,\n 76150,\n 76180,\n 76210,\n 76239,\n 76269,\n 76299,\n 76328,\n 76358,\n 76387,\n 76416,\n 76446,\n 76475,\n 76505,\n 76534,\n 76564,\n 76593,\n 76623,\n 76653,\n 76682,\n 76712,\n 76741,\n 76771,\n 76801,\n 76830,\n 76859,\n 76889,\n 76918,\n 76948,\n 76977,\n 77007,\n 77036,\n 77066,\n 77096,\n 77125,\n 77155,\n 77185,\n 77214,\n 77243,\n 77273,\n 77302,\n 77332,\n 77361,\n 77390,\n 77420,\n 77450,\n 77479,\n 77509,\n 77539,\n 77569,\n 77598,\n 77627,\n 77657,\n 77686,\n 77715,\n 77745,\n 77774,\n 77804,\n 77833,\n 77863,\n 77893,\n 77923,\n 77952,\n 77982,\n 78011,\n 78041,\n 78070,\n 78099,\n 78129,\n 78158,\n 78188,\n 78217,\n 78247,\n 78277,\n 78307,\n 78336,\n 78366,\n 78395,\n 78425,\n 78454,\n 78483,\n 78513,\n 78542,\n 78572,\n 78601,\n 78631,\n 78661,\n 78690,\n 78720,\n 78750,\n 78779,\n 78808,\n 78838,\n 78867,\n 78897,\n 78926,\n 78956,\n 78985,\n 79015,\n 79044,\n 79074,\n 79104,\n 79133,\n 79163,\n 79192,\n 79222,\n 79251,\n 79281,\n 79310,\n 79340,\n 79369,\n 79399,\n 79428,\n 79458,\n 79487,\n 79517,\n 79546,\n 79576,\n 79606,\n 79635,\n 79665,\n 79695,\n 79724,\n 79753,\n 79783,\n 79812,\n 79841,\n 79871,\n 79900,\n 79930,\n 79960,\n 79990\n ];\n }\n });\n\n // src/components/calendars/calendars.js\n var require_calendars = __commonJS({\n \"src/components/calendars/calendars.js\"(exports, module) {\n \"use strict\";\n module.exports = require_main();\n require_plus();\n require_chinese();\n require_coptic();\n require_discworld();\n require_ethiopian();\n require_hebrew();\n require_islamic();\n require_julian();\n require_mayan();\n require_nanakshahi();\n require_nepali();\n require_persian();\n require_taiwan();\n require_thai();\n require_ummalqura();\n }\n });\n\n // src/components/calendars/index.js\n var require_calendars2 = __commonJS({\n \"src/components/calendars/index.js\"(exports, module) {\n \"use strict\";\n var calendars = require_calendars();\n var Lib = require_lib();\n var constants = require_numerical();\n var EPOCHJD = constants.EPOCHJD;\n var ONEDAY = constants.ONEDAY;\n var attributes = {\n valType: \"enumerated\",\n values: Lib.sortObjectKeys(calendars.calendars),\n editType: \"calc\",\n dflt: \"gregorian\"\n };\n var handleDefaults = function(contIn, contOut, attr, dflt) {\n var attrs = {};\n attrs[attr] = attributes;\n return Lib.coerce(contIn, contOut, attrs, attr, dflt);\n };\n var handleTraceDefaults = function(traceIn, traceOut, coords, layout) {\n for (var i = 0; i < coords.length; i++) {\n handleDefaults(traceIn, traceOut, coords[i] + \"calendar\", layout.calendar);\n }\n };\n var CANONICAL_TICK = {\n chinese: \"2000-01-01\",\n coptic: \"2000-01-01\",\n discworld: \"2000-01-01\",\n ethiopian: \"2000-01-01\",\n hebrew: \"5000-01-01\",\n islamic: \"1000-01-01\",\n julian: \"2000-01-01\",\n mayan: \"5000-01-01\",\n nanakshahi: \"1000-01-01\",\n nepali: \"2000-01-01\",\n persian: \"1000-01-01\",\n jalali: \"1000-01-01\",\n taiwan: \"1000-01-01\",\n thai: \"2000-01-01\",\n ummalqura: \"1400-01-01\"\n };\n var CANONICAL_SUNDAY = {\n chinese: \"2000-01-02\",\n coptic: \"2000-01-03\",\n discworld: \"2000-01-03\",\n ethiopian: \"2000-01-05\",\n hebrew: \"5000-01-01\",\n islamic: \"1000-01-02\",\n julian: \"2000-01-03\",\n mayan: \"5000-01-01\",\n nanakshahi: \"1000-01-05\",\n nepali: \"2000-01-05\",\n persian: \"1000-01-01\",\n jalali: \"1000-01-01\",\n taiwan: \"1000-01-04\",\n thai: \"2000-01-04\",\n ummalqura: \"1400-01-06\"\n };\n var DFLTRANGE = {\n chinese: [\"2000-01-01\", \"2001-01-01\"],\n coptic: [\"1700-01-01\", \"1701-01-01\"],\n discworld: [\"1800-01-01\", \"1801-01-01\"],\n ethiopian: [\"2000-01-01\", \"2001-01-01\"],\n hebrew: [\"5700-01-01\", \"5701-01-01\"],\n islamic: [\"1400-01-01\", \"1401-01-01\"],\n julian: [\"2000-01-01\", \"2001-01-01\"],\n mayan: [\"5200-01-01\", \"5201-01-01\"],\n nanakshahi: [\"0500-01-01\", \"0501-01-01\"],\n nepali: [\"2000-01-01\", \"2001-01-01\"],\n persian: [\"1400-01-01\", \"1401-01-01\"],\n jalali: [\"1400-01-01\", \"1401-01-01\"],\n taiwan: [\"0100-01-01\", \"0101-01-01\"],\n thai: [\"2500-01-01\", \"2501-01-01\"],\n ummalqura: [\"1400-01-01\", \"1401-01-01\"]\n };\n var UNKNOWN = \"##\";\n var d3ToWorldCalendars = {\n d: { 0: \"dd\", \"-\": \"d\" },\n // 2-digit or unpadded day of month\n e: { 0: \"d\", \"-\": \"d\" },\n // alternate, always unpadded day of month\n a: { 0: \"D\", \"-\": \"D\" },\n // short weekday name\n A: { 0: \"DD\", \"-\": \"DD\" },\n // full weekday name\n j: { 0: \"oo\", \"-\": \"o\" },\n // 3-digit or unpadded day of the year\n W: { 0: \"ww\", \"-\": \"w\" },\n // 2-digit or unpadded week of the year (Monday first)\n m: { 0: \"mm\", \"-\": \"m\" },\n // 2-digit or unpadded month number\n b: { 0: \"M\", \"-\": \"M\" },\n // short month name\n B: { 0: \"MM\", \"-\": \"MM\" },\n // full month name\n y: { 0: \"yy\", \"-\": \"yy\" },\n // 2-digit year (map unpadded to zero-padded)\n Y: { 0: \"yyyy\", \"-\": \"yyyy\" },\n // 4-digit year (map unpadded to zero-padded)\n U: UNKNOWN,\n // Sunday-first week of the year\n w: UNKNOWN,\n // day of the week [0(sunday),6]\n // combined format, we replace the date part with the world-calendar version\n // and the %X stays there for d3 to handle with time parts\n c: { 0: \"D M d %X yyyy\", \"-\": \"D M d %X yyyy\" },\n x: { 0: \"mm/dd/yyyy\", \"-\": \"mm/dd/yyyy\" }\n };\n function worldCalFmt(fmt, x, calendar) {\n var dateJD = Math.floor((x + 0.05) / ONEDAY) + EPOCHJD;\n var cDate = getCal(calendar).fromJD(dateJD);\n var i = 0;\n var modifier, directive, directiveLen, directiveObj, replacementPart;\n while ((i = fmt.indexOf(\"%\", i)) !== -1) {\n modifier = fmt.charAt(i + 1);\n if (modifier === \"0\" || modifier === \"-\" || modifier === \"_\") {\n directiveLen = 3;\n directive = fmt.charAt(i + 2);\n if (modifier === \"_\") modifier = \"-\";\n } else {\n directive = modifier;\n modifier = \"0\";\n directiveLen = 2;\n }\n directiveObj = d3ToWorldCalendars[directive];\n if (!directiveObj) {\n i += directiveLen;\n } else {\n if (directiveObj === UNKNOWN) replacementPart = UNKNOWN;\n else replacementPart = cDate.formatDate(directiveObj[modifier]);\n fmt = fmt.substr(0, i) + replacementPart + fmt.substr(i + directiveLen);\n i += replacementPart.length;\n }\n }\n return fmt;\n }\n var allCals = {};\n function getCal(calendar) {\n var calendarObj = allCals[calendar];\n if (calendarObj) return calendarObj;\n calendarObj = allCals[calendar] = calendars.instance(calendar);\n return calendarObj;\n }\n function makeAttrs(description) {\n return Lib.extendFlat({}, attributes, { description });\n }\n function makeTraceAttrsDescription(coord) {\n return \"Sets the calendar system to use with `\" + coord + \"` date data.\";\n }\n var xAttrs = {\n xcalendar: makeAttrs(makeTraceAttrsDescription(\"x\"))\n };\n var xyAttrs = Lib.extendFlat({}, xAttrs, {\n ycalendar: makeAttrs(makeTraceAttrsDescription(\"y\"))\n });\n var xyzAttrs = Lib.extendFlat({}, xyAttrs, {\n zcalendar: makeAttrs(makeTraceAttrsDescription(\"z\"))\n });\n var axisAttrs = makeAttrs([\n \"Sets the calendar system to use for `range` and `tick0`\",\n \"if this is a date axis. This does not set the calendar for\",\n \"interpreting data on this axis, that's specified in the trace\",\n \"or via the global `layout.calendar`\"\n ].join(\" \"));\n module.exports = {\n moduleType: \"component\",\n name: \"calendars\",\n schema: {\n traces: {\n scatter: xyAttrs,\n bar: xyAttrs,\n box: xyAttrs,\n heatmap: xyAttrs,\n contour: xyAttrs,\n histogram: xyAttrs,\n histogram2d: xyAttrs,\n histogram2dcontour: xyAttrs,\n scatter3d: xyzAttrs,\n surface: xyzAttrs,\n mesh3d: xyzAttrs,\n scattergl: xyAttrs,\n ohlc: xAttrs,\n candlestick: xAttrs\n },\n layout: {\n calendar: makeAttrs([\n \"Sets the default calendar system to use for interpreting and\",\n \"displaying dates throughout the plot.\"\n ].join(\" \"))\n },\n subplots: {\n xaxis: { calendar: axisAttrs },\n yaxis: { calendar: axisAttrs },\n scene: {\n xaxis: { calendar: axisAttrs },\n // TODO: it's actually redundant to include yaxis and zaxis here\n // because in the scene attributes these are the same object so merging\n // into one merges into them all. However, I left them in for parity with\n // cartesian, where yaxis is unused until we Plotschema.get() when we\n // use its presence or absence to determine whether to delete attributes\n // from yaxis if they only apply to x (rangeselector/rangeslider)\n yaxis: { calendar: axisAttrs },\n zaxis: { calendar: axisAttrs }\n },\n polar: {\n radialaxis: { calendar: axisAttrs }\n }\n }\n },\n layoutAttributes: attributes,\n handleDefaults,\n handleTraceDefaults,\n CANONICAL_SUNDAY,\n CANONICAL_TICK,\n DFLTRANGE,\n getCal,\n worldCalFmt\n };\n }\n });\n\n // lib/calendars.js\n var require_calendars3 = __commonJS({\n \"lib/calendars.js\"(exports, module) {\n \"use strict\";\n module.exports = require_calendars2();\n }\n });\n\n // lib/index-gl2d.js\n var require_index_gl2d = __commonJS({\n \"lib/index-gl2d.js\"(exports, module) {\n var Plotly = require_core2();\n Plotly.register([\n // traces\n require_scattergl2(),\n require_splom2(),\n require_parcoords3(),\n // components\n require_calendars3()\n ]);\n module.exports = Plotly;\n }\n });\n return require_index_gl2d();\n})();\n/*! Bundled license information:\n\nnative-promise-only/lib/npo.src.js:\n (*! Native Promise Only\n v0.8.1 (c) Kyle Simpson\n MIT License: http://getify.mit-license.org\n *)\n\npolybooljs/index.js:\n (*\n * @copyright 2016 Sean Connelly (@voidqk), http://syntheti.cc\n * @license MIT\n * @preserve Project Home: https://github.com/voidqk/polybooljs\n *)\n\nassert/build/internal/util/comparisons.js:\n (*!\n * The buffer module from node.js, for the browser.\n *\n * @author Feross Aboukhadijeh \n * @license MIT\n *)\n\nobject-assign/index.js:\n (*\n object-assign\n (c) Sindre Sorhus\n @license MIT\n *)\n\nieee754/index.js:\n (*! ieee754. BSD-3-Clause License. Feross Aboukhadijeh *)\n\nbuffer/index.js:\n (*!\n * The buffer module from node.js, for the browser.\n *\n * @author Feross Aboukhadijeh \n * @license MIT\n *)\n*/\n\nwindow.Plotly = Plotly;\nreturn Plotly;\n}));","\"use strict\";\n\nfunction _typeof(obj) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && \"function\" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }, _typeof(obj); }\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports[\"default\"] = plotComponentFactory;\n\nvar _react = _interopRequireWildcard(require(\"react\"));\n\nvar _propTypes = _interopRequireDefault(require(\"prop-types\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { \"default\": obj }; }\n\nfunction _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== \"function\") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }\n\nfunction _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || _typeof(obj) !== \"object\" && typeof obj !== \"function\") { return { \"default\": obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== \"default\" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj[\"default\"] = obj; if (cache) { cache.set(obj, newObj); } return newObj; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { 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\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, \"prototype\", { writable: false }); return Constructor; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function\"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); Object.defineProperty(subClass, \"prototype\", { writable: false }); if (superClass) _setPrototypeOf(subClass, superClass); }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\nfunction _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\n\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } else if (call !== void 0) { throw new TypeError(\"Derived constructors may only return object or undefined\"); } return _assertThisInitialized(self); }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }\n\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf.bind() : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\n\n// The naming convention is:\n// - events are attached as `'plotly_' + eventName.toLowerCase()`\n// - react props are `'on' + eventName`\nvar eventNames = ['AfterExport', 'AfterPlot', 'Animated', 'AnimatingFrame', 'AnimationInterrupted', 'AutoSize', 'BeforeExport', 'BeforeHover', 'ButtonClicked', 'Click', 'ClickAnnotation', 'Deselect', 'DoubleClick', 'Framework', 'Hover', 'LegendClick', 'LegendDoubleClick', 'Relayout', 'Relayouting', 'Restyle', 'Redraw', 'Selected', 'Selecting', 'SliderChange', 'SliderEnd', 'SliderStart', 'SunburstClick', 'Transitioning', 'TransitionInterrupted', 'Unhover', 'WebGlContextLost'];\nvar updateEvents = ['plotly_restyle', 'plotly_redraw', 'plotly_relayout', 'plotly_relayouting', 'plotly_doubleclick', 'plotly_animated', 'plotly_sunburstclick']; // Check if a window is available since SSR (server-side rendering)\n// breaks unnecessarily if you try to use it server-side.\n\nvar isBrowser = typeof window !== 'undefined';\n\nfunction plotComponentFactory(Plotly) {\n var PlotlyComponent = /*#__PURE__*/function (_Component) {\n _inherits(PlotlyComponent, _Component);\n\n var _super = _createSuper(PlotlyComponent);\n\n function PlotlyComponent(props) {\n var _this;\n\n _classCallCheck(this, PlotlyComponent);\n\n _this = _super.call(this, props);\n _this.p = Promise.resolve();\n _this.resizeHandler = null;\n _this.handlers = {};\n _this.syncWindowResize = _this.syncWindowResize.bind(_assertThisInitialized(_this));\n _this.syncEventHandlers = _this.syncEventHandlers.bind(_assertThisInitialized(_this));\n _this.attachUpdateEvents = _this.attachUpdateEvents.bind(_assertThisInitialized(_this));\n _this.getRef = _this.getRef.bind(_assertThisInitialized(_this));\n _this.handleUpdate = _this.handleUpdate.bind(_assertThisInitialized(_this));\n _this.figureCallback = _this.figureCallback.bind(_assertThisInitialized(_this));\n _this.updatePlotly = _this.updatePlotly.bind(_assertThisInitialized(_this));\n return _this;\n }\n\n _createClass(PlotlyComponent, [{\n key: \"updatePlotly\",\n value: function updatePlotly(shouldInvokeResizeHandler, figureCallbackFunction, shouldAttachUpdateEvents) {\n var _this2 = this;\n\n this.p = this.p.then(function () {\n if (_this2.unmounting) {\n return;\n }\n\n if (!_this2.el) {\n throw new Error('Missing element reference');\n } // eslint-disable-next-line consistent-return\n\n\n return Plotly.react(_this2.el, {\n data: _this2.props.data,\n layout: _this2.props.layout,\n config: _this2.props.config,\n frames: _this2.props.frames\n });\n }).then(function () {\n if (_this2.unmounting) {\n return;\n }\n\n _this2.syncWindowResize(shouldInvokeResizeHandler);\n\n _this2.syncEventHandlers();\n\n _this2.figureCallback(figureCallbackFunction);\n\n if (shouldAttachUpdateEvents) {\n _this2.attachUpdateEvents();\n }\n })[\"catch\"](function (err) {\n if (_this2.props.onError) {\n _this2.props.onError(err);\n }\n });\n }\n }, {\n key: \"componentDidMount\",\n value: function componentDidMount() {\n this.unmounting = false;\n this.updatePlotly(true, this.props.onInitialized, true);\n }\n }, {\n key: \"componentDidUpdate\",\n value: function componentDidUpdate(prevProps) {\n this.unmounting = false; // frames *always* changes identity so fall back to check length only :(\n\n var numPrevFrames = prevProps.frames && prevProps.frames.length ? prevProps.frames.length : 0;\n var numNextFrames = this.props.frames && this.props.frames.length ? this.props.frames.length : 0;\n var figureChanged = !(prevProps.layout === this.props.layout && prevProps.data === this.props.data && prevProps.config === this.props.config && numNextFrames === numPrevFrames);\n var revisionDefined = prevProps.revision !== void 0;\n var revisionChanged = prevProps.revision !== this.props.revision;\n\n if (!figureChanged && (!revisionDefined || revisionDefined && !revisionChanged)) {\n return;\n }\n\n this.updatePlotly(false, this.props.onUpdate, false);\n }\n }, {\n key: \"componentWillUnmount\",\n value: function componentWillUnmount() {\n this.unmounting = true;\n this.figureCallback(this.props.onPurge);\n\n if (this.resizeHandler && isBrowser) {\n window.removeEventListener('resize', this.resizeHandler);\n this.resizeHandler = null;\n }\n\n this.removeUpdateEvents();\n Plotly.purge(this.el);\n }\n }, {\n key: \"attachUpdateEvents\",\n value: function attachUpdateEvents() {\n var _this3 = this;\n\n if (!this.el || !this.el.removeListener) {\n return;\n }\n\n updateEvents.forEach(function (updateEvent) {\n _this3.el.on(updateEvent, _this3.handleUpdate);\n });\n }\n }, {\n key: \"removeUpdateEvents\",\n value: function removeUpdateEvents() {\n var _this4 = this;\n\n if (!this.el || !this.el.removeListener) {\n return;\n }\n\n updateEvents.forEach(function (updateEvent) {\n _this4.el.removeListener(updateEvent, _this4.handleUpdate);\n });\n }\n }, {\n key: \"handleUpdate\",\n value: function handleUpdate() {\n this.figureCallback(this.props.onUpdate);\n }\n }, {\n key: \"figureCallback\",\n value: function figureCallback(callback) {\n if (typeof callback === 'function') {\n var _this$el = this.el,\n data = _this$el.data,\n layout = _this$el.layout;\n var frames = this.el._transitionData ? this.el._transitionData._frames : null;\n var figure = {\n data: data,\n layout: layout,\n frames: frames\n };\n callback(figure, this.el);\n }\n }\n }, {\n key: \"syncWindowResize\",\n value: function syncWindowResize(invoke) {\n var _this5 = this;\n\n if (!isBrowser) {\n return;\n }\n\n if (this.props.useResizeHandler && !this.resizeHandler) {\n this.resizeHandler = function () {\n return Plotly.Plots.resize(_this5.el);\n };\n\n window.addEventListener('resize', this.resizeHandler);\n\n if (invoke) {\n this.resizeHandler();\n }\n } else if (!this.props.useResizeHandler && this.resizeHandler) {\n window.removeEventListener('resize', this.resizeHandler);\n this.resizeHandler = null;\n }\n }\n }, {\n key: \"getRef\",\n value: function getRef(el) {\n this.el = el;\n\n if (this.props.debug && isBrowser) {\n window.gd = this.el;\n }\n } // Attach and remove event handlers as they're added or removed from props:\n\n }, {\n key: \"syncEventHandlers\",\n value: function syncEventHandlers() {\n var _this6 = this;\n\n eventNames.forEach(function (eventName) {\n var prop = _this6.props['on' + eventName];\n var handler = _this6.handlers[eventName];\n var hasHandler = Boolean(handler);\n\n if (prop && !hasHandler) {\n _this6.addEventHandler(eventName, prop);\n } else if (!prop && hasHandler) {\n // Needs to be removed:\n _this6.removeEventHandler(eventName);\n } else if (prop && hasHandler && prop !== handler) {\n // replace the handler\n _this6.removeEventHandler(eventName);\n\n _this6.addEventHandler(eventName, prop);\n }\n });\n }\n }, {\n key: \"addEventHandler\",\n value: function addEventHandler(eventName, prop) {\n this.handlers[eventName] = prop;\n this.el.on(this.getPlotlyEventName(eventName), this.handlers[eventName]);\n }\n }, {\n key: \"removeEventHandler\",\n value: function removeEventHandler(eventName) {\n this.el.removeListener(this.getPlotlyEventName(eventName), this.handlers[eventName]);\n delete this.handlers[eventName];\n }\n }, {\n key: \"getPlotlyEventName\",\n value: function getPlotlyEventName(eventName) {\n return 'plotly_' + eventName.toLowerCase();\n }\n }, {\n key: \"render\",\n value: function render() {\n return /*#__PURE__*/_react[\"default\"].createElement(\"div\", {\n id: this.props.divId,\n style: this.props.style,\n ref: this.getRef,\n className: this.props.className\n });\n }\n }]);\n\n return PlotlyComponent;\n }(_react.Component);\n\n PlotlyComponent.propTypes = {\n data: _propTypes[\"default\"].arrayOf(_propTypes[\"default\"].object),\n config: _propTypes[\"default\"].object,\n layout: _propTypes[\"default\"].object,\n frames: _propTypes[\"default\"].arrayOf(_propTypes[\"default\"].object),\n revision: _propTypes[\"default\"].number,\n onInitialized: _propTypes[\"default\"].func,\n onPurge: _propTypes[\"default\"].func,\n onError: _propTypes[\"default\"].func,\n onUpdate: _propTypes[\"default\"].func,\n debug: _propTypes[\"default\"].bool,\n style: _propTypes[\"default\"].object,\n className: _propTypes[\"default\"].string,\n useResizeHandler: _propTypes[\"default\"].bool,\n divId: _propTypes[\"default\"].string\n };\n eventNames.forEach(function (eventName) {\n PlotlyComponent.propTypes['on' + eventName] = _propTypes[\"default\"].func;\n });\n PlotlyComponent.defaultProps = {\n debug: false,\n useResizeHandler: false,\n data: [],\n style: {\n position: 'relative',\n display: 'inline-block'\n }\n };\n return PlotlyComponent;\n}\n//# sourceMappingURL=factory.js.map"],"names":["root","factory","module","this","Plotly","__getOwnPropNames","__esm","fn","res","__commonJS","cb","mod","require_version","exports","require_npo_src","name","context","definition","builtInProp","cycle","scheduling_queue","ToString","timer","obj","val","config","first","last","item","Item","self2","f","schedule","isThenable","o","_then","o_type","notify","i","notifyIsolated","chain","ret","err","resolve","msg","def_wrapper","MakeDefWrapper","reject","iteratePromises","Constructor","arr","resolver","rejecter","idx","idx2","MakeDef","Promise2","executor","def","success","failure","resolve2","reject2","PromisePrototype","len","msgs","count","require_d3","d3","d3_arraySlice","d3_array","list","d3_document","d3_documentElement","node","d3_window","array","d3_element_prototype","d3_element_setAttribute","d3_element_setAttributeNS","d3_style_prototype","d3_style_setProperty","value","space","local","priority","d3_ascending","a","b","n","c","d3_number","x","d3_numeric","s","j","values","p","H","h","v","e","numbers","m","d","d3_bisector","compare","lo","hi","mid","d3_bisect","i0","i1","t","indexes","permutes","p1","pairs","matrix","d3_transposeLength","transpose","row","map","keys","key","entries","arrays","merged","abs","start","stop","step","range","k","d3_range_integerScale","d3_class","ctor","properties","object","d3_Map","key2","d3_map_proto","d3_map_zero","d3_map_has","d3_map_escape","d3_map_remove","d3_map_keys","d3_map_unescape","d3_map_size","d3_map_empty","size","nest","sortKeys","sortValues","rollup","mapType","depth","keyValue","setter","valuesByKey","keyValue2","values2","map2","sortKey","keyMap","order","set","d3_Set","d3_identity","target","source","method","d3_rebind","d3_vendorSymbol","d3_vendorPrefixes","prefixName","d3_noop","dispatch","d3_dispatch","d3_dispatch_event","type","listener","listeners","listenerByName","event","z","l","d3_eventPreventDefault","d3_eventSource","d3_eventDispatch","thiz","argumentz","e1","e0","d3_requote_re","d3_subclass","prototype","property","d3_selection","groups","d3_selectionPrototype","d3_select","d3_selectAll","d3_selectMatches","d3_selectMatcher","n2","s2","selector","subgroups","subgroup","subnode","group","d3_selection_selector","d3_selection_selectorAll","d3_nsXhtml","d3_nsPrefix","prefix","d3_selection_attr","attrNull","attrNullNS","attrConstant","attrConstantNS","attrFunction","attrFunctionNS","d3_collapse","d3_selection_classes","d3_selection_classedRe","d3_selection_classed","d3_selection_classedName","classedConstant","classedFunction","re","d3_selection_style","styleNull","styleConstant","styleFunction","d3_selection_property","propertyNull","propertyConstant","propertyFunction","d3_selection_creator","create","document2","namespace","createNS","before","d3_selectionRemove","parent","bind","group2","groupData","i2","n0","updateNodes","enterNodes","exitNodes","node2","nodeData","nodeByKeyValue","keyValues","d3_selection_dataNode","enter","update","exit","d3_selection_enter","data","filter","d3_selection_filter","next","comparator","d3_selection_sortComparator","callback","d3_selection_each","args","selection","d3_selection_enterPrototype","upgroup","d3_selection_enterInsertBefore","j0","nodes","capture","d3_selection_on","wrap","d3_selection_onListener","d3_selection_onFilters","d3_selection_onFilter","onRemove","onAdd","removeAll","match","name2","related","d3_event_dragSelect","d3_event_dragId","d3_event_dragSuppress","click","w","style","select","suppressClick","off","container","d3_mousePoint","d3_mouse_bug44083","svg","point","window2","ctm","rect","touches","identifier","touch","drag","origin","mousedown","dragstart","touchstart","d3_behavior_dragTouchId","id","position","subject","move","end","that","dragged","dragId","dragName","dragOffset","dragSubject","moved","ended","dragRestore","position0","position1","dx","dy","ε","ε2","π","τ","τε","halfπ","d3_radians","d3_degrees","d3_cross2d","d3_asin","d3_sinh","d3_cosh","d3_tanh","ρ","ρ2","ρ4","p0","ux0","uy0","w0","ux1","uy1","w1","d2","S","d1","b0","b1","r0","r1","coshr0","u","view","translate0","center0","center","scaleExtent","d3_behavior_zoomInfinity","duration","zooming","mousemove","mouseup","mousewheelTimer","touchtime","zoom","x0","x1","y0","y1","d3_behavior_zoomWheel","d3_behavior_zoomDelta","g","mousedowned","mousewheeled","dblclicked","touchstarted","view1","d3_transitionInheritId","zoomstarted","cx","cy","zoomed","zoomended","_","rescale","scaleTo","location","translateTo","zoomTo","y","location0","d3_selection_interrupt","locations0","distance0","scale0","zoomName","touchmove","touchend","targets","started","relocate","changed","now","q","l0","l1","distance1","scale1","d3_color","d3_hsl","d3_rgb_parse","d3_rgb_hsl","d3_hslPrototype","d3_hsl_rgb","m1","m2","h2","vv","d3_rgb","d3_hcl","d3_lab","d3_lab_hcl","d3_rgb_lab","d3_hclPrototype","d3_lab_K","d3_hcl_lab","d3_lab_X","d3_lab_Y","d3_lab_Z","d3_labPrototype","d3_lab_rgb","d3_lab_xyz","d3_xyz_rgb","d3_xyz_lab","r","d3_rgbNumber","d3_rgbString","d3_rgbPrototype","d3_rgb_hex","format","rgb","hsl","color","d3_rgb_parseNumber","d3_rgb_names","min","max","d3_rgb_xyz","d3_functor","d3_xhrType","response","url","mimeType","d3_xhr","xhr","headers","request","responseType","respond","status","result","d3_xhrHasResponse","callback2","request2","d3_xhr_fixCallback","error","delimiter","reFormat","delimiterCode","dsv","typedResponse","text","row2","EOL","EOF","rows","N","I","eol","token","fieldSet","fields","field","formatValue","formatRow","d3_timer_queueHead","d3_timer_queueTail","d3_timer_interval","d3_timer_timeout","d3_timer_frame","d3_timer","delay","then","time","d3_timer_step","d3_timer_mark","d3_timer_sweep","t0","t1","d3_geom_pointX","d3_geom_pointY","vertices","hull","fx","fy","points","flippedPoints","d3_geom_hullOrder","upper","d3_geom_hullUpper","lower","skipLeft","skipRight","polygon","hs","coordinates","d3_geom_polygonPrototype","area","input","closed","d3_geom_polygonClosed","d3_geom_polygonInside","d3_geom_polygonIntersect","x3","x21","x43","y3","y21","y43","ua","d3_geom_voronoiEdges","d3_geom_voronoiCells","d3_geom_voronoiBeaches","d3_geom_voronoiBeachPool","d3_geom_voronoiFirstCircle","d3_geom_voronoiCircles","d3_geom_voronoiCirclePool","d3_geom_voronoiBeach","d3_geom_voronoiRedBlackNode","d3_geom_voronoiCreateBeach","site","beach","d3_geom_voronoiDetachBeach","d3_geom_voronoiDetachCircle","d3_geom_voronoiRemoveBeach","circle","vertex","previous","disappearing","lArc","rArc","nArcs","iArc","d3_geom_voronoiSetEdgeEnd","d3_geom_voronoiCreateEdge","d3_geom_voronoiAttachCircle","d3_geom_voronoiAddBeach","directrix","dxl","dxr","d3_geom_voronoiLeftBreakPoint","d3_geom_voronoiRightBreakPoint","newArc","lSite","ax","ay","bx","by","rSite","hb","hc","arc","rfocx","rfocy","pby2","lfocx","lfocy","plby2","hl","aby2","d3_geom_voronoiCell","halfEdges","iHalfEdge","edge","d3_geom_voronoiHalfEdgeOrder","d3_geom_voronoiCloseCells","extent","x2","y2","cells","iCell","cell","nHalfEdges","d3_geom_voronoiHalfEdge","d3_geom_voronoiCreateBorderEdge","d3_geom_voronoiCircle","cSite","ha","d3_geom_clipLine","line","d3_geom_voronoiClipEdges","edges","clip","d3_geom_voronoiConnectEdge","vb","va","lx","ly","rx","ry","fm","fb","d3_geom_voronoiEdge","d3_geom_voronoiRedBlackTree","after","grandpa","uncle","d3_geom_voronoiRedBlackFirst","d3_geom_voronoiRedBlackRotateLeft","d3_geom_voronoiRedBlackRotateRight","sibling","left","right","red","tree","d3_geom_voronoi","sites","bbox","d3_geom_voronoiVertexOrder","diagram","clipExtent","d3_geom_voronoiClipExtent","voronoi","polygons","triangles","s0","s1","d3_geom_voronoiTriangleArea","compat","d3_geom_quadtreeCompatX","d3_geom_quadtreeCompatY","quadtree","xs","ys","x1_","y1_","x2_","y2_","x_","y_","insert","x12","y12","x22","y22","nx","ny","insertChild","nPoint","xm","ym","below","d3_geom_quadtreeNode","d3_geom_quadtreeVisit","d3_geom_quadtreeFind","sx","sy","children","minDistance2","closestPoint","find","distance2","distance","d3_interpolateRgb","ar","ag","ab","br","bg","bb","d3_interpolateObject","d3_interpolate","d3_interpolateNumber","d3_interpolateString","bi","d3_interpolate_numberA","d3_interpolate_numberB","am","bm","bs","d3_interpolateArray","na","nb","d3_ease_default","d3_ease","d3_ease_poly","d3_ease_quad","d3_ease_cubic","d3_ease_sin","d3_ease_exp","d3_ease_circle","d3_ease_elastic","d3_ease_back","d3_ease_bounce","d3_ease_mode","d3_ease_reverse","d3_ease_reflect","d3_ease_clamp","d3_ease_cubicInOut","t2","t3","d3_interpolateHcl","ah","ac","al","bh","bc","bl","d3_interpolateHsl","as","d3_interpolateLab","aa","ba","d3_interpolateRound","string","string2","d3_transform","d3_transformIdentity","kx","d3_transformNormalize","kz","d3_transformDot","ky","d3_transformCombine","d3_interpolateTransform","d3_interpolateTransformPop","d3_interpolateTranslate","ta","tb","d3_interpolateRotate","ra","rb","d3_interpolateSkew","wa","wb","d3_interpolateScale","ka","kb","d3_uninterpolateNumber","d3_uninterpolateClamp","links","paths","d3_layout_bundlePath","link","lca","d3_layout_bundleLeastCommonAncestor","d3_layout_bundleAncestors","ancestors","aNodes","bNodes","aNode","bNode","sharedNode","chord","chords","padding","sortGroups","sortSubgroups","sortChords","relayout","groupSums","groupIndex","subgroupIndex","di","dj","a0","a1","resort","force","alpha","friction","linkDistance","d3_layout_forceLinkDistance","linkStrength","d3_layout_forceLinkStrength","charge","chargeDistance2","d3_layout_forceChargeDistance2","gravity","theta2","distances","strengths","charges","repulse","quad","dw","dn","d3_layout_forceAccumulate","neighbors","dimension","size2","o2","candidates","d3_layout_forceDragstart","dragmove","d3_layout_forceDragend","d3_layout_forceMouseover","d3_layout_forceMouseout","sort","d3_layout_hierarchySort","d3_layout_hierarchyChildren","d3_layout_hierarchyValue","hierarchy","stack","childs","child","d3_layout_hierarchyVisitAfter","childs2","d3_layout_hierarchyVisitBefore","d3_layout_hierarchyRebind","d3_layout_hierarchyLinks","nodes2","partition","d3_layout_pieSortByValue","startAngle","endAngle","padAngle","pie","da","pa","sum","index","arcs","d3_layout_stackOrderDefault","offset","d3_layout_stackOffsetZero","out","d3_layout_stackOut","d3_layout_stackX","d3_layout_stackY","series","orders","offsets","d3_layout_stackOrders","d3_layout_stackOffsets","d3_layout_stackMaxIndex","sums","d3_layout_stackReduceSum","top","bottom","tops","bottoms","s3","o0","d3_layout_stackSum","frequency","valuer","ranger","d3_layout_histogramRange","binner","d3_layout_histogramBinSturges","histogram","bins","thresholds","bin","d3_layout_histogramBinFixed","d3_layout_packSort","radius","pack","d3_layout_packSiblings","dr","d3_layout_packTransform","d3_layout_packInsert","d3_layout_packSplice","d3_layout_packIntersects","xMin","xMax","yMin","yMax","bound","d3_layout_packLink","d3_layout_packPlace","isect","cr","d3_layout_packUnlink","db","dc","separation","d3_layout_treeSeparation","nodeSize","root0","root1","wrapTree","firstWalk","secondWalk","sizeNode","tx","queue","node1","siblings","d3_layout_treeShift","midpoint","apportion","ancestor","vip","vop","vim","vom","sip","sop","sim","som","shift","d3_layout_treeRight","d3_layout_treeLeft","d3_layout_treeMove","d3_layout_treeAncestor","wm","wp","change","cluster","previousNode","d3_layout_clusterX","d3_layout_clusterY","d3_layout_clusterLeft","d3_layout_clusterRight","round","pad","d3_layout_treemapPadNull","sticky","stickies","mode","ratio","scale","squarify","remaining","best","score","worst","stickify","rmax","rmin","flush","treemap","padFunction","d3_layout_treemapPad","padConstant","mu","sigma","random","d3_scaleExtent","domain","d3_scaleRange","d3_scale_bilinear","uninterpolate","interpolate","d3_scale_nice","nice","d3_scale_niceStep","d3_scale_niceIdentity","d3_scale_polylinear","j2","d3_scale_linear","clamp","output","linear","d3_scale_linearTicks","d3_scale_linearNice","d3_scale_linearRebind","d3_scale_linearTickRange","span","d3_scale_log","base","positive","log","pow","niced","d3_scale_logNiceNegative","ticks","d3_scale_pow","exponent","powp","d3_scale_powPow","powb","d3_scale_ordinal","rangeBand","steps","xi","outerPadding","reverse","d3_category10","d3_category20","d3_category20b","d3_category20c","d3_scale_quantile","d3_scale_quantize","d3_scale_threshold","d3_scale_identity","identity","d3_zero","innerRadius","d3_svg_arcInnerRadius","outerRadius","d3_svg_arcOuterRadius","cornerRadius","padRadius","d3_svg_arcAuto","d3_svg_arcStartAngle","d3_svg_arcEndAngle","d3_svg_arcPadAngle","cw","rc","circleSegment","rp","ap","path","d3_svg_arcSweep","h1","h0","rc1","rc0","oc","kc","lc","t30","d3_svg_arcCornerTangents","t12","t03","t21","x01","y01","ox","oy","D","cx0","cy0","cx1","cy1","dx0","dy0","dx1","dy1","d3_true","d3_svg_line","projection","defined","d3_svg_lineLinear","interpolateKey","tension","segments","segment","d3_svg_lineInterpolators","d3_svg_lineLinearClosed","d3_svg_lineStep","d3_svg_lineStepBefore","d3_svg_lineStepAfter","d3_svg_lineBasis","d3_svg_lineBasisOpen","d3_svg_lineBasisClosed","d3_svg_lineBundle","d3_svg_lineCardinal","d3_svg_lineCardinalOpen","d3_svg_lineCardinalClosed","d3_svg_lineMonotone","d3_svg_lineHermite","d3_svg_lineCardinalTangents","tangents","pi","lp","p2","px","py","d3_svg_lineDot4","d3_svg_lineBasisBezier3","d3_svg_lineBasisBezier","d3_svg_lineBasisBezier1","d3_svg_lineBasisBezier2","d3_svg_lineSlope","d3_svg_lineFiniteDifferences","d3_svg_lineMonotoneTangents","d3_svg_lineRadial","d3_svg_area","interpolateReverse","L","points0","points1","fx0","fy0","fx1","fy1","d3_source","d3_target","d3_svg_chordRadius","equals","curve","subgroup2","d3_svg_diagonalProjection","diagonal","p3","projection_","d3_svg_diagonalRadialProjection","d3_svg_symbolType","d3_svg_symbolSize","symbol","d3_svg_symbols","d3_svg_symbolCircle","d3_svg_symbolTan30","d3_svg_symbolSqrt3","d3_transitionId","ns","d3_transitionNamespace","transition","d3_transitionInherit","d3_transitionNode","d3_transition","d3_selection_interruptNS","lock","activeId","active","d3_transitionPrototype","subnodes","tween","d3_transition_tween","nameNS","attrTween","attrTweenNS","styleString","styleTween","d3_transition_text","inherit","inheritId","id0","id1","ease","tweens","elapsed","cancelId","cancel","tick","orient","d3_svg_axisDefaultOrient","innerTickSize","outerTickSize","tickPadding","tickArguments_","tickValues","tickFormat_","axis","g2","tickFormat","tickEnter","tickExit","tickUpdate","tickSpacing","tickTransform","pathUpdate","lineEnter","lineUpdate","textEnter","textUpdate","sign","d3_svg_axisX","d3_svg_axisY","d3_svg_axisOrients","v0","brush","xExtent","yExtent","xExtentDomain","yExtentDomain","xClamp","yClamp","resizes","d3_svg_brushResizes","brushstart","background","resize","d3_svg_brushCursor","gUpdate","backgroundUpdate","redrawX","redrawY","redraw","event_","extent1","extent0","yi","eventTarget","resizing","resizingX","resizingY","dragging","keydown","keyup","brushmove","brushend","ex","ey","move1","d3_json","d3_html","require_d3_time","global2","exports2","newInterval","floori","offseti","interval","date","d0","test","millisecond","milliseconds","durationSecond","durationMinute","durationHour","durationDay","durationWeek","second","seconds","minute","minutes","hour","hours","day","days","weekday","sunday","monday","tuesday","wednesday","thursday","friday","saturday","sundays","mondays","tuesdays","wednesdays","thursdays","fridays","saturdays","month","months","year","years","utcMinute","utcMinutes","utcHour","utcHours","utcDay","utcDays","utcWeekday","utcSunday","utcMonday","utcTuesday","utcWednesday","utcThursday","utcFriday","utcSaturday","utcSundays","utcMondays","utcTuesdays","utcWednesdays","utcThursdays","utcFridays","utcSaturdays","utcMonth","utcMonths","utcYear","utcYears","require_d3_time_format","d3Time","localDate","utcDate","newDate","formatLocale","locale2","locale_dateTime","locale_date","locale_time","locale_periods","locale_weekdays","locale_shortWeekdays","locale_months","locale_shortMonths","periodRe","formatRe","periodLookup","formatLookup","weekdayRe","weekdayLookup","shortWeekdayRe","shortWeekdayLookup","monthRe","monthLookup","shortMonthRe","shortMonthLookup","formats","formatShortWeekday","formatWeekday","formatShortMonth","formatMonth","formatDayOfMonth","formatMicroseconds","formatHour24","formatHour12","formatDayOfYear","formatMilliseconds","formatMonthNumber","formatMinutes","formatPeriod","formatQuarter","formatUnixTimestamp","formatUnixTimestampSeconds","formatSeconds","formatWeekdayNumberMonday","formatWeekNumberSunday","formatWeekNumberISO","formatWeekdayNumberSunday","formatWeekNumberMonday","formatYear","formatFullYear","formatZone","formatLiteralPercent","utcFormats","formatUTCShortWeekday","formatUTCWeekday","formatUTCShortMonth","formatUTCMonth","formatUTCDayOfMonth","formatUTCMicroseconds","formatUTCHour24","formatUTCHour12","formatUTCDayOfYear","formatUTCMilliseconds","formatUTCMonthNumber","formatUTCMinutes","formatUTCPeriod","formatUTCQuarter","formatUTCSeconds","formatUTCWeekdayNumberMonday","formatUTCWeekNumberSunday","formatUTCWeekNumberISO","formatUTCWeekdayNumberSunday","formatUTCWeekNumberMonday","formatUTCYear","formatUTCFullYear","formatUTCZone","parses","parseShortWeekday","parseWeekday","parseShortMonth","parseMonth","parseLocaleDateTime","parseDayOfMonth","parseMicroseconds","parseHour24","parseDayOfYear","parseMilliseconds","parseMonthNumber","parseMinutes","parsePeriod","parseQuarter","parseUnixTimestamp","parseUnixTimestampSeconds","parseSeconds","parseWeekdayNumberMonday","parseWeekNumberSunday","parseWeekNumberISO","parseWeekdayNumberSunday","parseWeekNumberMonday","parseLocaleDate","parseLocaleTime","parseYear","parseFullYear","parseZone","parseLiteralPercent","newFormat","specifier","formats2","pad2","pads","newParse","Z","parseSpecifier","week","parse","numberRe","percentRe","requoteRe","fill","width","length","requote","names","dow","locale","defaultLocale","isoSpecifier","formatIsoNative","formatIso","parseIsoNative","parseIso","require_d3_format","formatDecimal","formatDecimalParts","coefficient","formatGroup","grouping","thousands","formatNumerals","numerals","formatSpecifier","FormatSpecifier","formatTrim","prefixExponent","formatPrefixAuto","exponent2","formatRounded","formatTypes","prefixes","currencyPrefix","currencySuffix","decimal","percent","minus","nan","align","zero","comma","precision","trim","suffix","formatType","maybeSuffix","valuePrefix","valueSuffix","valueNegative","formatPrefix","value2","precisionFixed","precisionPrefix","precisionRound","require_is_string_blank","str","require_fast_isnumeric","allBlankCharCodes","original","require_numerical","require_base64_arraybuffer_umd","chars","lookup","encode","arraybuffer","bytes","base64","decode","bufferLength","encoded1","encoded2","encoded3","encoded4","require_is_plain_object","require_array","b64decode","isPlainObject","isArray","dv","isTypedArray","isArrayOrTypedArray","isArray1D","typedArrays","isArrayBuffer","vIn","coerceTypedArraySpec","dtype","T","BYTES_PER_ELEMENT","buffer","shape","ndim","nj","ni","rowBytes","pos","nk","allArray","totalLen","_constructor","arg0","argi","posi","leni","_rowLength","len0","require_nested_property","isNumeric","propStr","propParts","indexed","indices","badContainer","npSet","npGet","cont","parts","curCont","curPart","allSame","ARGS_PATTERN","isDeletable","propPart","toDelete","setArrayAll","checkNewContainer","joinPropStr","newPart","toAdd","containerArray","innerParts","arrayVal","allSet","thisVal","thisPropStr","deleteThis","firstPart","part","nextPart","require_keyed_container","nestedProperty","SIMPLE_PROPERTY_REGEX","NONE","NAME","VALUE","BOTH","UNSET","baseObj","keyName","valueName","baseProp","changeTypes","indexLookup","isSimpleValueProp","changeType","newValue","newName","astr","require_relative_attr","ASCEND","SIMPLEATTR","baseAttr","relativeAttr","require_to_log_range","newVal","require_relink_private","relinkPrivateKeys","toContainer","fromContainer","fromVal","toVal","minLen","require_mod","modHalf","require_tinycolor","Math2","trimLeft","trimRight","tinyCounter","mathRound","mathMin","mathMax","mathRandom","tinycolor","opts","inputToRGB","RsRGB","GsRGB","BsRGB","R","G","B","boundAlpha","hsv","rgbToHsv","rgbToHsl","allow3Char","rgbToHex","allow4Char","rgbaToHex","bound01","hexNames","secondColor","hex8String","rgbaToArgbHex","secondHex8String","gradientType","formatSet","formattedString","hasAlpha","needsAlphaFormat","lighten","brighten","darken","desaturate","saturate","greyscale","spin","analogous","complement","monochromatic","splitcomplement","triad","tetrad","newColor","convertToPercentage","ok","stringInputToObject","isValidCSSUnit","rgbToRgb","hsvToRgb","hslToRgb","hue2rgb","q2","hex","convertDecimalToHex","color1","color2","amount","clamp01","hue","results","slices","modification","rgb1","rgb2","rgba","c1","c2","wcag2","readability","wcag2Parms","validateWCAG2Parms","baseColor","colorList","bestColor","bestScore","includeFallbackColors","level","flip","flipped","isOnePointZero","processPercent","isPercentage","parseIntFromHex","convertHexToDecimal","matchers","CSS_INTEGER","CSS_NUMBER","CSS_UNIT","PERMISSIVE_MATCH3","PERMISSIVE_MATCH4","named","parms","require_extend","primitivesLoopSplice","_extend","inputs","isDeep","keepAllKeys","noArrayCopies","src","copy","copyIsArray","clone","allPrimitives","require_font_attributes","variantValues","editType","colorEditType","weight","attrs","require_constants","require_layout_attributes","constants","fontAttrs","font","require_attributes","hoverLabelAttrs","extendFlat","require_attributes2","fxAttrs","require_scales","scales","defaultScale","getScale","scl","dflt","parseScale","isValidScaleArray","highestVal","si","isValidScale","require_attributes3","require_color","colorAttrs","defaultLine","tc","cstr","op","front","back","fc","bcflat","fcflat","factor","sc","ic","lightAmount","darkAmount","cleanOne","el0","valTrim","rgbStr","require_interactions","require_regex","head","tail","openEnded","matchBeginning","fullTail","startWithPrefix","require_coerce","baseTraceAttrs","colorscales","Color","DESELECTDIM","counterRegex","isTypedArraySpec","decodeTypedArraySpec","propOut","regex","okToCoerce","isColor","vParts","vi","coercePart","v2","opts2","dflt2","v3","twoD","items","vOut","arrayItems","arrayItems2D","innerItemsOnly","len2","vNew","validate","containerIn","containerOut","attributes","attribute","propIn","template","coerceFunction","valIn","coerce","attr","dfltObj","dfltShadow","markerColor","hasMarkerColorscale","fillmode","isOverlay","bgcolor","traceIn","traceOut","layoutOut","moduleAttrs","valObj","flags","mo","smoDflt","usmoDflt","valObjectDef","failed","propMock","require_plot_config","configAttributes","dfltConfig","crawl","require_notifier","NOTEDATA","displayLength","ts","notifierContainer","notes","killNote","thisText","thisIndex","note","lines","require_loggers","notifier","loggers","messages","require_noop","require_push_unique","itemStr","require_create","require_clone","require_copy","require_identity","require_transpose","a01","a02","a03","a12","a13","a23","require_invert","invert","a00","a10","a11","a20","a21","a22","a30","a31","a32","a33","b00","b01","b02","b03","b04","b05","b06","b07","b08","b09","b10","b11","det","require_adjoint","adjoint","require_determinant","determinant","require_multiply","multiply","b2","b3","require_translate","translate","require_scale","require_rotate","rotate","rad","b12","b20","b21","b22","require_rotateX","rotateX","require_rotateY","rotateY","require_rotateZ","rotateZ","require_fromRotation","fromRotation","require_fromRotationTranslation","fromRotationTranslation","z2","xx","xy","xz","yy","yz","zz","wx","wy","wz","require_fromScaling","fromScaling","require_fromTranslation","fromTranslation","require_fromXRotation","fromXRotation","require_fromYRotation","fromYRotation","require_fromZRotation","fromZRotation","require_fromQuat","fromQuat","yx","zx","zy","require_frustum","frustum","near","far","rl","nf","require_perspective","perspective","fovy","aspect","require_perspectiveFromFieldOfView","perspectiveFromFieldOfView","fov","upTan","downTan","leftTan","rightTan","xScale","yScale","require_ortho","ortho","lr","bt","require_lookAt","lookAt","eye","up","z0","z1","eyex","eyey","eyez","upx","upy","upz","centerx","centery","centerz","require_str","require_gl_mat4","require_matrix","mat4X4","rowLength","colLength","maxlen","zlen","yTranspose","transform","xyz","at","xys","require_dom","getGraphDiv","gd","gdElement","isPlotDiv","el","el3","removeElement","elParent","addStyleRule","addRelatedStyleRule","uid","styleSheet","deleteRelatedStyleRule","setStyleOnHover","activeSelector","childSelector","activeStyle","inactiveStyle","element","activeStyleParts","inactiveStyleParts","eventAddedAttrName","childEl","getFullTransformMatrix","allElements","getElementAndAncestors","getElementTransformMatrix","isTransformableElement","equalDomRects","require_animation_attributes","require_edit_types","traceOpts","layoutOpts","traceEditTypeFlags","layoutEditTypeFlags","falseObj","editTypeParts","overrideAll","editTypeOverride","overrideContainers","overrideOne","require_attributes4","require_docs","require_template_attributes","docs","describeVariables","extra","descPart","quotedKeys","hovertemplate","texttemplate","require_label_texttemplate","d2l","l2d","x0Fn","x1Fn","y0Fn","y1Fn","x0shiftFn","x1shiftFn","y0shiftFn","y1shiftFn","dxFn","xa","dyFn","ya","widthFn","heightFn","lengthFn","xcenterFn","ycenterFn","slopeFn","require_attributes5","basePlotAttributes","dash","shapeTexttemplateAttrs","shapeLabelTexttemplateVars","require_attributes6","require_pad_attributes","require_layout_attributes2","animationAttrs","drawNewShapeAttrs","drawNewSelectionAttrs","padAttrs","globalFont","init_maplibre_gl","init_maplibre_gl2","require_registry","Loggers","noop","pushUnique","ExtendModule","baseLayoutAttributes","extendDeepAll","_modules","newModule","registerTraceModule","registerTransformModule","registerComponentModule","registerLocale","trace","_module","getTraceType","traceType","category","thisType","categoriesIn","meta","registerSubplot","categoryObj","componentName","mergeComponentAttrsToTrace","basePlotModule","bpmName","styleRules","plotType","findArrayRegexps","mergeComponentAttrsToSubplot","subplotName","hasTransform","hasCalcTransform","baseLocale","newDict","hasDict","hasFormat","locales","localeObj","baseLocaleObj","arrayAttrRegexps","componentSchema","traceAttrs","subplotModule","subplotAttrs","subplotAttr","componentLayoutAttrs","require_dates","timeFormat","BADNUM","ONEDAY","ONEHOUR","ONEMIN","ONESEC","EPOCHJD","Registry","utcFormat","DATETIME_REGEXP","DATETIME_REGEXP_CN","YFIRST","isWorldCalendar","calendar","dayOfWeek","tick0","_dateTick0","MIN_MS","MAX_MS","tzOffset","offsetTweak","comb","isWorld","isChinese","M","cDate","calInstance","isIntercalary","lpad","digits","NINETYDAYS","THREEHOURS","FIVEMIN","ms","msecTenths","msRounded","dateStr","msec10","dateJD","timeMs","includeTime","fracMatch","halfYearMatch","quarterToHalfYear","modDateFormat","fmt","formatter","fracSecs","MAXSECONDS","formatTime","tr","timePart","timeStr","sec","secStr","extraFormat","THREEDAYS","dMonth","exactYears","exactMonths","exactDays","blankCount","dataCount","require_identity2","require_search","roundingError","linelow","n1","binSize","lessThan","lessOrEqual","greaterOrEqual","greaterThan","valsIn","vals","minDiff","errDiff","newVals","preV","diff","arrayIn","low","high","dlow","dhigh","rounded","sortFn","notOrdered","notReversed","pairOrder","ind","require_sort_object_keys","require_stats","numArr","mean","frac","require_angles","modModule","PI","twoPI","deg2rad","deg","rad2deg","isFullCircle","aBnds","angleDelta","angleDist","isAngleInsideSector","isPtInsideSector","rBnds","_path","isClosed","isCircle","aStart","aMid","aEnd","rStart","rEnd","pt","largeArc","pathArc","pathSector","pathAnnulus","require_anchor_utils","require_geometry2d","segmentsIntersect","x4","y4","x34","y34","ll12","ll34","dist2","perpDistance2","xab","yab","llab","xac","yac","fcAB","xbc","ybc","crossProduct","locationCache","workingPath","workingTextWidth","totalPathLen","positionOnPath","textWidth","theta","pCenter","bounds","pMin","pTotal","pMax","pt0","ptTotal","getDistToPlot","distToPlot","coord","pathLength","tolerance","iterationLimit","mul","require_throttle","timerCache","minInterval","cache","idi","_clearTimeout","exec","previousOnDone","require_clear_responsive","require_is_mobile","isMobile","mobileRE","notMobileRE","tabletRE","require_preserve_drawing_buffer","isMobileOrTablet","getUserAgent","enable","allParts","prevPart","require_make_trace_groups","traceLayer","cdModule","cls","traces","cd","require_localize","dict","require_filter_unique","seen","require_filter_visible","filterFn","isCalcData","calcDataFilter","baseFilter","require_increment","delta","newX","lenX1","lenDt","lenX0","require_clean_number","JUNK","require_lib","d3Format","numConstants","MAX_SAFE","MIN_SAFE","lib","formatStr","seenBadFormats","arrayModule","coerceModule","datesModule","searchModule","statsModule","matrixModule","anglesModule","anchorUtils","geom2dModule","extendModule","loggersModule","regexModule","throttleModule","domModule","cnt","attrList","part1","part2","xp","yp","temp","elem","v1","func","randstr","existing","bits","_recursion","rem","parsed","opt","optname","optObj","FWHM","alen","alen2","wlen","arrayOut","sequence","arg","finalStep","fni","continueAsync","hasAny","hasAll","traceAttr","cdAttr","hasFn","imax","ptNumber","calcPt","calcKey","traceKey","traceVal","makePtIndex2PtNumber","indexToPoints","ptIndex2ptNumber","pts","calcTrace","ptNumber2cdIndex","selectedpoints","isCdIndexValid","ptIndex","cdIndex","transformOpts","minExtend","obj1","obj2","objOut","arrayLen","fragments","IS_SAFARI_REGEX","IS_IOS_REGEX","FIREFOX_VERSION_REGEX","versionInt","nodeType","className","enterFn","sel","layer","tmpObj","dottedPropertyRegex","indexedPropertyRegex","notValid","prop","datum","dest","trailingPath","separators","separatethousands","thousandsRe","decimalSep","thouSep","getterCache","dummy","hovertemplateWarnings","templateFormatString","texttemplateWarnings","MULT_DIV_REGEX","multDivParser","inputStr","texttemplateWarningsForShapes","TEMPLATE_STRING_FORMAT_SEPARATOR","labels","d3locale","rawKey","isOther","isSpaceOther","isSpaceOtherSpace","isOtherSpace","hasOther","parsedOp","parsedNumber","_match","keyLabel","char0","char9","numA","numB","charA","charB","isNumA","isNumB","randSeed","lastVal","contOut","htx","display","noCenter","textX","textY","targetX","targetY","anchorX","anchorY","baseFont","mainSeparator","lastSeparator","firefoxVersion","isProblematicFirefox","require_plotcss","Lib","rules","fullSelector","require_client","require_has_hover","isBrowser","hasHover","require_events","ReflectApply","receiver","ReflectOwnKeys","NumberIsNaN","EventEmitter","once","defaultMaxListeners","checkListener","_getMaxListeners","doError","events","er","handler","arrayClone","_addListener","prepend","onceWrapper","_onceWrap","state","wrapped","originalListener","spliceOne","_listeners","unwrap","evlistener","unwrapListeners","emitter","listenerCount","errorListener","eventTargetAgnosticAddListener","addErrorHandlerIfEventEmitter","wrapListener","require_events2","Events","plotObj","ev","internalEv","nodeEventHandlerValue","handlers","apply","require_queue","copyArgArray","undoFunc","undoArgs","redoFunc","redoArgs","queueObj","queueIndex","require_frame_attributes","require_plot_schema","baseAttributes","frameAttributes","animationAttributes","editTypes","valObjectMeta","IS_SUBPLOT_OBJ","IS_LINKED_TO_ARRAY","ARRAY_ATTR_REGEXPS","DEPRECATED","UNDERSCORE_ATTRS","getTraceAttributes","getLayoutAttributes","getFramesAttributes","formatAttributes","specifiedLevel","attrString","attrName","fullAttrString","arrayAttributes","isArrayStack","baseContainer","baseAttrName","splittableAttr","crawlIntoTrace","astrPartial","newAstrPartial","valObject","recurseIntoValObject","fullLayout","layoutHeadAttr","basePlotModules","baseOverrides","modules","isIndex","newValObject","index2","copyBaseAttributes","copyModuleAttributes","layoutAttributes","handleBasePlotModule","schema","subplots","xkey","insertAttrs","mergeValTypeAndRole","formatArrayContainers","stringify","makeSrcAttr","attrs2","itemName","walk","np","baseAttrs","newAttrs","require_plot_template","plotAttributes","TEMPLATEITEMNAME","templateAttrs","dataTemplate","traceCounts","typeTemplates","newTrace","typei","baseName","inclusionAttr","defaultsTemplate","arrayDefaultKey","templateItems","usedNames","newItem","itemIn","templateItemName","validItemName","templateItem","defaultItems","outi","lastChar","parentIn","containerStr","itemOut","lengthIn","resetUpdate","modifyBase","modifyItem","getUpdateObj","updateOut","applyUpdate","updateToApply","require_constants2","require_axis_ids","axNum","axLetter","domainId","domainTest","only2d","idList","sceneIds3D","scene","subplotLists","fullTrace","id2","letter1","letter2","isFound","axId","require_handle_outline","clearOutlineControllers","zoomLayer","clearOutline","require_layout_attributes3","require_get_data","calcData","subplotId","subplotCalcData","calcdata","arg1","arg2","moduleCalcData","remainingCalcData","plotMethod","zorder","filterByZ","subplotData","require_command","commandList","onchange","enabled","binding","bindingValueHasChanged","checkEvents","bindingsByValue","refBinding","command","bindings","_method","allArgs","computeDataBindings","computeLayoutBindings","computeAnimateBindings","aobj","_attr","thisTraces","nAttr","tmp","thisPath","require_plots","timeFormatLocale","b64encode","PlotSchema","Template","axisIDs","scatterAttrs","frameAttrs","getModuleCalcData","plots","commandModule","resolveLastResize","oldchanged","linkContainer","toolspan","spacespan","sourcespan","positionPlayWithData","query","baseUrl","hiddenformDiv","hiddenform","hiddenformInput","d3FormatKeys","extraFormatKeys","skipUpdateCalc","oldFullLayout","newFullLayout","newLayout","oldFullData","newFullData","newData","oldCalcdata","formatObj","getFormatObj","oldWidth","oldHeight","missingWidthOrHeight","autosize","autosizable","initialAutoSize","getFormatter","emptySubplotLists","splomAxes","splomSubplots","getTraceUids","splomXa","splomYa","crossTraceDefaultsFuncs","funci","hadCartesian","hasCartesian","hadBgLayer","hasBgLayer","fillMetaTextHelpers","tracePreGUI","uids","initMargins","cd0","oldTrace","arrayAttrs","oldArrayVal","oldFullInput","prevFullInput","thisFullInput","oldLen","seenUids","setUid","tryUid","newUid","collectableSubplotTypes","subplotsRegistry","subplotType","formatKeys","formatDone","includeFormat","formatFinished","formatKey","formatj","_meta","meta4data","hadGl","hasGl","hasInfoLayer","oldLoop","oldUid","oldSubplots","newSubplots","newSubplotList","mockGd","ids","oldSubplot","xaxis","yaxis","plotinfo","axList","mainAx","findMainSubplot","ax2","isX","anchorAx","mainSubplotID","nextBestMainSubplotID","anchorID","counterIDs","counterPart","counterAx","locateColorAttrs","origprop","dataIn","dataOut","layout","visibleModules","colorCnt","pushModule","fullTrace2","carpetIndex","carpetDependents","templater","carpetAxis","optsOut","frameIn","frameOut","colorIndex","traceInIndex","colorway","defaultColor","visible","attri","vali","layoutIn","fontSize","titleYref","titleAutomargin","uniformtextMode","uirevision","getComputedSize","frameMargins","newWidth","newHeight","computedStyle","minWidth","minHeight","widthHasChanged","heightHasChanged","fullData","transitionData","componentsRegistry","component","Cartesian","transformModules","styleModules","height","margin","plotWidth","plotHeight","correction","gs","MIN_SPECIFIED_WIDTH","MIN_SPECIFIED_HEIGHT","minreducedwidth","minreducedheight","minFinalWidth","minFinalHeight","maxSpaceW","maxSpaceH","pushMargin","pushMarginIds","rW","rH","xl","xr","yt","yb","needsRedrawForShift","reservedMargins","oldMargins","ml","mr","mt","mb","margins","side","autoMarginPush","extraMargin","k1","pushleft","pushbottom","fl","pl","pb","availableWidth","availableHeight","k2","fr","pr","newL","newR","ft","newB","newT","maxNumberOfRedraws","refineTicks","hideFn","marginKeys","margin0","margin1","m0","dataonly","useDefaults","includeConfig","frames","stripObj","keepFunction","dIsArray","dIsTypedArray","bdata","operations","frame","_frames","_frameHash","oldName","frameName","frameLookup","traceIndices","traceIndex","destIndex","framePtr","frameStack","frameNameStack","hash","containerPaths","containerProp","containerVal","srcProp","destProp","srcContainer","destContainer","expandedObj","containerObj","srcObj","destTrace","srcTrace","destLayout","srcLayout","frameOpts","transitionOpts","transitionedTraces","axEdits","dataLength","traceIdx","layoutUpdate","axisAttrRe","xr0","yr0","xr1","yr1","editX","editY","makeCallback","traceTransitionOpts","hasAxisTransition","_transition","restyleFlags","relayoutFlags","fullLayout2","axisTransitionOpts","allTraceIndices","transitionAxes","transitionTraces","aborted","executeCallbacks","flushCallbacks","executeTransitions","numCallbacks","numCompleted","completeTransition","interruptPreviousTransitions","seq","transitionStarting","polarIds","cOpts","transformCalci","cdi","calci","isContainer","transforms","setupAxisCategories","doCrossTraceCalc","sorted","sortAxisCategoriesByValue","sortAxisCategoriesByValueRegex","affectedTraces","zMapCategory","type2","axLetter2","counterAxLetter","xCategorical","yCategorical","l2","aggFn","sortAscending","sortDescending","aggregator","categoriesValue","isSplom","isScattergl","catIndex","currentDimensionIndex","associatedXAxisID","categories","mapping","categoriesAggregatedValue","axLookup","setupOne","matchGroups","spType","methods","sp","spInfo","A","mayEmitSelected","subplot","subplotLayout","traceHashOld","traceHash","calcTraces","moduleNameOld","fakeCalcTrace","fakeTrace","moduleName","desiredType","makeOnCompleteCallback","cdmodule","had","has","require_xmlns_namespaces","require_alignment","require_svg_text_utils","strTranslate","xmlnsNamespaces","LINE_SPACING","FIND_TEX","_context","_callback","tex","svgClass","showText","hasLink","buildSVGText","texToSVG","_svgEl","_glyphDefs","_svgBBox","newSvg","mathjaxGroup","textHeight","anchor","LT_MATCH","GT_MATCH","cleanEscapesForTex","inlineMath","_texString","_config","MathJaxVersion","originalRenderer","originalConfig","originalProcessSectionDelay","tmpDiv","setConfig2","setConfig3","setRenderer2","setRenderer3","initiateMathJax","randomID","tmpNode","finalizeMathJax","nodeBBox","glyphDefs","resetRenderer2","resetRenderer3","resetConfig2","resetConfig3","TAG_STYLES","SHIFT_DY","RESET_DY","ZERO_WIDTH_SPACE","PROTOCOLS","NEWLINES","SPLIT_TAGS","ONE_TAG","BR_TAG","STYLEMATCH","HREFMATCH","TARGETMATCH","POPUPMATCH","getQuotedMatch","_str","convertEntities","COLORMATCH","allowedTags","ellipsis","eLen","oldParts","newParts","prevTag","tagType","pLen","pLen2","entityToUnicode","ENTITY_MATCH","fullMatch","innerMatch","outChar","fromCodePoint","code","stringFromCodePoint","stringFromCharCode","containerNode","nodeStack","currentNode","currentLine","newLine","lineNode","oldNodeStack","enterNode","nodeSpec2","nodeAttrs","href2","popup","newNode","addTextNode","resetter","exitNode","innerNode","hasLines","parti","tagStyle","nodeSpec","css","href","safeHref","sanitizeHref","decodedHref","dummyAnchor1","dummyAnchor2","rootNode","setOrGet","thisX","thisY","alignHTMLWith","_base","options","alignH","alignV","bRect","cRect","thisRect","getTop","getLeft","transformedCoords","onePx","_delegate","handlerElement","handleClick","appendEditable","mathjaxClass","selectElementContents","_el","plotDiv","div","cStyle","initialText","editDiv","require_helpers","hasColorscale","colorKey","isArrayWithOneNumber","constantAttrs","letterAttrs","extractOpts","colorAx","cont2","cLetter","k3","k22","extractScale","cmin","cmax","flipScale","sclNew","makeColorScaleFunc","specs","_range","_sclFunc","noNumericCheck","returnArray","sclFunc","colorArray2rbga","makeColorScaleFuncFromTrace","colorArray","colorObj","require_axis_format_attributes","FORMAT_LINK","DATE_FORMAT_LINK","axisHoverFormat","noDates","descriptionOnlyNumbers","descriptionWithDates","label","require_layout_attributes4","templatedArray","HOUR","DAY_OF_WEEK","minorTickmode","tickmode","makeNticks","minor","dtick","tickvals","makeTicklen","makeTickwidth","tickcolor","gridcolor","makeGridwidth","griddash","showgrid","require_attributes7","axesAttrs","require_attributes8","colorbarAttrs","sortObjectKeys","palettes","noScale","showScaleDflt","colorscaleDflt","colorAttr","auto","autoImpliedEdits","minmaxImpliedEdits","require_layout_attributes5","colorScaleAttrs","require_has_colorbar","require_clean_ticks","ONEWEEK","axType","isLog","isDate","isCat","dtickDflt","dtickNum","require_tick_value_defaults","cleanTicks","isMinor","cIn","cOut","readInput","_tick0","_dtick","_tickvals","tickmodeDefault","require_tick_mark_defaults","lAttr","tickLen","tickWidth","tickColor","showTicks","require_show_dflt","showAttrsAll","showAttrs","sameVal","require_array_container_defaults","parentObjIn","parentObjOut","previousContOut","contIn","require_tick_label_defaults","contrast","getShowAttrDflt","handleArrayContainerDefaults","labelalias","showAttrDflt","showTickLabels","contColor","dfltFontColor","tickAngle","tickformatstopDefaults","valueIn","valueOut","require_prefix_suffix_defaults","tickSuffixDflt","tickPrefix","tickSuffix","require_defaults","handleTickValueDefaults","handleTickMarkDefaults","handleTickLabelDefaults","handlePrefixSuffixDefaults","colorbarOut","colorbarIn","orientation","isVertical","thicknessmode","lenmode","yref","xref","isPaperY","isPaperX","defaultX","defaultY","defaultYAnchor","defaultXAnchor","ticklabelposition","tickFont","dfltTitleFont","require_defaults2","hasColorbar","colorbarDefaults","traceIs","npMaybe","parentCont","colorScaleDefaults","parentContIn","parentContOut","inTrace","thisFn","colorAxes","colorbarVisuals","stash","minIn","maxIn","validMinMax","sclIn","sclTemplate","autoColorscaleDflt","showScale","require_layout_defaults","colorAxIn","colorAxOut","coerceAx","require_cross_trace_defaults","replace","relinkColorAttrs","outerCont","cbOpt","isAuto","cbOpts","require_calc","minVal","maxVal","require_colorscale","helpers","require_subtypes","marker","require_make_bubble_size_func","sizeRef","sizeMin","baseFn","baseSize","require_helpers2","xaxes","yaxes","axArray","dxy","distfn","pointData","newDistance","passVal","pointNumber","pointIndices","getPointKey","pointVal","getPointData","pointNumbers","keyVal","pointKeyMap","xyHoverMode","unifiedHoverMode","hovermode","require_parse_svg_path","parseValues","number","require_symbol_defs","parseSvgPath","emptyPath","sqrt2","sqrt3","cos","sin","angle","standoff","skipAngle","rs","rd","rc2","ne","se","sw","nw","rt","r2","y5","aPart","headAngle","lastPathIn","lastPathOut","lastAngle","lastStandoff","cosT","sinT","cmd","cmdI","E","require_drawing","numberFormat","Colorscale","svgTextUtils","alignment","subTypes","makeBubbleSizeFn","appendArrayPointValue","drawing","variant","family","shadow","lineposition","textcase","dropNone","textcase2transform","lineposition2decorationLine","textcase2transformOptions","xcalendar","ycalendar","traceGroups","lineWidth","lw","ld","lw1","dlw","setFillStyle","forLegend","markerPattern","fillgradient","patternShape","patternBGColor","patternFGColor","patternFGOpacity","patternSize","patternSolidity","patternID","direction","gradientID","gradientWithBounds","SYMBOLDEFS","symDef","MAXSYMBOL","DOTPATH","vbase","makePointPath","symbolNumber","stopFormatter","gradientInfo","colorscale","info","inUserSpace","reversed","colorStops","fullID","gradient","stops","getFullUrl","calledBy","solidity","mcc","fgcolor","fgopacity","isLegend","linearFn","linewidth","patternTag","patternAttrs","fgC","fgRGB","fgAlpha","opacity","pattern","bgC","bgRGB","bgAlpha","rects","patterns","gradientsGroup","patternsGroup","mp","fns","markerLine","getMarkerAngle","getMarkerStandoff","perPointGradient","fillColor","lineColor","markerLineWidth","markerGradient","gradientColor","perPointPattern","selectedAttrs","unselectedAttrs","selectedMarker","unselectedMarker","smo","usmo","smoIsDefined","usmoIsDefined","mc","smc","usmc","sms","usms","smsIsDefined","usmsIsDefined","textFont","selectedTextFont","unselectedTextFont","stc","utc","mx","mrc2","TEXTOFFSETSIGN","textPointPosition","textPosition","markerRadius","dontTouchParent","numLines","extracTextFontSize","selectedTextColorFn","pointValues","fontColor","tp","CatmullRomExp","smoothness","makeTangent","pLast","lastDrawnX","lastDrawnY","roundEnd","isY","isLastPoint","applyBackoff","roundY","roundX","prevpt","thispt","nextpt","d1x","d1y","d2x","d2y","d1a","d2a","numx","numy","denom1","denom2","STEPPATH","STEPLINEAR","onestep","backoff","arrayBackoff","endI","endMarker","endMarkerSymbol","endMarkerSize","tester","testref","savedBBoxesCount","maxSavedBBoxes","inTester","nodeHash","innerBB","testNode","testRect","refRect","inputText","localId","getter","SCALE_RE","TEXT_POINT_LAST_TRANSLATION_RE","existingTransform","atan2","previousLon","previousLat","previousX","previousY","previousI","previousTraceUid","ref","lon","lat","north","east","lon1","lat1","lon2","lat2","dLon","deltaY","deltaX","dX","dY","lastShapeChar","require_titles","Plots","Drawing","interactConstants","OPPOSITE_SIDE","numStripRE","SUBTITLE_PADDING_MATHJAX_EM","SUBTITLE_PADDING_EM","draw","titleClass","placeholder","avoid","title","txt","titleIsPlaceholder","fontFamily","fontWeight","fontStyle","fontVariant","fontTextcase","fontLineposition","fontShadow","subtitleProp","subtitleEnabled","subtitlePlaceholder","subtitle","subtitleTxt","subtitleIsPlaceholder","subtitleOpacity","subtitleFont","subFontFamily","subFontSize","subFontColor","subFontWeight","subFontStyle","subFontVariant","subFontTextcase","subFontLineposition","subFontShadow","editAttr","editable","matchesPlaceholder","placeholder2","elShouldExist","hColorbarMoveTitle","subtitleEl","subtitleClass","subtitleElShouldExist","titleLayout","titleEl","subtitleEl2","drawTitle","scootTitle","titleAndSubtitleEls","transformVal","adjustSubtitlePosition","titleElMathGroup2","subtitleElement","titleElMathBbox2","subtitleY3","titleElMathGroup","titleElBbox2","titleElMathBbox","subtitleY2","subtitleAttributes","titleElIn","titleGroup","backside","shiftSign","titlebb","paperbb","maxshift","offsetLeft","offsetTop","avoidbb","shiftTemplate","setPlaceholder","placeholderText","titleElBbox","subtitleY","require_set_convert","cleanNumber","ms2DateTime","dateTime2ms","ensureNumber","FP_SAFE","LOG_CLIP","axisIds","HOUR_PATTERN","WEEKDAY_PATTERN","fromLog","isValidCategory","toLog","dt2ms","ms2dt","getCategoryName","setCategoryIndex","curLength","setMultiCategoryIndex","getCategoryIndex","getCategoryPosition","getRangePosition","_l2p","_p2l","l2p","p2l","signAx","axId2","ind0","ind1","rl0","rl1","rangeAttr","minallowed","maxallowed","rng","axrev","minL","maxL","_max","_min","nullRange0","nullRange1","linCenter","inc","usePrivateRange","isY2","brk","rangebreaksIn","bnds","vDate","brk2","rangebreaksOut","addBreak","isNewBreak","brkj","t0Date","bndDelta","cal","nullOk","autorangeDflt","autorange","categoriesMap","require_axis_autotype","isDateTime","noMultiCategory","multiCategory","moreDates","convertNumeric","linearOK","hasTypeNumber","getIncrement","dats","nums","ai","stri","cats","require_autorange","axIds","getFromId","isLinked","applyAutorangeOptions","getAutoRange","makePadFn","doAutoRange","findExtremes","concatExtremes","newRange","getPadMin","getPadMax","extremes","minArray","maxArray","minmin","maxmax","axReverse","rangeMode","toZero","nonNegative","axLen","minSpan","mbest","minpt","maxpt","minbest","maxbest","dp","calcBreaksLength","maximumPad","prev","maxPad","rangeEnd","lBreaks","extrappad","anchorAxis","padInsideLabelsOnAnchorAxis","TEXTPAD","cosA","sinA","tickLabels","thisLabel","noMatch","_concat","collapseMinArray","collapseMaxArray","extremes2","lenRatio","presetRange","axIn","edits","axeRangeOpts","extrapad","tozero","hasArrayOption","vpadLinearized","dmin","dmax","ppadiplus","ppadiminus","vmin","vmax","makePadAccessor","ppadplus","ppadminus","vpadplus","vpadminus","collapseOpts","addItem","goodNumber","iMax","newPad","collapseArray","atLeastAsExtreme","includeThis","clipAtZero","applyAutorangeMinOptions","autorangeoptions","hasValidMinAndMax","applyAutorangeMaxOptions","include","lMin","lMax","require_axes","Titles","axAttrs","ONEMAXYEAR","ONEAVGYEAR","ONEMINYEAR","ONEMAXQUARTER","ONEAVGQUARTER","ONEMINQUARTER","ONEMAXMONTH","ONEAVGMONTH","ONEMINMONTH","HALFDAY","ONEMILLI","ONEMICROSEC","MINUS_SIGN","ZERO_PATH","GRID_PATH","MINORGRID_PATH","TICK_PATH","TICK_TEXT","MARGIN_MAPPING","alignmentConstants","MID_SHIFT","CAP_SHIFT","axes","autoType","idSort","epsilon","expandRange","extraOption","axlist","refAttr","attrDef","axRef","cleanPos","axRefType","_redrawOneComp","methodName","stashName","shortCircuit","getDataConversions","targetArray","d2cTarget","toString","toNum","newDiff","newFirst","allow","overwrite","hasOneAxisChanged","isNew","hasChanged","autorange2","allSpikesEnabled","nbins","is2d","dataMin","dataMax","dummyAx","size0","distinctData","msexp","minSize","finalSize","binStart","binEnd","bincount","autoShiftNumericBins","autoShiftMonthBins","edgecount","midcount","intcount","nearEdge","binshift","stats","threshold","numMonths","nextBinStart","mockAx","hasMajor","mockMinorRange","tick2","numericMajor","numericMinor","majorNum","minorNum","isMultiple","isClose","bigger","smaller","nt","minPx","adjustPeriodDelta","autoTickRound","nMonths","definedDelta","mDate","isMDate","tickformat","noDtick","positionPeriodTicks","tickVals","actualDelta","periodLength","inBetween","endPeriod","nAll","ticklabelstep","isPeriod","isReversed","ticklabelIndex","minRange","maxRange","maxTicks","ticksOut","minorTicks","minorTickVals","allTicklabelVals","hasMinor","major","arrayTicks","syncTicks","exRng","startTick","endTick","numDtick","isDLog","prevX","majorId","_dTick","moveOutsideBreak","periodCompatibleWithTickformat","allTickVals","majorTickIndices","majorIdx","nextLabelIdx","minorIdx","canOverlap","majorValues","found","prevL","isAngular","lastVisibleHead","hideLabel","setTickLabel","tickVal","_minor","_value","filterRangeBreaks","baseAxis","majorOnly","tickMin","tickMax","tickVal2l","roundBase10","roundBase24","roundBase60","roundDays","roundLog1","roundLog2","roundAngles","roundDTick","roughDTick","roundingSet","getBase","roughX2","olddtick","tick0ms","tick0str","tick0len","tick1len","maxend","rangeexp","minexponent","isSIFormat","beyondSI","axSign","tType","dtSigned","tickset","r2l","sRound","tmin","dtNum","mult","newDTick","hover","noSuffixPrefix","tickTextObj","arrayMode","extraPrecision","inbounds","isHidden","showAttr","firstOrLast","hideexp","formatDate","formatLog","formatCategory","formatMultiCategory","formatAngle","formatLinear","hoverformat","val2","logOffScale","tf","headStr","splitIndex","isInside","insideTicklabelposition","dtChar0","numFormat","absP","exponentFormat","firstChar","tt","tt2","num","num2frac","isNeg","almostEq","findGCD","findPrecision","gcd","SIPREFIXES","fmtoverride","tickRound","signedExponent","convertToMs","compareLogTicks","leftPriority","rightPriority","isProperStop","convert","convertFn","leftDtick","rightDtick","isProperLogStop","isLeftDtickNull","isRightDtickNull","isDtickInRangeLeft","isDtickInRangeRight","tickstop","stopi","subplotObj","allSubplots","aParts","bParts","axMatch","subplotsWithAx","fullWidth","fullHeight","xaList","yaList","clipList","axClips","fullAxList","overlayingShiftedAx","overlayingIndex","axShifts","axDone","incrementShift","counterLetter","mainPlotinfo","selfPush","setShiftVal","mainAxLayer","mainLinePosition","mainLinePositionShift","mainMirrorPosition","axInfo","llbboxes","getLabelLevelBbox","calcLabelLevelBbox","transTickFn","transTickLabelFn","valsClipped","insideTicks","outsideTicks","boundaryVals","getBoundaryVals","gridVals","dividerVals","getDividerVals","finishedGrids","counterAxis","mainCounterID","gridPath","tickPath","majorTickSigns","minorTickSigns","majorTickPath","minorTickPath","mirrorMajorTickPath","mirrorMinorTickPath","fullMajorTickPath","fullMinorTickPath","dividerLookup","tickSubplots","linepositions","spTickPath","bboxKey","getSecondaryLabelVals","drawDividers","hasRangeSlider","sMirror","outsideTickLen","llbbox","push","mirrorPush","rangeSliderPush","axDepth","titleDepth","approxTitleDepth","domainIndices","rExtra","lExtra","bExtra","tExtra","filterPush","axAutoMarginID","axMirrorAutoMarginID","rangeSliderAutoMarginID","automargin","keepMargin","nextKey","_push","bndIndex","xb","current","selectTickLabel","dummyCalc","sideOpposite","main","uv","getTickLabelUV","labelsInside","labelsOutside","standoffSign","getPosX","isTop","isLeft","isRight","isBottom","isAligned","sgn","insideTickLabels","labelsOverTicks","labelStandoff","labelShift","ff","flipIt","xQ","tickangle","endSide","ang","rA","tickDataFn","hideCounterAxisInsideTickLabels","minorVals","majorVals","isArrayMode","wMinor","majorLayer","minorLayer","grid","show","zl","labelFns","prevAngle","labelsReady","newPromise","positionLabels","nLines","lineHeight","anchorHeight","mjWidth","mjShift","ticklabeloverflow","hideOverflow","p02","p12","visibleLabelMin","visibleLabelMax","adjust","anchorAx2","partialOpts","anchoredAxes","isPeriodLabel","allLabelsReady","autoangle","fixLabelOverlaps","maxFontSize","lbbArray","maxLines","preventOverlapWithTick","vLen","adjacent","opposite","hypotenuse","maxCos","autoTickAnglesRadians","degrees","angleRadians","currentMax","nextAngle","newAngle","gap","xbnd","lbb","computeTickLabelBoundingBoxes","labelsMaxW","labelsMaxH","BBs","otherIndex","anchorAxRange","_tempNewRange","q0","q1","dir","dist","done","dividers","extraLines","titleStandoff","offsetBase","translation","clipEnds","anyCounterAxLineAtZero","hasBarsOrFill","mainCounterAxis","zeroPosition","lineNearZero","closeEnough","pos2","linePositions","counterLetterAxes","counterAxis2","gTick","mj","axGroups","makeAxisGroups","swapAxisGroup","groupsi","group0","groupj","mergeAxisGroups","intoSet","fromSet","xIds","yIds","xFullAxes","yFullAxes","allAxKeys","noSwapAttrs","numericTypes","keyi","xVal","yVal","allEqual","coerceLinearX","coerceLinearY","xVali","yVali","swapAxisAttrs","ann","dfltTitle","shiftVal","normalize","overlay","shiftValAdj","period","require_autorange_options_defaults","require_range_defaults","handleAutorangeOptionsDefaults","axTemplate","insiderange","shouldAutorange","require_mouse_event_offset","rootPosition","mouseEventOffset","getBoundingClientOffset","require_has_passive_events","detect","supported","require_align","vc","require_cursor","cursorset","xanchor","yanchor","require_unhover","throttle","hoverConstants","unhover","evt","oldhoverdata","require_dragelement","mouseOffset","supportsPassive","dragElement","numClicks","doubleClickDelay","startX","startY","newMouseDownTime","cursor","dragCover","initialEvent","initialTarget","rightClick","onStart","_clampFn","minDrag","clampFn","pointerOffset","coverSlip","onDone","onMove","dxdy","e2","cover","require_setcursor","csr","require_override_cursor","setCursor","STASHATTR","NO_CURSOR","savedCursor","classes","require_attributes9","require_helpers3","legendLayout","require_defaults3","plotsAttrs","basePlotLayoutAttributes","groupDefaults","legendId","itemFont","traceCoerce","grouptitlefont","legendTraceCount","legendReallyHasATrace","defaultOrder","shapesWithLegend","allLegendItems","isShape","showLegend","isHorizontal","titleText","allLegendsData","shapes","mockTrace","legends","require_handle_click","SHOWISOLATETIP","itemClick","itemDoubleClick","groupClick","toggleGroup","hiddenSlices","legendItem","legendgroup","kcont","dataUpdate","dataIndices","carrs","carrIdx","insertDataUpdate","attrIndex","valueArray","updatedShapes","shapesUpdated","insertShapesUpdate","shapeIndex","setVisibility","visibility","fullInput2","isShape2","nextVisibility2","thisLegend","fullInput","thisLabelIndex","unhideList","dLabel","hasLegendgroup","traceIndicesInGroup","tracei","nextVisibility","isClicked","isInGroup","notInLegend","otherState","_item","isIsolated","updateKeys","require_constants3","require_get_legend_data","hasMultipleLegends","inHover","grouped","lgroupToTraces","lgroups","hasOneNonBlankGroup","slicesShown","lgroupi","maxNameLength","addOneItem","legendGroup","uniqueGroup","lid","lgroup","labelj","shouldCollapse","legendData","groupMinRank","rank","orderFn1","orderFn2","firstItemTrace","groupTitle","gt","hasPieLike","require_helpers4","vRounded","rotation","require_fill_one","require_style_one","castOption","fillOne","require_style","stylePie","pieCastOption","CST_MARKER_SIZE","CST_LINE_WIDTH","CST_MARKER_LINE_WIDTH","MAX_LINE_WIDTH","MAX_MARKER_LINE_WIDTH","legend","constantItemSizing","itemWidth","centerPos","centerTransform","boundLineWidth","mlw","cst","traceGroup","layers","indentation","valign","markerOffsetY","markerOffsetX","styleSpatial","styleWaterfalls","styleFunnels","styleBars","styleBoxes","styleFunnelareas","stylePies","styleLines","stylePoints","styleCandles","styleOHLC","styleGuide","getStyleGuide","showFill","showLine","showGradientLine","showGradientFill","anyFill","anyLine","dMod","tMod","reversescale","fillStyle","getGradientDirection","lineGradient","pathStart","this3","showMarker","boundVal","attrIn","arrayToValFn","valToBound","pickFirst","dEdit","tEdit","ptgroup","isWaterfall","styleBarLike","ptsData","dd","lThis","pathStr","isVisible","barpath","dimAttr","stylePieLike","d0Mod","useGradient","fillGradient","isRadial","contours","coloring","require_draw","FROM_TL","FROM_BR","getLegendData","MAIN_TITLE","LEGEND_PATTERN","drawOne","newLegends","oldLegends","legendObj","horizontalAlignTitle","bw","titleOffset","textNode","getId","clipId","shapeLegend","clipPath","scrollBox","textLayout","scrollBar","drawTexts","setupTraceToggle","computeLegendDimensions","getXanchor","getYanchor","expMargin","expandMargin","lx0","ly0","scrollBarHeight","scrollBarYMax","scrollBoxYMax","scrollRatio","scrollBoxY","scrollHandler","eventY0","eventY1","scrollBoxY0","getScrollBarDragY","scrollBoxY02","eventY02","eventY12","getNaturalDragY","scrollBarDrag","scrollBoxTouchDrag","scrollBoxY2","scrollBarHeight2","scrollRatio2","xf","yf","newY","clickedTrace","clickOrDoubleClick","getTraceWidth","textGap","legendWidth","traceLegendWidth","evtData","clickVal","dblClickVal","isPieLike","isEditable","textEl","ensureLength","maxLength","targetLength","traceToggle","aTitle","computeTextDimensions","mathjaxNode","mathjaxBB","textLines","getTitleSize","isGrouped","isFraction","bw2","itemGap","endPad","isBelowPlotArea","isAbovePlotArea","traceGroupGap","legendGroupWidths","toggleRectWidth","titleSize","isLeftOfPlotArea","isRightOfPlotArea","isBeyondPlotAreaY","hw","maxItemWidth","combinedItemWidth","maxRowWidth","maxGroupHeightInRow","groupOffsetX","groupOffsetY","maxWidthInGroup","offsetY2","nTraces","oneRowLegend","maxItemHeightInRow","offsetX","offsetY","rowWidth","traceWidth","sideY","sideX","possibleReservedMargins","require_hover","strRotate","overrideCursor","Axes","zindexSeparator","legendSupplyDefaults","legendDraw","YANGLE","YA_RADIANS","YFACTOR","YSHIFTX","YSHIFTY","HOVERARROWSIZE","HOVERTEXTPAD","multipleHoverPoints","cartesianScatterPoints","distanceSort","noHoverEvent","_hover","hoverItems","multiHover","gTop","getTopOffset","gLeft","getLeftOffset","pointsData","hoverItem","_x0","_x1","_y0","_y1","eventData","rotateLabels","hoverText","createHoverText","hoverLabel","tooltipSpacing","lastBottomY","topY","scaleX","scaleY","alignHoverText","spId","hoversubplots","hovermodeHasX","hovermodeHasY","firstXaxis","firstYaxis","subplotsLength","subplotsWith","overlayedSubplots","xaArray","yaArray","supportsCompare","_subplot","hoverdistance","spikedistance","hoverData","searchData","xvalArray","yvalArray","itemnum","curvenum","subploti","_mode","xval","yval","closedataPreviousLength","spikePoints","hasOneHorizontalTrace","zorderedCalcdata","aZorder","bZorder","hasUserCalledHover","xpx","ypx","dbb","findHoverPoints","customXVal","customYVal","newPoints","newPoint","newPointNum","cleanPoint","closestPoints","tmpPoint","closestVPoints","closestVPt","fillSpikePoint","closestHPoints","closestHPt","selectClosestPoint","spikedistance2","spikeOnWinning2","resultPoint","minDistance","thisSpikeDistance","spikelineOpts","newspikepoints","sortHoverData","hoverDataInSubplot","hoverDataOutSubplot","orderRangePoints","spikeOnWinning","tmpHPointData","tmpHPoint","tmpVPointData","tmpVPoint","spikesChanged","createSpikelines","winningPoint","initLen","winX","getCoord","winY","finalPoints","newHd","hoverDataKey","oldId","oldHd","newhoverdata","ht","bgColor","hoverLabels","hoverAvoidOverlaps","hasClickToShow","hoverChanged","EXTRA_STRING_REGEX","outerContainer","commonLabelOpts","c0","axLabel","outerContainerBB","getBoundingClientRect","outerTop","outerWidth","outerHeight","showCommonLabel","allHaveZ","traceHoverinfo","commonLabel","commonLabelRect","lpath","ltext","commonBgColor","commonStroke","contrastColor","commonLabelOptsFont","commonLabelFont","tbb2","lx2","ly2","topsign","halfWidth","tooltipMidX","leftsign","halfHeight","lty","ltx","dummyBB","textClip","groupedHoverData","hoverlabel","mockLayoutIn","mockLayoutOut","mockLegend","texts","getHoverLabelText","legendContainer","tbb","tWidth","tHeight","avgX","avgY","pointWon","lyBottom","lyTop","lxRight","lxLeft","xOffset","yOffset","dColor","color0","numsColor","nameColor","texts2","text2","tx2","tx2width","tx2height","t2bb","hty","tbbWidth","tbbHeight","txTotalWidth","anchorStartOK","anchorEndOK","txHalfWidth","overflowR","overflowL","plainText","commonLabelBoundingBox","axKey","crossAxKey","nummoves","nLabels","pointgroups","axisLabelMinX","axisLabelMaxX","axisLabelMinY","axisLabelMaxY","pX","pY","crossAx","axIsX","pmin","pmax","getHoverLabelOffsets","horzSign","labelMin","labelMax","endX","donepositioning","topOverlap","bottomOverlap","pti","sumdp","constrainGroup","grp2","minPt","maxPt","deleteCount","g0","g1","grp","hoverPt","getTextShiftX","alignShift","textShiftX","text2ShiftX","isMiddle","shiftX","posX","posY","textAlign","pass","getVal","xeText","yeText","infomode","showY","showX","hLinePoint","hLinePointX","hLinePointY","ySnap","dfltHLineColor","yMode","yThickness","yColor","xEdge","xBase","xEndSpike","xAcross0","xAcross1","vLinePoint","vLinePointX","vLinePointY","xSnap","dfltVLineColor","xMode","xThickness","xColor","yEdge","yBase","yEndSpike","yAcross0","yAcross1","oldPt","newPt","oldspikepoints","periodalignment","Ax","Ay","Bx","By","require_hoverlabel_defaults","isUnifiedHover","hasLegend","inheritFontAttr","require_layout_global_defaults","handleHoverLabelDefaults","require_defaults4","require_hovermode_defaults","require_layout_defaults2","handleHoverModeDefaults","hoverMode","dragMode","hasMapbox","hasMap","hasGeo","require_calc2","makeCoerceHoverInfo","trace2","fillFn","paste","require_click","annotationsDone","emitClick","require_fx","hoverModule","castHoverOption","castHoverinfo","loneUnhover","containerOrSelection","_coerce","require_helpers5","dragmode","require_clear_gl_canvases","require_ploticon","require_constants4","CIRCLE_SIDES","require_helpers6","p2r","r2p","axValue","getTransform","require_helpers7","SQRT2","cartesianHelpers","iC","iQS","nI","nJ","nK","realK","isActiveShape","polys","newPoly","initX","initY","recStart","newPos","cenX","cenY","xPixelSized","yPixelSized","noOffset","_x","_y","e01","e32","e03","e12","isEllipse","xIsDate","yIsDate","require_newshapes","dragHelpers","drawMode","openMode","i000","i090","i180","i270","cos45","sin45","handleOutline","readPaths","writePaths","ellipseOver","fixDatesForPaths","newShapes","outlines","dragOptions","newShape","createShapeObj","editHelpers","allShapes","beforeEdit","afterEdit","newStyle","xPaper","yPaper","isOpenMode","xA","xB","xC","xD","yA","yB","yC","yD","xDateOrLog","yDateOrLog","require_newselections","selectMode","isActiveSelection","selections","newSelection","allSelections","require_constants5","require_helpers8","convertToPx","convertToDate","paramsToUse","isRaw","extractedCoordinates","relevantParamIdx","params","refType","dataToPixel","d2r","shiftPixels","getPixelShift","pixelToData","r2d","strokeWidth","strokeWidthIsOdd","posValAsInt","hasPlotinfo","xRefType","yRefType","x2r","x2p","y2r","y2p","xShiftStart","xShiftEnd","yShiftStart","yShiftEnd","convertPath","xAnchorPos","yAnchorPos","rightPt","topPt","pathIn","xSizemode","ySizemode","xAnchor","yAnchor","paramNumber","segmentType","xParams","yParams","nParams","paramString","param","require_display_labels","getPathString","shapeGroup","templateValues","_xa","_ya","labelGroupAttrs","labelTextAttrs","labelGroup","labelText","shapex0","shapex1","shapey0","shapey1","textangle","calcTextAngle","textBB","textPos","calcTextPosition","textx","texty","shapeOptions","actualTextAngle","textAngle","textPadding","shapeType","textAngleRad","paddingX","paddingY","paddingConstantsX","paddingConstantsY","paddingDirection","paddingDirectionX","paddingDirectionY","shiftFraction","baselineAdjust","xshift","yshift","require_display_outlines","pointsOnRectangle","pointsOnEllipse","newSelections","drawLabel","displayOutlines","nCalls","updateObject","isDrawMode","isSelectMode","vertexDragOptions","groupDragOptions","indexI","indexJ","copyPolygons","recordPositions","addVertexControllers","addGroupControllers","startDragVertex","moveVertexController","_dx","_dy","nextPoint","getNextPoint","endDragVertexController","removeVertex","newPolygon","clickVertexController","onRect","onEllipse","rectSelection","moveGroup","moveGroupController","startDragGroupController","endDragGroupController","clickGroupController","eraseActiveSelection","polygonsOut","polygonsIn","nextJ","nextX","nextY","erasedSelection","require_draw2","arrayEditor","eraseActiveShape","shapelayer","shouldSkipEdits","couldHaveActiveShape","drawShape","mainPlot","shapeLayer","lineDash","isOpen","setClipPath","setupDragElement","activateShape","shapePath","clipAxes","MINWIDTH","MINHEIGHT","isLine","isPath","optN","optS","optW","optE","shiftXStart","shiftXEnd","shiftYStart","shiftYEnd","p2x","p2y","sensoryElement","obtainSensoryElement","startDrag","endDrag","abortDrag","updateDragMode","createLineDragHandles","minSensoryWidth","sensoryWidth","circleStyle","circleRadius","dragBBox","renderVisualCues","deactivateClipPathTemporarily","moveShape","resizeShape","removeVisualCues","noOp","moveX","moveY","movePath","newX0","newY0","newX1","newY1","hasN","hasS","hasW","hasE","newN","newS","newW","newE","shapeLayer2","shapeOptions2","renderAnchor","isNotPath","visualCues","crossPath","vBarPath","hBarPath","shapePath2","gd2","xa2","ya2","deactivateShape","require_buttons","Icons","modeBarButtons","toImageButtonOptions","filename","handleCartesian","button","mag","axName","rangeNow","rangeNew","handleDrag3d","sceneIds","val2d","handleCamera3d","resetLastSave","resetDefault","sceneId","camera","aspectratio","aspectmode","didUpdate","handleHover3d","getNextHover3d","currentSpikes","sceneLayout","hovermodeAStr","spikeAStr","handleGeo","toggleHover","geoIds","geoLayout","newScale","resetView","getNextHover","newHover","aObj","viewInitial","setSpikelineVisibility","areSpikesOn","handleMapboxZoom","handleMapZoom","_handleMapZoom","subplotIds","scalar","viewKeys","require_constants6","buttonList","DRAW_MODES","backButtons","foreButtons","addToForeButtons","_cat","require_attributes10","require_defaults5","require_modebar","version","Parser","ModeBar","proto","graphInfo","buttons","modeBarId","groupSelector","needsNewButtons","needsNewLogo","needsNewLocale","logoGroup","_this","buttonGroup","buttonConfig","buttonName","icon","thisIcon","iconHeight","svgNS","svgDoc","buttonClicked","dataAttrClicked","thisval","dataAttr","isToggleButton","button3","updateButtonStyle","button2","isActive2","isActive","currentButtons","jsVersion","createModeBar","modeBar","require_manage","scatterSubTypes","extendDeep","customButtons","buttonGroups","fillCustomButton","getButtonGroups","layoutAdd","layoutRemove","buttonsToAdd","buttonsToRemove","hasGL3D","hasPie","hasFunnelarea","hasTernary","hasPolar","hasSmith","hasSankey","allAxesFixed","areAllAxesFixed","hasUnifiedHoverLabel","addGroup","newGroup","commonGroup","zoomGroup","hoverGroup","resetGroup","dragModeGroup","hasNoHover","isSelectable","enabledHoverGroup","enableHover","newList","appendButtonsToGroups","selectable","originalModeBarButtons","require_modebar2","require_scale_zoom","FROM_BL","centerFraction","rangeLinear","require_constraints","id2name","scaleZoom","setConvert","ALMOST_EQUAL","axHasImage","constraintGroups","axOut","handleOneAxDefaults","stashAttr","axName2","matchAttrs","hasRange","hasDayOfWeekBreaks","setAttrVal","baseAx","hasImage","splomStash","thisID","linkableAxes","axi","thisGroup","getConstraintGroup","linkableAxesNoLoops","canLink","matches","scaleanchor","scaleanchorDflt","updateConstraintGroups","matchedAx","matchRatio","scaleratio","thatID","groupi","keyj","thisGroupIndex","thisGroupKeys","baseScale","multiplyScales","aPrefix","bPrefix","aLen","bLen","finalRatios","yRatio","axisID","normScale","minScale","maxScale","matchScale","normScales","hasAnyDomainConstraint","inputDomain","domainShrunk","rangeShrunk","rangeCenter","rangeMin","rangeMax","halfRange","outerMin","outerMax","updateDomain","domainExpand","isConstrained","require_subroutines","clearGlCanvases","axisConstraints","enforceAxisConstraints","cleanAxisConstraints","SVG_TEXT_ANCHOR_START","SVG_TEXT_ANCHOR_MIDDLE","SVG_TEXT_ANCHOR_END","lsInner","overlappingDomain","xDomain","yDomain","domains","existingX","existingY","getLinePosition","counterAx2","lwHalf","lowerBackgroundIDs","backgroundIds","lowerDomains","noNeedForBg","plotgroup","pgNode","plotgroupBg","lowerBackgrounds","subplot2","plotClip","plotClipId","layerClipId","xLinesXLeft","xLinesXRight","xLinesYBottom","xLinesYTop","leftYLineWidth","rightYLineWidth","yLinesYBottom","yLinesYTop","yLinesXLeft","yLinesXRight","connectYBottom","connectYTop","extraSubplot","xLinePath","xLinePathFree","yLinePath","yLinePathFree","mainPath","pathFn","pathFnFree","xPath","shouldShowLinesOrTicks","findCounterAxisLineWidth","yPath","shouldShowLineThisSide","sideIndex","textAnchor","getMainTitleTextAnchor","getMainTitleDy","getMainTitleY","getMainTitleX","titleObj","titleHeight","needsMarginPush","applyTitleAutoMargin","getMainTitleDyAdj","newDy","subtitleObj","titleBB","titleBottom","isOutsideContainer","yPosTop","yPosRel","containerPushVal","titleY","titleYanchor","curMargin","titleID","reservedPush","hPadShift","vPadShift","editStyleCalls","arraysToCalcdata","editStyle","edit","updateFx","cartesianIds","autoRangeDone","matchGroup","require_draw3","activateLastSelection","selectionLayer","couldHaveActiveSelection","drawSelection","allPaths","sensory","forePath","backPath","activateSelection","selectionPath","selectionOptions","deactivateSelection","require_build_log","BuildLog","my","nextSegmentId","curVert","seg1","seg2","seg","primary","above","segs","pt1","pt2","index1","require_epsilon","Epsilon","eps","Cx","Cy","d_py_ly","d_rx_lx","d_px_lx","d_ry_ly","dot","sqlen","pt3","dx2","dy2","adx","ady","bdx","bdy","axb","region","last_x","last_y","inside","curr_x","curr_y","require_linked_list","LinkedList","check","here","require_intersecter","Intersecter","selfIntersection","buildLog","segmentNew","segmentCopy","event_root","eventCompare","p1_isStart","p1_1","p1_2","p2_isStart","p2_1","p2_2","comp","eventAdd","other_pt","eventAddSegmentStart","ev_start","eventAddSegmentEnd","ev_end","eventAddSegment","eventUpdateEnd","eventDivide","calculate","primaryPolyInverted","secondaryPolyInverted","status_root","statusCompare","ev1","ev2","a2","statusFindSurrounding","checkIntersection","a1_equ_b1","a2_equ_b2","a1_between","a2_between","checkBothIntersections2","eve2","surrounding","eve","toggle","st","forward","inverted","segments1","inverted1","segments2","inverted2","require_segment_chainer","SegmentChainer","chains","regions","first_match","second_match","next_match","setMatch","matches_head","matches_pt1","addToHead","grow","grow2","oppo","oppo2","reverseChain","appendChain","chain1","chain2","tail3","tail22","head3","head22","F","reverseF","require_segment_selector","SegmentSelector","require_geojson","GeoJSON","PolyBool","geojson","GeoPoly","coords","LineString","ls","reg","out2","poly","regionInsideRegion","region2","roots","addChild","forceWinding","clockwise","winding","isclockwise","geopolys","addExterior","poly2","getInterior","require_polybooljs","i3","combined","poly1","operate","seg3","require_nested","vs","xj","yj","intersect","require_polygon","ptsIn","xmin","xmax","ymin","ymax","isRect","rectFirstEdgeTest","rectContains","omitFirstEdge","contains","crossings","xmini","ycross","degenerate","lastPt","startPt","segmentSquared","segmentLen","unitPerp","partParallel","ptsFiltered","doneRawIndex","doneFilteredIndex","addPt","prevFilterLen","iLast","require_constants7","require_select","polybool","pointInPolygon","dashStyle","Fx","makeEventData","freeMode","rectMode","shapeHelpers","shapeConstants","newShapeHelpers","handleEllipse","ascending","libPolygon","redrawReglTraces","MINSELECT","filteredPolygon","polygonTester","hasSubplot","prepSelect","isCartesian","isFreeMode","isRectMode","isLineOrEllipse","immediateSelect","path0","xAxis","yAxis","pw","ph","subtract","filterPoly","selectionTesters","mergedPolygons","currentPolygon","searchInfo","coerceSelectionsCache","fillC","strokeC","corners","throttleID","searchTraces","determineSearchTraces","xRef","yRef","deselectSubplot","selectionErased","fillRangeItems","getFillRangeItems","mergePolygons","multiTester","convertPoly","_res","reselect","extraPoints","castMultiPolygon","_doSelect","emitSelecting","evt2","clickmode","updateSelectedState","clearSelectionsCache","emitDeselect","clickedXaxis","clickedYaxis","subSelections","selectOnClick","emitSelected","xAxes","yAxes","polygonOutlines","sendEvents","currentSelectionDef","traceSelection","thisTracesSelection","pointOrBinSelected","isHoverDataSet","clickedPtInfo","extractClickedPtInfo","isBinnedTrace","isOnlyThisBinSelected","isOnlyOnePointSelected","isPointOrBinSelected","newPointSelectionDef","allSelectionDefs","fillSelectionItem","isPointSelectionDef","newPointNumTester","pointSelectionDef","idxWantedTrace","idxActualTrace","testers","contained","selectingOnSameSubplot","hasModifierKey","hasActiveShape","hasActiveSelection","getAxId","xAxisIds","yAxisIds","createSearchInfo","sankeyInfo","module2","hoverDatum","ptNum","ptNums","ptNumsSet","ptNumToTest","tracesWithSelectedPts","isSameTrace","fullInputTrace","pointIndex","updateReglSelectedState","hasRegl","allPolygons","getSubtract","thisSelection","hadSearchTraces","allSearchTraces","layoutPolygons","getLayoutPolygons","outlinePolys","draftPolygons","epmtySplomSelectionBatch","seenSplom","yAt","_xRef","_yRef","_selectionTesters","addTester","_searchTraces","_xA","_yA","activePolygons","makeFillRangeItems","deselect","subplotSelected","splomScenes","onlyActiveOnes","multiPolygons","allX","allY","previousPolygons","previousPolygon","computeRectAndRanges","allAxes","lassoPoints","require_arrow_paths","require_axis_placeable_objects","axisname","require_attributes11","ARROWPATHS","cartesianConstants","require_constants8","require_fillcolor_attribute","hasFillgradient","require_attributes12","texttemplateAttrs","hovertemplateAttrs","makeFillcolorAttr","axisPeriod","axisPeriod0","axisPeriodAlignment","require_attributes13","annAttrs","scatterLineAttrs","require_defaults6","handleSelectionDefaults","selectionIn","selectionOut","dfltType","selectionType","noPath","axLetters","gdMock","pos2r","r2pos","attr0","attr1","in0","in1","require_defaults7","newselectionLineWidth","require_include_components","containerArrayName","idRegex","cartesianList","itemi","hasXref","hasYref","newAxis","require_selections","drawModule","require_dragbox","selectingOrDrawing","MINDRAG","MINZOOM","SHOWZOOMOUTTIP","makeDragBox","ew","zoomlayer","isMainDrag","singleEnd","xa0","ya0","xaHash","yaHash","xActive","yActive","allFixedRanges","hasScatterGl","hasSplom","hasSVG","updates","recomputeAxisLists","overlays","hashValues","isDirectionActive","calcLinks","spConstrained","getDragCursor","dragger","makeRectDragger","dragModePrev","dragModeNow","clickFn","clearAndResetSelect","zoomMove","zoomDone","zoomPrep","plotDrag","dragTail","dragDataNow","dragModeNow2","updateSubplots","removeZoombox","doubleClick","attrStr","getEndText","hAlign","vAlign","box","lum","dimmed","zoomMode","zb","zoomDragged","makeZoombox","makeCorners","noZoom","xyCorners","xCorners","yCorners","updateZoombox","computeZoomUpdates","zoomAxRanges","updateMatchedAxRange","showDoubleClickNotifier","scrollViewBox","redrawTimer","REDRAWDELAY","mainplot","zoomWheel","wheelDelta","gbb","xfrac","yfrac","zoomWheelOneAxis","zoom2","axRange","doZoom","ticksAndAnnotations","attachWheelEventHandler","spDx","spDy","dragAxList","dz","otherEnd","movedAx","newLinearizedEnd","dZoom","newEnd","dxySign","dxyFraction","xStart","yStart","xSize","ySize","matchedAxes","constrainedAxes","activeAxIds","pushActiveAxIds","pushActiveAxIdsSynced","axisType","axListI","axListIType","doubleClickConfig","hasRangeInitial","autorangeInitial","viewBox","plotinfos","xrng","yrng","xScaleFactor","yScaleFactor","editX2","editY2","xScaleFactor2","yScaleFactor2","clipDx","clipDy","getShift","getLinkedScaleFactor","scaleAndGetShift","plotDx","plotDy","scaleFactor","from","makeDragger","nodeName","dragClass","dragger3","activeVal","initialVal","dig","r0Fraction","r1Fraction","linkedAxes","r0F","r1F","axRangeLinear0","axRangeLinearSpan","linkedR0Fraction","pix","nsew","transitionZoombox","clen","exclude","isSubplotConstrained","xLinks","yLinks","xID","yID","xLinkID","yLinkID","xExclude","yExclude","xaHashLinked","xaxesLinked","yaHashLinked","yaxesLinked","wheelEventName","require_graph_interact","DRAGGERSIZE","maindrag","hoverLayer","require_container_array_match","rootContainers","regexpContainers","rootPart","arrayStr","require_manage_arrays","sorterAsc","isAddVal","isRemoveVal","_nestedProperty","componentType","supplyComponentDefaults","replotLater","fullVal","componentNums","componentArrayIn","componentArray","componentArrayFull","deletes","firstIndexChange","maxIndex","componentNum","objEdits","objKeys","objVal","adding","indicesToDraw","require_helpers9","AxisIds","cleanId","getFromTrace","axisAttrRegex","emptyContainer","annotationsLen","cleanAxRef","shapesLen","imagesLen","image","cleanTextPosition","containerName","dims","increasingShowlegend","decreasingShowlegend","increasingName","cleanFinanceDir","decreasingName","commonPrefix","dirContainer","dirName","name1","show1","show2","textposition","outer","innerStr","errorY","copyYstyle","hoverInfoParts","traceIndicesOut","undoit","pLength","pLastIsNumber","contPath","ATTR_TAIL_RE","getParent","attrParent","axAttr","sceneName","typeAttr","require_plot_api","Queue","handleRangeDefaults","cartesianLayoutAttributes","initInteractions","manageArrays","subroutines","AX_NAME_PATTERN","numericNameWarningCount","numericNameWarningCountLimit","_doPlot","okToPlot","addFrames2","setPlotContext","graphWasEmpty","makePlotFramework","recalc","drawFrameworkCalls","drawFramework","plotGlPixelRatio","regl","marginPushers","marginPushersAgain","positionAndAutorange","doAutoRangeAndConstraints","drawAxes","insideTickLabelsUpdaterange","plotDone","emitAfterPlot","setPlotConfig","setBackground","opaqueSetBackground","blend","szIn","szOut","newPlot","positivifyIndices","parentLength","positiveIndices","assertIndexArray","arrayName","checkMoveTracesArgs","currentIndices","newIndices","checkAddTracesArgs","assertExtendTracesArgs","update2","maxPoints","maxPointsIsObject","getExtendProperties","updateProps","maxp","spliceTraces","updateArray","undoUpdate","undoPoints","concatTypedArray","arr0","arr1","arr2","extendTraces","newArray","remainder","none","both","numberOfItemsFromInsert","numberOfItemsFromTarget","targetBegin","undo","promise","prependTraces","addTraces","deleteTraces","deletedTrace","moveTraces","movingTraceMap","restyle","_traces","_restyle","addAxRangeSequence","undefinedToNull","makeNP","preGUI","guiEditFlag","fullAttr","storeCurrent","arrayNew","maxLen","objNew","objBoth","_storeDirectGUIEdit","layoutNP","redoit","addToAxlist","axid","autorangeAttr","getFullTrace","doextra","extraparam","preGUI2","allBins","binAttr","arrayBins","vij","contFull","oldVal","finalPart","prefixDot","innerContFull","impliedKey","topOrBottom","thicknorm","lennorm","labelsTo","valuesTo","swapAttrs","defaultOrientation","_relayout","axRangeSupplyDefaultsByPass","rangesAltered","skipTitle","AX_RANGE_RE","AX_AUTORANGE_RE","AX_DOMAIN_RE","arrayEdits","axisAttr","newkey","recordAlteredAxis","pleafPlus2","plen","pend","pleaf","pleafPlus","ptrunk","parentFull","vOld","oppositeAttr","axFull","fullProp","newType","containerArrayMatch","updateValObject","finished","groupAxId","updateAutosize","traceUpdate","restyleSpecs","relayoutSpecs","guiEdit","layoutUIControlPatterns","traceUIControlPatterns","findUIPattern","patternSpecs","spec","getNewRev","revAttr","newRev","getFullTraceIndexFromUid","getTraceIndexFromUid","valsMatch","v1IsObj","v1IsArray","applyUIRevisions","layoutPreGUI","oldRev","preGUIVal","newNP","bothInheritAutorange","newAutorangeIn","newRangeAccepted","pre0","pre1","preAuto","newContainer","newAx","allTracePreGUI","fulli","newTracei","react","configChanged","oldConfig","diffConfig","immutable","diffLayout","newDataRevision","diffData","allNames","emptyCategories","sameTraceLength","getTraceValObject","diffOpts","seenUIDs","getDiffFlags","getLayoutValObject","newDomain","oldDomain","oldInputDomain","oldContainer","outerparts","getValObject","inArray","arrayIndex","valObjectCanBeDataArray","valObject2","tickMode","valType","canBeDataArray","wasArray","nowArray","inputKey","oldValIn","newValIn","arrayEditIndices","extraIndices","newConfig","animate","frameOrGroupNameOrFrameList","animationOpts","trans","getTransitionOpts","getFrameOpts","callbackOnNthTime","discardExistingFrames","queueFrames","frameList2","computedFrame","frameOpts2","transitionOpts2","nextFrame2","beginAnimationLoop","stopAnimationLoop","nextFrame","newFrame","stringName","doFrame","configCounter","setTransitionConfig","frame2","frameList","allFrames","isFrameArray","isSingleFrame","frameOrName","currentFrame","filteredFrameList","addFrames","bigIndex","insertions","_frameHashLocal","lookupName","collisionPresent","ops","revops","frameCount","deleteFrames","purge","calcInverseTransform","newBBox","gd3","otherUids","layerBelow","layerAbove","require_helpers10","json","DOM_URL","blob","binary","fixBinary","buf","require_tosvg","DOUBLEQUOTE_REGEX","DUMMY_SUB","DUMMY_REGEX","htmlEntityDecode","hiddenDiv","replaced","xmlEntityEncode","toppaper","topGroups","topGroup","fw","fs","fv","stroke","require_svgtoimg","svgToImg","Image2","canvas","ctx","img","svgBlob","imgData","errorMsg","require_to_image","plotApi","toSVG","toImage","isImpliedOrValid","fullOpts","imageDataOnly","clonedGd","layoutImage","configImage","redrawFunc","wait","width2","height2","cleanup","urlToImageData","require_validate","errorList","traceSchema","layoutSchema","fillLayoutSchema","objIn","valOut","nestedSchema","getNestedSchema","nestedValType","isInfoArray","isColorscale","isInSchema","valInPart","valOutPart","_nestedSchema","indexList","_p","_index","valInj","valOutj","traceLayoutAttr","code2msgFunc","inBase","convertPathToAttributeString","splitKey","keyMinusId","idMatch","require_filesaver","fileSaver","saveLink","canUseSaveLink","objectUrl","require_download","downloadImage","_gd","require_template_api","figure","traceTemplate","walkStyleKeys","getTraceInfo","traceType2","typeTemplates2","getLayoutInfo","oldTemplate","oldLayoutTemplate","oldTypeTemplates","oldTypeLen","typeLen","mergeTemplates","oldDataTemplate","newTemplate","oldKeys","mergeOne","oldVal2","key3","oldItem","getBaseKey","baseKey2","templateOut","getAttributeInfo","basePath","pathAttr","nextPath","getNextPath","nextBasePath","baseKey","dfltDone","namedIndex","dfltKey","dfltPath","pathInArray","itemPropInArray","dfltProp","templateProp","figureIn","layoutTemplate","layoutPaths","crawlLayoutForContainers","nextPaths","crawlLayoutTemplateForContainers","typeCount","templateCount","crawlForMissingTemplates","hasPlainObject","require_plot_api2","templateApi","require_xy_defaults","handleCalendarDefaults","xlen","require_period_defaults","dateTick0","getPeriod0Dflt","xperiod","yperiod","require_stack_defaults","perStackAttrs","stackOpts","stackGroup","subplotStackOpts","groupOpts","firstTrace","dflts","attrFound","traceHasAttr","isOrientation","require_marker_defaults","colorscaleDefaults","isBubble","defaultMLC","require_line_defaults","lineColorDflt","require_line_shape_defaults","require_text_defaults","require_fillcolor_defaults","averageColors","averageColorI","inheritColorFromMarker","markerLineColor","averageGradientColor","gradientOrientation","gradientColorscale","require_defaults8","handleXYDefaults","handlePeriodDefaults","handleStackDefaults","handleMarkerDefaults","handleLineDefaults","handleLineShapeDefaults","handleTextDefaults","handleFillColorDefaults","coercePattern","stackGroupOpts","defaultMode","dfltHoverOn","errorBarsSupplyDefaults","require_grouping_defaults","getAxisGroup","barmode","posAxId","groupId","alignmentOpts","alignmentgroup","alignmentGroups","alignmentGroupOpts","offsetgroup","offsetGroups","offsetGroupOpts","require_cross_trace_defaults2","handleGroupingDefaults","scattermode","filli","tracej","require_layout_defaults3","groupBarmode","require_align_period","incrementMonth","mPeriod","isStart","isEnd","period0","starts","ends","nEstimated","startTime","endTime","require_colorscale_calc","calcColorscale","require_arrays_to_calcdata","require_calc_selection","require_calc3","alignPeriod","calcSelection","calc","origX","origY","xObj","yObj","serieslen","getStackOpts","interpolateGaps","isV","setFirstScatter","xAttr","yAttr","posAttr","ppad","calcMarkerSize","calcAxisExpansion","hasPeriodX","hasPeriodY","xValid","yValid","pos0","xId","yId","firstScatter","firstScatterGroup","stackOrientation","xOptions","yOptions","sizeref","markerTrans","sizeOut","stackAx","require_sieve","Sieve","distinctVals","width1","positions","bar","oldValue","require_cross_trace_calc","crossTraceCalc","fullTraces","calcTracesHorz","calcTracesVert","setGroupPositions","sa","excluded","included","initBase","setGroupPositionsInOverlayMode","setGroupPositionsInGroupMode","standardizeCornerradius","setGroupPositionsInStackOrRelativeMode","setCornerradius","collectExtents","crValue","crForm","scalendar","d2c","hasBase","sieve","setOffsetAndWidth","sieveBars","normalizeBars","setBaseAndTop","unhideBarsWithinTrace","stackBars","offsetIndex","isOutmostBar","distinctPositions","overlap","barGroupWidth","barWidthPlusGap","barWidth","offsetFromCenter","nOffsetGroups","applyAttributes","setBarCenterAndWidth","updatePositionAxis","calcTrace0","initialPoffset","newPoffset","initialBarwidth","newBarwidth","pLetter","getAxisLetter","poffset","poffsetIsArray","barwidth","barwidthIsArray","calcBar","allowMinDtick","vpad","calcBarOffset","calcBarWidth","sLetter","isScatter","isFunnel","inTraceSieve","sTop","sTiny","sMin","sMax","needsPadding","padded","setHelperValuesForRoundedCorners","sMinByPos","sMaxByPos","extents","roundFactor","anyTraceHasCornerradius","pVal","require_cross_trace_calc2","groupCrossTraceCalc","posj","sumj","norm","groupnorm","valAttr","hasAnyBlanks","allPositions","insertBlank","cdj","arrayPad","ppadRaw","newEntry","prevEntry","getInterp","require_line_points","LOG_CLIP_PLUS","LOG_CLIP_MINUS","constrain","xLog","yLog","xLen","yLen","connectGaps","baseTolerance","minTolerance","clusterStartPt","clusterEndPt","clusterHighPt","clusterLowPt","thisPt","clusterHighFirst","clusterUnitVector","thisVector","clusterRefDist","clusterHighVal","clusterLowVal","clusterMinDeviation","clusterMaxDeviation","thisDeviation","getPt","crossesViewport","xFrac0","yFrac0","xFrac1","yFrac1","norm2","cross","latestXFrac","latestYFrac","getTolerance","nextPt2","xFrac","yFrac","offScreenFraction","ptDist","maxScreensAway","xEdge0","xEdge1","yEdge0","yEdge1","lastXEdge","lastYEdge","lastFarPt","edgePt","getLinearEdgeIntersections","ptCount","ptInt","onlyConstrainedPoint","sameEdge","getHVEdgeIntersections","ptInt1","ptInt2","getABAEdgeIntersections","dim","limit0","limit1","midShift","ptToAlter","getEdgeIntersections","getClosestCorner","updateEdge","xSame","ySame","xSame2","ySame2","updateEdgesForReentry","arrayMarker","intersections","nextPt","trimmed","newSegments","require_link_traces","LINKEDFILLS","cdscatter","prevtrace","groupIndices","needsSort","prevGroupIndex","nextGroupIndex","prevUnstackedGroupIndex","cdscatterSorted","traceA","traceB","prevtraces","require_plot","ensureSingle","linePoints","linkTraces","scatterLayer","join","onComplete","isFullReplot","hasTransition","createFills","plotOne","traceJoin","fills","fillData","fillJoin","cdscatterAll","isStatic","selectMarkers","errorBarGroup","ownFillEl3","tonext","ownFillDir","fillAxisIndex","fillAxisZero","prevRevpath","prevPolygons","prevFillsegments","prevFillElement","thispath","thisrevpath","fullpath","revpath","pathfn","revpathbase","revpathfn","lastSegment","thisPolygons","fillsegments","makeUpdate","pts2","fillsegmentCount","curpoints","isEnter","lineJoin","clearFill","makeSelfPolygons","makePolygonsToPrevious","prevFillsegments2","pt02","pt12","zeropoints","polypoints","reversedPrevFillsegment","visFilter","visFilterWithGaps","gapFilter","keyFunc","getKeyFunc","hideFilter","makePoints","points2","cdscatter2","hasNode","showMarkers","keyFunc2","markerFilter","textFilter","showFilter","isInferZero","styleFns","hasClipOnAxisFalse","clipUrl","yr","mnum","tnum","require_marker_colorbar","require_format_labels","require_style2","styleText","styleOnSelect","require_get_trace_color","subtypes","mlc","require_hover2","getTraceColor","fillText","hoveron","minRad","xPeriod","yPeriod","di2","rad2","kink","dxRaw","dyRaw","xc","yc","sizeVal","xLabelVal","yLabelVal","isHoverPointInFillElement","svgElement","domPoint","svgPoint","getHoverLabelPosition","yPos","xAtYPos","hoverLabelCoords","require_select2","selectionTester","hasOnlyLines","require_attributes14","require_type_defaults","setAutoType","getFirstNonEmptyTrace","calAttr","isBoxWithoutPositionCoords","posLetter","getBoxPosLetter","boxPositions","dimensions","isBox","isCandlestick","require_category_order_defaults","findCategories","axData","isValidArray","orderDefault","require_line_grid_defaults","colorMix","dfltColor","coerce2","gridColorDflt","gridColor","gridWidth","gridDash","showGridLines","minorGridColorDflt","minorGridColor","minorGridWidth","minorGridDash","minorShowGridLines","zeroLineColor","zeroLineWidth","showZeroLine","require_axis_defaults","handleCategoryOrderDefaults","handleLineGridDefaults","letter","ticklabelmode","keepIsMinor","isMultiCategory","ticksonDflt","tickson","showDividers","rangebreaksDefaults","dfltPattern","indexOfDay","dayStrToNum","require_position_defaults","counterAxes","overlayableAxes","overlayingDomain","dfltAnchor","dfltDomain","dfltSide","dfltPosition","dfltShift","dfltAutomargin","autoshift","overlaying","require_layout_defaults4","handleTypeDefaults","handleAxisDefaults","constraints","handlePositionDefaults","name2id","AX_ID_PATTERN","getComponentMethod","appendList","autotypenumbersDflt","ax2traces","xaMayHide","yaMayHide","xaMustDisplay","yaMustDisplay","yaMustNotReverse","yaMayReverse","outerTicks","noGrids","xaName","yaName","positionAxis","xNames","yNames","axNames","plotBgColor","axLayoutIn","axLayoutOut","newAxLayoutOut","getCounterAxes","getOverlayableAxes","axName22","allAxisIds","missingMatchedAxisIdsLookup","missingMatchedAxisIds","addMissingMatchedAxis","matchesIn","unifiedHover","visibleDflt","reverseDflt","defaultOptions","unifiedSpike","spikecolor","spikethickness","spikedash","spikemode","spikesnap","showSpikes","overlayingAxis","overlayingAnchorDomain","overlayingAnchor","defaultOptions2","rangeSliderDefaults","rangeSelectorDefaults","anchoredAxis","fixedRangeDflt","require_transition_axes","unsetSubplotTransform","updateSubplot","progress","ylen","fracDx","fracDy","transitionComplete","transitionInterrupt","raf","easeFn","tInterp","require_cartesian","ensureSingleAndAddDatum","xList","yList","spSVG","spAll","ki","zindices","subplotInfo","idWithZ","cdSubplot","pcd","traceLayerClasses","cdModuleAndOthers","layerData","zoomScaleQueryParts","classBaseName","className2","oldPlots","newPlots","oldSubplotList","oldAxIDs","oldAxId","purgeSubplotLayers","oldSubplotId","removeSubplotExtras","traceZorderGroups","zi","initialSubplotData","makeSubplotData","newSubplotData","subplotLayers","posZ","hasZ","idWithoutZ","makeSubplotLayer","numZ","regulars","mainplotinfo","zStr","xLayer","yLayer","hasOnlyLargeSploms","hasMultipleZ","backLayer","betweenLayer","mainplotgroup","overlayIdsToRemove","overlayInfo","imageRoot","canvases","canvasToImage","imageData","require_scatter","require_draw_arrow_head","strScale","headStyle","startHeadStyle","startScale","doStart","doEnd","backOff","startBackOff","startRot","endRot","hideLine","backOffX","backOffY","startBackOffX","startbackOffY","pathlen","dashArray","start0","dstart","end0","dend","shortening","drawhead","arrowHeadStyle","rot","arrowScale","require_draw4","drawArrowHead","drawRaw","shiftPosition","axa","dAx","optAx","vertical","axDomainRef","gsDim","annClipID","annPosPx","annGroup","annTextGroup","editTextPosition","textEvents","annTextGroupInner","hoverOptions","hoverFont","bBox","bBoxRef","borderwidth","borderpad","borderfull","annTextBG","isSizeConstrained","annTextClip","annText","drawGraphicalElements","anchor3","wholeLink","hasMathjax","anntextBB","annWidth","annHeight","anchor2","annotationIsOffscreen","letters","tailRef","dimAngle","annSizeFromWidth","annSizeFromHeight","annSize","overallShift","posPx","basePx","textPadShift","alignPosition","autoAlignFraction","textShift","posFraction","axRefTypeEqDomain","arrowLength","tailRefType","maxPx","shiftPlus","shiftMinus","xShift","yShift","drawArrow","headX","headY","tailX","tailY","applyTransform","applyTransform2","xLeft","xRight","yTop","yBottom","strokewidth","arrowColor","arrowSide","arrowGroup","arrow","arrowDragHeadX","arrowDragHeadY","arrowLength2","arrowDrag","annx0","anny0","annxy0","xcenter","ycenter","notesBox","baseTextTransform","xUpdate","yUpdate","widthFraction","heightFraction","_text","require_click2","onClick","sets","getToggleSets","toggleSets","onSet","offSet","annotationsOut","annotations","explicitOffSet","hoverLen","anni","showMode","pointj","toggleType","clickData2r","require_common_defaults","annIn","annOut","borderColor","borderOpacity","borderWidth","showArrow","arrowside","arrowhead","arrowsize","globalHoverLabel","hoverBG","hoverBorder","fontDflt","require_defaults9","handleAnnotationCommonDefaults","handleAnnotationDefaults","clickToShow","arrowPosDflt","arrowPosAttr","aaxRef","aDflt","xClick","yClick","require_calc_autorange","annotationList","annAutorange","apos","aref","padplus","padminus","headSize","headPlus","headMinus","startHeadSize","startHeadPlus","startHeadMinus","extremeArrowHead","extremeText","require_convert_coords","toLogRange","doExtra","attrPrefix","currentVal","require_annotations","clickModule","require_attributes15","require_defaults10","sceneLayoutIn","sceneLayoutOut","coercePosition","require_convert","fullSceneLayout","anns","mockAnnAxes","require_project","xformMatrix","project","require_draw5","dataScale","require_annotations3d","includeGL3D","GL3D","attrRegex","require_attributes16","require_defaults11","handleShapeDefaults","dfltLabelYanchor","labelTextPosition","shapeIn","shapeOut","showlegend","xSizeMode","ySizeMode","attrAnchor","sizeMode","dflt0","dflt1","inAnchor","labelTextTemplate","require_defaults12","newshapeLineWidth","require_calc_autorange2","shapeList","shapeBounds","calcXPaddingOptions","calcYPaddingOptions","calcPaddingOptions","isYAxis","axisDirectionReverted","maxValue","minValue","beforePad","afterPad","isCategory","shiftStart","shiftEnd","convertVal","isSizeModeScale","drawnParam","require_shapes","require_attributes17","require_defaults13","imageDefaults","imageIn","imageOut","require_draw6","imageDataAbove","imageDataSubplot","imageDataBelow","anchors","setImage","thisImage","imagePromise","img2","errorHandler","dataURL","xIsDomain","yIsDomain","sizing","xPos","imgDataFunc","imgSort","imagesBelow","imagesAbove","imagesOnSubplot","require_convert_coords2","images","currentPos","currentSize","newSize","require_images","require_constants9","require_attributes18","buttonsAttrs","require_defaults14","buttonAttrs","menuDefaults","menuIn","menuOut","buttonDefaults","buttonIn","buttonOut","require_scrollbox","ScrollBox","translateX","translateY","isDown","isUp","boxW","boxH","boxL","boxR","boxT","boxB","needsHorizontalScrollBar","hbarW","hbarH","hbarL","hbarT","hbar","needsVerticalScrollBar","vbarW","vbarH","vbarL","vbarT","vbar","clipL","clipR","clipT","clipB","onBoxDrag","onBarDrag","translateXMax","translateYMax","require_draw7","menuData","clearAutoMargin","menuOpts2","autoMarginId","menus","headerGroups","keyFunction","gButton","menuOpts","findDimensions","scrollBoxId","removeAllButtons","gHeader","_gButton","setActive","drawHeader","drawButtons","isFolded","buttonOpts","buttonIndex","isSilentUpdate","header","headerOpts","posOpts","positionOverrides","drawItem","setItemPosition","styleOnMouseOver","styleOnMouseOut","buttonData","klass","scrollBoxPosition","styleButtons","drawScrollBox","hideScrollBox","hasHBar","hasVBar","itemOpts","drawItemRect","drawItemText","fakeButtons","wEff","tLines","hEff","paddedWidth","paddedHeight","graphSize","overrideOpts","finalHeight","spanOffset","newMenuIndexAttr","require_updatemenus","require_constants10","require_attributes19","stepsAttrs","require_defaults15","stepAttrs","sliderDefaults","sliderIn","sliderOut","stepDefaults","stepCount","visSteps","currentValueIsVisible","require_draw8","staticPlot","sliderData","makeSliderData","sliders","clearSlider","sliderOpts2","sliderGroups","sliderOpts","gSlider","computeLabelSteps","drawSlider","contOpts","sliderLabels","maxLabelWidth","labelHeight","stepOpts","textableInputLength","availableSpacePerLabel","computedSpacePerLabel","dummyGroup","curValPrefix","drawCurrentValue","curValSize","marginOpts","sliderGroup","drawRail","drawLabelGroup","drawTicks","drawTouchRect","drawGrip","setGripPosition","valueOverride","curVal","grip","attachGripEvents","labelItems","normalizedValueToPosition","handleInput","normalizedPosition","doTransition","quantizedPosition","quantizedIndex","doCallback","previousActive","_step","$gd","getSliderOpts","mouseDownHandler","positionToNormalizedValue","mouseMoveHandler","normalizedPosition2","mouseUpHandler","isMajor","nsteps","computedLength","require_sliders","require_attributes20","colorAttributes","require_oppaxis_attributes","require_constants11","require_helpers11","rangeSlider","rangeSliderData","bottomDepth","require_defaults16","oppAxisAttrs","rangeContainerIn","rangeContainerOut","coerceRange","yName","yAxOut","rangemodeDflt","require_calc_autorange3","listAxes","require_draw9","axisOpts","rangeSliders","oppAxisOpts","oppAxisRangeOpts","axRng","newRng","drl","rsBreaks","_B","range0OppAxis","range1OppAxis","distOppAxis","drawBg","addClipPath","drawRangePlot","drawMasks","drawSlideBox","drawGrabbers","setPixelRange","eventX","slideBox","grabAreaMin","grabAreaMax","mouseMove","mouseUp","clientX","pixelMin","pixelMax","setDataRange","hw2","clampOppAxis","clampHandle","pixelMinOppAxis","pixelMaxOppAxis","borderCorrect","offsetShift","rangePlots","isMainPlot","oppAxisName","mockFigure","filterRangePlotCalcData","maskMin","maskMax","maskMinOppAxis","maskMaxOppAxis","grabberMin","grabberMax","handleFixAttrs","handleDynamicAttrs","handleMin","handleMax","grabAreaFixAttrs","require_rangeslider","require_attributes21","require_constants12","require_defaults17","selectorIn","selectorOut","posDflt","getPosDflt","anchoredList","require_get_update_object","titleCase","axisLayout","buttonLayout","xrange","getXRange","currentRange","utcStep","range0","base2","range1","require_draw10","getUpdateObject","selectors","makeSelectorData","selectorKeyFunc","selectorLayout","drawButtonRect","drawButtonText","reposition","getFillColor","getLabel","require_rangeselector","require_domain","dfltDomains","dfltX","dfltY","column","require_grid","domainAttrs","cartesianIdRegex","gridAttrs","getAxes","gridVal","splomVal","sizeDefaults","gridIn","hasSubplotGrid","hasXaxes","hasYaxes","isSplomGenerated","dfltRows","dfltColumns","gridOut","columns","useDefaultSubplots","rowOrder","dfltGapX","dfltGapY","dfltSideX","dfltSideY","fillGridPositions","dfltGap","dirGap","cellDomain","cellStart","contentDefaults","subplotsOut","axisMap","subplotsIn","rowOut","rowIn","fillGridAxes","axisId","iFinal","axesIn","axesAllowed","fillOneAxis","require_attributes22","require_defaults18","objName","hasErrorBars","symmetric","copyAttr","inheritObj","require_compute_error","dataPt","arrayminus","valMinus","computeErrorValue","makeComputeErrorValue","computeErrorValueMinus","require_calc4","makeComputeError","calcOneAxis","computeError","iIn","calcCoord","errors","shoe","hat","baseExtremes","require_plot2","hasAnimation","sparse","errorbars","errorbar","errorCoords","yerror","yw","xerror","xw","require_style3","require_errorbars","xyAttrs","xyzAttrs","hoverInfo","calcPoint","hoverPoint","require_constants13","require_draw11","handleAxisPositionDefaults","axisLayoutAttrs","cn","colorBars","makeColorBarData","drawColorBar","makeEditable","initOpts","calcOpts","moduleOpts","allowsMultiplotCbs","contName","colorAxOpts","thickness","outlinewidth","xpad","ypad","optsX","optsY","titleSide","zrange","lineColormap","fillColormap","levelsIn","levelsOut","calcLevels","fillLevels","lineLevels","thickPx","thickFrac","lenPx","lenFrac","posW","posH","uPx","xRatio","uFrac","vFrac","vPx","mockColorBarAxis","autoNtick","dtFactor","dtexp","titleCont","titleFontSize","axLayer","titleWidth","titleOpts","dfltTitleOpts","otherClass","drawDummyTitle","drawCbTitle","nlines","drawAxis","titleTrans","mathJaxNode","lineSize","zBounds","fillEl","colorString","tickSign","positionCB","innerThickness","titleWidth2","topSideVertical","rightSideHorizontal","_titleHeight","outerThickness","extraW","numTicks","border","oBb","oTr","iBb","iTr","iRight","oRight","iLeft","oLeft","lFrac","rFrac","tFrac","bFrac","extraThickness","zr0","zr1","fillLevelsIn","cbAxisIn","cbAxisOut","axisOptions","require_colorbar","require_legend","require_locale_en","require_locale_en_us","require_cloneplot","cloneLayoutOverride","tileClass","override","keyIsAxis","types","graphObj","oldData","oldLayout","axesImageOverride","plotTile","require_toimage","clonePlot","require_snapshot","Snapshot","require_core","register","methodNames","require_core2","require_hover3","hoverPoints","maxDistance","yl","closestId","ptx","pty","minDist","calcHover","grad","hoverinfo","fakeCd","pointData2","require_constants14","SYMBOL_SIZE","require_attributes23","DASHES","scatterMarkerAttrs","scatterMarkerLineAttrs","require_helpers12","require_defaults19","require_format_labels2","scatterFormatLabels","require_search_bounds","ge","lt","le","eq","require_clamp","require_pick_by_alias","props","keepRest","toList","occupied","aliases","alias","CACHE","require_parse_rect","pick","parseRect","require_array_bounds","require_defined","require_dtype","require_flatten_vertex_data","flattenVertexData","dstLength","Ctor","require_is_obj","require_math_log2","require_quad","search","getBounds","flatten","isObj","log2","MAX_GROUP_ID","srcPoints","maxDepth","levels","sublevels","levelItems","nextOffset","diam","ids2","levelGroups","sublevel","offset2","lolo","lohi","hilo","hihi","options2","minX","minY","maxX","maxY","nminX","nminY","nmaxX","nmaxY","maxLevel","lod","lox","loy","to","hix","hiy","offsets2","off0","off1","off2","off3","nextLevel","ranges","levelGroupStart","levelGroupEnd","startOffset","endOffset","require_point_cluster","require_abs_svg_path","absolutize","require_cjs","_slicedToArray","sliceIterator","_arr","_n","_d","_e","_i","_s","TAU","mapToEllipse","_ref","cosphi","sinphi","approxUnitArc","ang1","ang2","vectorAngle","ux","uy","vx","vy","getArcCenter","largeArcFlag","sweepFlag","pxp","pyp","rxsq","rysq","pxpsq","pypsq","radicant","centerxp","centeryp","vx1","vy1","vx2","vy2","arcToBezier","_ref2","_ref2$xAxisRotation","xAxisRotation","_ref2$largeArcFlag","_ref2$sweepFlag","curves","lambda","_getArcCenter","_getArcCenter2","_mapToEllipse","_mapToEllipse2","_mapToEllipse3","require_normalize_svg_path","arcToCurve","bezierX","bezierY","quadX","quadY","quadratic","require_is_svg_path","require_shams","sym","symObj","symVal","syms","descriptor","require_shams2","hasSymbols","require_es_errors","require_eval","require_range","require_ref","require_syntax","require_type","require_uri","require_has_symbols","origSymbol","hasSymbolSham","require_has_proto","$Object","require_implementation","ERROR_MESSAGE","toStr","funcType","concatty","slicy","arrLike","joiny","joiner","binder","boundLength","boundArgs","Empty","require_function_bind","implementation","require_hasown","call","$hasOwn","require_get_intrinsic","undefined2","$Error","$EvalError","$RangeError","$ReferenceError","$SyntaxError","$TypeError","$URIError","$Function","getEvalledConstructor","expressionSyntax","$gOPD","throwTypeError","ThrowTypeError","hasProto","getProto","needsEval","TypedArray","INTRINSICS","errorProto","doEval","doEval2","gen","LEGACY_ALIASES","hasOwn","$concat","$spliceApply","$replace","$strSlice","$exec","rePropName","reEscapeChar","stringToPath","quote","subString","getBaseIntrinsic","allowMissing","intrinsicName","intrinsicBaseName","intrinsic","intrinsicRealName","skipFurtherCaching","isOwn","desc","require_es_define_property","GetIntrinsic","$defineProperty","require_gopd","require_define_data_property","gopd","nonEnumerable","nonWritable","nonConfigurable","loose","require_has_property_descriptors","hasPropertyDescriptors","require_set_function_length","define2","hasDescriptors","gOPD","$floor","functionLengthIsConfigurable","functionLengthIsWritable","require_call_bind","setFunctionLength","$apply","$call","$reflectApply","$max","originalFunction","applyBind","require_callBound","callBind","$indexOf","require_is_arguments","hasToStringTag","callBound","$toString","isStandardArguments","isLegacyArguments","supportsStandardArguments","require_is_generator_function","fnToStr","isFnRegex","getGeneratorFunc","GeneratorFunction","generatorFunc","require_is_callable","reflectApply","badArrayLike","isCallableMarker","constructorRegex","isES6ClassFn","fnStr","tryFunctionObject","objectClass","fnClass","genClass","ddaClass","ddaClass2","ddaClass3","isIE68","isDDA","all","strClass","require_for_each","isCallable","hasOwnProperty2","forEachArray","iterator","forEachString","forEachObject","forEach","thisArg","require_available_typed_arrays","possibleNames","require_which_typed_array","availableTypedArrays","$slice","getPrototypeOf","typedArray","superProto","tryTypedArrays","trySlices","tag","require_is_typed_array","toStrTags","anyTrue","require_types","isArgumentsObject","isGeneratorFunction","whichTypedArray","uncurryThis","BigIntSupported","SymbolSupported","ObjectToString","numberValue","stringValue","booleanValue","bigIntValue","symbolValue","checkBoxedPrimitive","prototypeValueOf","isPromise","isArrayBufferView","isDataView","isUint8Array","isUint8ClampedArray","isUint16Array","isUint32Array","isInt8Array","isInt16Array","isInt32Array","isFloat32Array","isFloat64Array","isBigInt64Array","isBigUint64Array","isMapToString","isMap","isSetToString","isSet","isWeakMapToString","isWeakMap","isWeakSetToString","isWeakSet","isArrayBufferToString","isDataViewToString","SharedArrayBufferCopy","isSharedArrayBufferToString","isSharedArrayBuffer","isAsyncFunction","isMapIterator","isSetIterator","isGeneratorObject","isWebAssemblyCompiledModule","isNumberObject","isStringObject","isBooleanObject","isBigIntObject","isSymbolObject","isBoxedPrimitive","isAnyArrayBuffer","require_isBufferBrowser","require_inherits_browser","superCtor","TempCtor","require_util","getOwnPropertyDescriptors","descriptors","formatRegExp","isString","objects","inspect","isNull","isObject","warned","deprecated","debugs","debugEnvRegex","debugEnv","stylizeNoColor","isBoolean","isUndefined","stylizeWithColor","styleType","arrayToHash","recurseTimes","isFunction","primitive","formatPrimitive","visibleKeys","isError","formatError","isRegExp","braces","formatArray","formatProperty","reduceToSingleString","simple","isNumber","cur","isNullOrUndefined","isSymbol","objectToString","isPrimitive","add","kCustomPromisifiedSymbol","promiseResolve","promiseReject","callbackifyOnRejected","reason","newReason","callbackify","callbackified","maybeCb","rej","require_errors","_typeof","_createClass","protoProps","staticProps","_classCallCheck","instance","_inherits","subClass","superClass","_setPrototypeOf","_createSuper","Derived","hasNativeReflectConstruct","_isNativeReflectConstruct","Super","_getPrototypeOf","NewTarget","_possibleConstructorReturn","_assertThisInitialized","codes","assert","util","createErrorType","message","Base","getMessage","arg3","NodeError","_Base","NodeError2","_super","oneOf","expected","thing","startsWith","endsWith","this_len","includes","actual","require_assert","determiner","inspected","_len","_key","require_assertion_error","ownKeys","_objectSpread","_defineProperty","_toPropertyKey","_defineProperties","_toPrimitive","hint","prim","_wrapNativeSuper","Class","_cache","Class2","_isNativeFunction","Wrapper","_construct","Parent","Parent2","args2","_require","_require2","ERR_INVALID_ARG_TYPE","repeat","maxCount","blue","green","white","kReadableOperator","kMaxShortLength","copyError","inspectValue","createErrDiff","operator","other","lastPos","skipped","actualInspected","actualLines","expectedLines","indicator","inputLength","_actualLines","printedLines","skippedMsg","expectedLine","actualLine","divergingLines","AssertionError","_Error","_inspect$custom","AssertionError2","stackStartFn","limit","knownOperators","require_isArguments","isArgs","require_implementation2","keysShim","isEnumerable","hasDontEnumBug","hasProtoEnumBug","dontEnums","equalsConstructorPrototype","excludedKeys","hasAutomationEqualityBug","equalsConstructorPrototypeIfNotBuggy","isArguments","theKeys","skipProto","skipConstructor","require_object_keys","slice","origKeys","originalKeys","keysWorksWithArguments","require_implementation3","objectKeys","toObject","$push","$propIsEnumerable","originalGetSymbols","source1","getSymbols","propValue","require_polyfill","lacksProperEnumerationOrder","assignHasPendingExceptions","thrower","require_implementation4","numberIsNaN","require_polyfill2","require_define_properties","concat","origDefineProperty","supportsDescriptors","defineProperty","predicate","defineProperties","predicates","require_shim","getPolyfill","polyfill","require_object_is","shim","require_implementation5","require_polyfill3","require_shim2","require_is_nan","require_comparisons","_arrayWithHoles","_iterableToArrayLimit","_unsupportedIterableToArray","_nonIterableRest","_arrayLikeToArray","regexFlagsSupported","arrayFromSet","arrayFromMap","objectIs","objectGetOwnPropertySymbols","propertyIsEnumerable","_require$types","isNativeError","isNonIndex","getOwnNonIndexProperties","kStrict","kLoose","kNoIterator","kIsArray","kIsSet","kIsMap","areSimilarRegExps","areSimilarFloatArrays","areSimilarTypedArrays","areEqualArrayBuffers","buf1","buf2","isEqualBoxedPrimitive","val1","innerDeepEqual","strict","memos","val1Tag","val2Tag","keys1","keys2","keyCheck","_keys","_keys2","getEnumerables","iterationType","aKeys","bKeys","symbolKeysA","symbolKeysB","_symbolKeysB","val2MemoA","val2MemoB","areEq","objEquiv","setHasEqualElement","memo","setValues","findLooseMatchingPrimitives","setMightHaveLoosePrim","altValue","mapMightHaveLoosePrim","curB","setEquiv","aValues","bValues","_val","mapHasEqualEntry","key1","item1","mapEquiv","aEntries","_aEntries$i","item2","bEntries","_i2","_bEntries$_i","keysA","_key2","isDeepEqual","isDeepStrictEqual","_require$codes","ERR_AMBIGUOUS_ARGUMENT","ERR_INVALID_ARG_VALUE","ERR_INVALID_RETURN_VALUE","ERR_MISSING_ARGS","objectAssign","RegExpPrototypeTest","lazyLoadComparison","comparison","NO_EXCEPTION_SENTINEL","innerFail","fail","argsLen","internalMessage","warn","errArgs","innerOk","argLen","generatedMessage","equal","notEqual","deepEqual","notDeepEqual","deepStrictEqual","notDeepStrictEqual","strictEqual","notStrictEqual","Comparison","Comparison2","compareExceptionKey","expectedException","getActual","checkIsPromise","waitForActual","promiseFn","resultPromise","expectsError","details","fnType","expectsNoError","throws","_len2","rejects","_len3","_key3","doesNotThrow","_len4","_key4","doesNotReject","_len5","_key5","ifError","newErr","origStack","tmp2","tmp1","internalMatch","regexp","fnName","doesNotMatch","_len6","_key6","require_svg_path_bounds","isSvgPath","pathBounds","require_normalize_svg_path2","_120","radians","large_arc_flag","sweep_flag","recursive","f1","f2","rx2","ry2","f2old","x2old","y2old","hx","hy","degress","require_draw_svg_path","require_bitmap_sdf","calcSDF","INF","cutoff","channel","intData","stride","gridOuter","gridInner","edt","edt1d","require_svg_path_sdf","parsePath","drawPath","bitmapSdf","pathSdf","viewbox","isPath2DSupported","path2d","path2DSupported","ctx2","idata","require_color_name","require_color_parse","baseHues","isShort","isRGB","require_rgb","require_hsl","require_color_rgba","require_color_normalize","normalize2","isInt","require_gl_format_color","colorDflt","colorDfltRgba","opacityDflt","calculateColor","colorIn","opacityIn","colorOut","validateColor","validateOpacity","formatColor","isArrayColorIn","isArrayOpacityIn","getColor","getOpacity","colori","opacityi","parseColorScale","require_convert2","svgSdf","AxisIDs","convertStyle","convertTextStyle","convertTextSelection","convertMarkerStyle","convertMarkerSelection","dashes","convertErrorBarStyle","textfontIn","textpositionIn","tfc","tfs","tff","tfw","tfy","tfv","fonti","weightFallBack","optsIn","multiSymbol","multiAngle","multiColor","multiLineColor","multiOpacity","multiSize","multiLineWidth","symbols","angles","colors","borderColors","getSymbolSdf","sizeFactor","markerSizeFunc","sizes","borderSizes","sizeTotal","sizeAvg","SYMBOL_SDF_SIZE","SYMBOL_STROKE","SYMBOL_SDF","SYMBOL_SVG_CIRCLE","symbolPath","symbolSdf","symbolFunc","symbolNoDot","symbolNoFill","isDot","convertLinePositions","midPtX","midPtY","hasNaN","lastX","lastY","convertErrorBarPositions","convertOneAxis","pOffset","eOffset","minShoe","maxHat","dl","lv","hv","convertTextPosition","textOpts","markerOpts","fontOpts","baseline","hSign","vSign","xPad","yPad","require_scene_update","resetOpts","fill2d","error2d","line2d","scatter2d","glText","select2d","selectBatch","unselectBatch","require_calc5","scatterCalc","sceneUpdate","TOO_MANY_POINTS","hasTooManyPoints","_ids","sceneOptions","expandForErrorBars","errExt","require_edit_style","styleTextSelection","els","unels","baseOpts","selOpts","unselOpts","hasArrayBase","basej","require_select3","hasText","hasMarkers","require_base_index","require_color_id","toNumber","fromNumber","normalized","require_object_assign","getOwnPropertySymbols","propIsEnumerable","shouldUseNative","test1","test2","order2","test3","require_browser","strings","exprs","require_update_diff","mappers","require_is_iexplorer","require_to_float32","float32","fract32","narr","fract","require_bundle","_r","_toConsumableArray","_arrayWithoutHoles","_iterableToArray","_nonIterableSpread","iter","colorId","extend","glslify","updateDiff","ie","f32","scatter","Scatter","gl","paletteTexture","palette","paletteIds","markerTextures","markerCache","maxColors","maxSize","shaderOptions","markerOptions","circleOptions","_this2","batch","markerId","elements","viewport","activation","selectionBuffer","markerActivation","mask","_lod$l","_this3","hasSize","hasColor","_bounds","_positions","snap","positionBuffer","positionFractBuffer","count2","float_data","frac_data","markers","markerMasks","_id","_id2","vp","_group","borderSize","sizeBuffer","_group2","_count","colorBuffer","_i3","_colorId","borderColorId","_i4","sdf","distArr","_i5","_i6","requiredHeight","extend$1","reglScatter2d","scatter$1","render","require_earcut","earcut","holeIndices","hasHoles","outerLen","outerNode","linkedList","invSize","eliminateHoles","earcutLinked","signedArea","insertNode","removeNode","filterPoints","again","ear","indexCurve","isEarHashed","isEar","cureLocalIntersections","splitEarcut","pointInTriangle","minZ","zOrder","maxZ","intersects","locallyInside","isValidDiagonal","splitPolygon","getLeftmost","compareX","eliminateHole","hole","bridge","findHoleBridge","bridgeReverse","qx","tanMin","tan","sectorContainsSector","sortLinked","numMerges","pSize","qSize","inSize","leftmost","intersectsPolygon","middleInside","o1","o3","o4","onSegment","Node","an","bp","polygonArea","trianglesArea","holeIndex","require_array_normalize","require_is_implemented","weakMap","require_noop2","require_is_value","_undefined","require_is_implemented2","plainObject","setPrototypeOf","customCreate","require_is_object","isValue","require_valid_value","require_create2","require_shim3","nullObject","polyProps","objIsPrototypeOf","nullDesc","isNullBase","tmpObj1","tmpObj2","require_set_prototype_of","require_valid_object","require_random_uniq","generated","require_is","require_is2","possibleTypes","require_is3","require_is4","isPrototype","require_is5","classRe","functionToString","require_is_implemented3","assign","require_is_implemented4","require_shim4","require_keys","require_shim5","require_assign","require_normalize_options","process2","opts1","require_is_implemented5","require_shim6","indexOf","searchString","require_contains","require_d","isPlainFunction","normalizeOpts","dscr","get","require_is_arguments2","objToString","require_is_string","require_is_implemented6","require_implementation6","naiveFallback","require_global_this","require_is_implemented7","validTypes","Symbol2","require_is_symbol","require_validate_symbol","require_generate_name","objPrototype","created","postfix","ie11BugWorkaround","require_standard_symbols","NativeSymbol","SymbolPolyfill","require_symbol_registry","validateSymbol","registry","require_polyfill4","generateName","setupStandardSymbols","setupSymbolRegistry","HiddenSymbol","isNativeSafe","description","require_es6_symbol","require_clear","require_valid_callable","require_coerce2","valueToString","require_safe_to_string","require_to_short_string","safeToString","reNewLine","char","require_resolve_exception","stringCoerce","toShortString","resolveMessage","defaultMessage","inputOptions","errorMessage","require_ensure","resolveException","is","require_ensure2","require_is_implemented8","require_is_function","isFunctionStringTag","require_is_implemented9","require_shim7","require_sign","require_to_integer","floor","require_to_pos_integer","toInteger","require_shim8","iteratorSymbol","toPosInt","callable","validValue","arrayLike","mapFn","Context","getIterator","require_from","require_copy2","aFrom","propertyNames","propertyName","require_iterate","objPropertyIsEnumerable","defVal","compareFn","require_for_each2","require_map","targetObj","require_auto_bind","ensureValue","ensurePlainFunction","normalizeOptions","dgs","require_es6_iterator","clear","autoBind","Iterator","redo","require_array2","ArrayIterator","kind","require_string","StringIterator","require_is_iterable","require_valid_iterable","isIterable","require_get","iterable","require_for_of","some","doBreak","broken","require_is_native_implemented","require_polyfill5","randomUniq","forOf","toStringTagSymbol","isNative","objHasOwnProperty","WeakMapPoly","require_es6_weak_map","require_array_find_index","require_regl_line2d","triangulate","WeakMap2","findIndex","rectVert","rectFrag","fillVert","fillFrag","milterVert","milterFrag","Line2D","offsetBuffer","drawRectLine","drawMiterLine","lastId","ptr","splits","split_triangles","hole_base","last_id","seg_pos","npos","positionData","boundsW","boundsH","rangeW","rangeH","dashLength","dashData","colorData","passes","require_regl_error2d","Error2D","WEIGHTS","drawErrors","errorBuffer","meshBuffer","defaults","destroy","drawGroup","pointCount","errorCount","options3","options4","acc","errorData","require_unquote","require_css_global_keywords","require_css_system_font_keywords","require_css_font_weight_keywords","require_css_font_style_keywords","require_css_font_stretch_keywords","require_parenthesis","brackets","escape","flat","bracket","pRE","replaceToken","str2","refId","prevStr","refs","escape2","res2","replaceRef","curr","parenthesis","require_string_split_by","paren","separator","pair","tokens","cleanParts","require_css_font_size_keywords","require_util2","require_parse","unquote","globalKeywords","systemFontKeywords","fontWeightKeywords","fontStyleKeywords","fontStretchKeywords","splitBy","isSize","parseFont","parseLineHeight","require_stringify","globals","a2o","systems","weights","styles","stretches","variants","fams","verify","require_css_font","require_regl_unchecked","VARIABLE_COUNTER","DYN_FUNC","DYN_CONSTANT","DYN_ARRAY","DynamicVariable","escapeStr","splitParts","subparts","toAccessorString","defineDynamic","isDynamic","unbox","dynamic","raf2","clock","createStringStore","stringIds","stringValues","createCanvas","pixelRatio","resizeObserver","onDestroy","createContext","contextAttributes","isHTMLElement","isWebGLContext","parseExtensions","getElement","parseArgs","args_","extensions","optionalExtensions","profile","cachedCode","createExtensionCache","tryLoadExtension","name_","ext","loop","GL_BYTE","GL_UNSIGNED_BYTE$1","GL_SHORT","GL_UNSIGNED_SHORT","GL_INT","GL_UNSIGNED_INT","GL_FLOAT$1","nextPow16","createPool","bufferPool","alloc","sz","free","allocType","freeType","pool","GL_SUBPIXEL_BITS","GL_RED_BITS","GL_GREEN_BITS","GL_BLUE_BITS","GL_ALPHA_BITS","GL_DEPTH_BITS","GL_STENCIL_BITS","GL_ALIASED_POINT_SIZE_RANGE","GL_ALIASED_LINE_WIDTH_RANGE","GL_MAX_TEXTURE_SIZE","GL_MAX_VIEWPORT_DIMS","GL_MAX_VERTEX_ATTRIBS","GL_MAX_VERTEX_UNIFORM_VECTORS","GL_MAX_VARYING_VECTORS","GL_MAX_COMBINED_TEXTURE_IMAGE_UNITS","GL_MAX_VERTEX_TEXTURE_IMAGE_UNITS","GL_MAX_TEXTURE_IMAGE_UNITS","GL_MAX_FRAGMENT_UNIFORM_VECTORS","GL_MAX_CUBE_MAP_TEXTURE_SIZE","GL_MAX_RENDERBUFFER_SIZE","GL_VENDOR","GL_RENDERER","GL_VERSION","GL_SHADING_LANGUAGE_VERSION","GL_MAX_TEXTURE_MAX_ANISOTROPY_EXT","GL_MAX_COLOR_ATTACHMENTS_WEBGL","GL_MAX_DRAW_BUFFERS_WEBGL","GL_TEXTURE_2D","GL_TEXTURE_CUBE_MAP","GL_TEXTURE_CUBE_MAP_POSITIVE_X","GL_TEXTURE0","GL_RGBA","GL_FLOAT","GL_UNSIGNED_BYTE","GL_FRAMEBUFFER","GL_FRAMEBUFFER_COMPLETE","GL_COLOR_ATTACHMENT0","GL_COLOR_BUFFER_BIT$1","wrapLimits","maxAnisotropic","maxDrawbuffers","maxColorAttachments","readFloat","readFloatTexture","fbo","pixels","isIE","npotTextureCube","cubeTexture","isNDArrayLike","flattenUtils","arrayShape$1","flattenArray","flatten1D","flatten2D","flatten3D","nz","ptr_","col","flattenRec","out_","array_","arrayTypes","int8","int16","int32","uint8","uint16","uint32","float","glTypes","dynamic$1","stream","usageTypes","arrayFlatten","arrayShape","GL_STATIC_DRAW","GL_STREAM_DRAW","GL_UNSIGNED_BYTE$2","GL_FLOAT$2","DTYPES_SIZES","typedArrayCode","copyArray","inp","shapeX","shapeY","strideX","strideY","wrapBufferState","stats2","destroyBuffer","bufferCount","bufferSet","REGLBuffer","streamPool","createStream","initBufferFromData","destroyStream","stream$$1","initBufferFromTypedArray","usage","persist","flatData","typedData","transposeData2","handle","createBuffer","deferInit","persistent","reglBuffer","byteLength","setSubData","subdata","offset_","converted","restoreBuffers","total","wrapper","triangle","primTypes","GL_POINTS","GL_LINES","GL_TRIANGLES","GL_BYTE$1","GL_UNSIGNED_BYTE$3","GL_SHORT$1","GL_UNSIGNED_SHORT$1","GL_INT$1","GL_UNSIGNED_INT$1","GL_ELEMENT_ARRAY_BUFFER","GL_STREAM_DRAW$1","GL_STATIC_DRAW$1","wrapElementsState","bufferState","elementSet","elementCount","elementTypes","REGLElementBuffer","createElementStream","initElements","destroyElementStream","predictedType","vertCount","primType","destroyElements","createElements","reglElements","FLOAT","INT","GL_UNSIGNED_SHORT$3","convertToHalfFloat","ushorts","exp","isArrayLike","GL_COMPRESSED_TEXTURE_FORMATS","GL_TEXTURE_2D$1","GL_TEXTURE_CUBE_MAP$1","GL_TEXTURE_CUBE_MAP_POSITIVE_X$1","GL_RGBA$1","GL_ALPHA","GL_RGB","GL_LUMINANCE","GL_LUMINANCE_ALPHA","GL_RGBA4","GL_RGB5_A1","GL_RGB565","GL_UNSIGNED_SHORT_4_4_4_4","GL_UNSIGNED_SHORT_5_5_5_1","GL_UNSIGNED_SHORT_5_6_5","GL_UNSIGNED_INT_24_8_WEBGL","GL_DEPTH_COMPONENT","GL_DEPTH_STENCIL","GL_SRGB_EXT","GL_SRGB_ALPHA_EXT","GL_HALF_FLOAT_OES","GL_COMPRESSED_RGB_S3TC_DXT1_EXT","GL_COMPRESSED_RGBA_S3TC_DXT1_EXT","GL_COMPRESSED_RGBA_S3TC_DXT3_EXT","GL_COMPRESSED_RGBA_S3TC_DXT5_EXT","GL_COMPRESSED_RGB_ATC_WEBGL","GL_COMPRESSED_RGBA_ATC_EXPLICIT_ALPHA_WEBGL","GL_COMPRESSED_RGBA_ATC_INTERPOLATED_ALPHA_WEBGL","GL_COMPRESSED_RGB_PVRTC_4BPPV1_IMG","GL_COMPRESSED_RGB_PVRTC_2BPPV1_IMG","GL_COMPRESSED_RGBA_PVRTC_4BPPV1_IMG","GL_COMPRESSED_RGBA_PVRTC_2BPPV1_IMG","GL_COMPRESSED_RGB_ETC1_WEBGL","GL_UNSIGNED_BYTE$4","GL_UNSIGNED_SHORT$2","GL_UNSIGNED_INT$2","GL_FLOAT$3","GL_TEXTURE_WRAP_S","GL_TEXTURE_WRAP_T","GL_REPEAT","GL_CLAMP_TO_EDGE","GL_MIRRORED_REPEAT","GL_TEXTURE_MAG_FILTER","GL_TEXTURE_MIN_FILTER","GL_NEAREST","GL_LINEAR","GL_NEAREST_MIPMAP_NEAREST","GL_LINEAR_MIPMAP_NEAREST","GL_NEAREST_MIPMAP_LINEAR","GL_LINEAR_MIPMAP_LINEAR","GL_GENERATE_MIPMAP_HINT","GL_DONT_CARE","GL_FASTEST","GL_NICEST","GL_TEXTURE_MAX_ANISOTROPY_EXT","GL_UNPACK_ALIGNMENT","GL_UNPACK_FLIP_Y_WEBGL","GL_UNPACK_PREMULTIPLY_ALPHA_WEBGL","GL_UNPACK_COLORSPACE_CONVERSION_WEBGL","GL_BROWSER_DEFAULT_WEBGL","GL_TEXTURE0$1","MIPMAP_FILTERS","CHANNELS_FORMAT","FORMAT_CHANNELS","objectName","CANVAS_CLASS","OFFSCREENCANVAS_CLASS","CONTEXT2D_CLASS","BITMAP_CLASS","IMAGE_CLASS","VIDEO_CLASS","PIXEL_CLASSES","TYPE_SIZES","FORMAT_SIZES_SPECIAL","isNumericArray","isRectArray","classString","isCanvasElement","isOffscreenCanvas","isContext2D","isBitmap","isImageElement","isVideoElement","isPixelData","typedArrayCode$1","convertData","preConvert","postConvert","transposeData","strideC","getTextureSize","isMipmap","isCube","createTextureSet","limits","reglPoll","contextState","mipmapHint","wrapModes","magFilters","minFilters","colorSpace","textureTypes","textureFormats","compressedTextureFormats","supportedCompressedFormats","supportedFormats","textureFormatsInvert","textureTypesInvert","magFiltersInvert","minFiltersInvert","wrapModesInvert","colorFormats","glenum","TexFlags","copyFlags","parseFlags","hasChannels","internalformat","setFlags","TexImage","parseImage","viewW","viewH","shapeC","arrayShape2","allocData","miplevel","setSubImage","imagePool","allocImage","freeImage","MipMap","parseMipMapFromShape","mipmap","parseMipMapFromObject","mipData","setMipMap","mipPool","allocMipMap","freeMipMap","TexInfo","parseTexInfo","minFilter","magFilter","wrapS","wrapT","optWrapS","optWrapT","hasMipMap","setTexInfo","textureCount","textureSet","numTexUnits","textureUnits","REGLTexture","tempBind","texture","tempRestore","unit","createTexture2D","reglTexture2D","texInfo","subimage","level_","w_","h_","_w","_h","createTextureCube","a3","a4","a5","faces","reglTextureCube","a42","a52","faceInput","face","radius_","destroyTextures","restoreTextures","refreshTextures","GL_RENDERBUFFER","GL_RGBA4$1","GL_RGB5_A1$1","GL_RGB565$1","GL_DEPTH_COMPONENT16","GL_STENCIL_INDEX8","GL_DEPTH_STENCIL$1","GL_SRGB8_ALPHA8_EXT","GL_RGBA32F_EXT","GL_RGBA16F_EXT","GL_RGB16F_EXT","FORMAT_SIZES","getRenderbufferSize","wrapRenderbuffers","formatTypesInvert","renderbufferCount","renderbufferSet","REGLRenderbuffer","renderbuffer","createRenderbuffer","reglRenderbuffer","restoreRenderbuffers","GL_FRAMEBUFFER$1","GL_RENDERBUFFER$1","GL_TEXTURE_2D$2","GL_TEXTURE_CUBE_MAP_POSITIVE_X$2","GL_COLOR_ATTACHMENT0$1","GL_DEPTH_ATTACHMENT","GL_STENCIL_ATTACHMENT","GL_DEPTH_STENCIL_ATTACHMENT","GL_FRAMEBUFFER_COMPLETE$1","GL_HALF_FLOAT_OES$1","GL_UNSIGNED_BYTE$5","GL_FLOAT$4","GL_RGB$1","GL_RGBA$2","textureFormatChannels","textureTypeSizes","wrapFBOState","textureState","renderbufferState","framebufferState","colorTextureFormats","colorRenderbufferFormats","FramebufferAttachment","decRef","attachment","incRefAndCheckShape","attach","parseAttachment","allocAttachment","isTexture","unwrapAttachment","resizeAttachment","framebufferCount","framebufferSet","REGLFramebuffer","decFBORefs","framebuffer","updateFramebuffer","colorAttachments","createFBO","reglFramebuffer","needsDepth","needsStencil","colorTexture","colorFormat","colorType","colorCount","depthBuffer","stencilBuffer","depthStencilBuffer","depthStencilTexture","depthAttachment","stencilAttachment","depthStencilAttachment","block","createCubeFBO","reglFramebufferCube","colorCubes","cubeMapParams","cube","restoreFramebuffers","GL_FLOAT$5","GL_ARRAY_BUFFER$1","GL_ELEMENT_ARRAY_BUFFER$1","AttributeRecord","wrapAttributeState","elementState","drawState","NUM_ATTRIBUTES","attributeBindings","vaoCount","vaoSet","extVAO","restoreVAO","createVAO","getVAO","setVAOEXT","setVAOEmulated","destroyVAOEXT","record","extInstanced","vao","exti","REGLVAO","extension","updateVAO","bufUpdated","nattributes","rec","GL_FRAGMENT_SHADER","GL_VERTEX_SHADER","GL_ACTIVE_UNIFORMS","GL_ACTIVE_ATTRIBUTES","wrapShaderState","stringStore","fragShaders","vertShaders","ActiveInfo","insertActiveInfo","getShader","shader","programCache","programList","PROGRAM_COUNTER","REGLProgram","fragId","vertId","linkProgram","attributeLocations","fragShader","vertShader","program","numUniforms","uniforms","numAttributes","restoreShaders","deleteShader","attribLocations","prevProgram","GL_RGBA$3","GL_UNSIGNED_BYTE$6","GL_PACK_ALIGNMENT","GL_FLOAT$6","wrapReadPixels","glAttributes","readPixelsImpl","readPixelsFBO","readPixels","hex_sha256","rstr2hex","rstr_sha256","str2rstr_utf8","binb2rstr","binb_sha256","rstr2binb","hex_tab","sha256_S","X","sha256_R","sha256_Ch","sha256_Maj","sha256_Sigma0256","sha256_Sigma1256","sha256_Gamma0256","sha256_Gamma1256","sha256_K","HASH","W","T1","T2","safe_add","lsw","msw","createEnvironment","varCounter","linkedNames","linkedValues","isStable","stable","vars","scope","entry","entryToString","exitToString","save","conditional","pred","thenBlock","elseBlock","thenToString","elseToString","elseClause","globalBlock","procedures","proc","body","bodyToString","compile","proc2","CUTE_COMPONENTS","GL_UNSIGNED_BYTE$7","ATTRIB_STATE_POINTER","ATTRIB_STATE_CONSTANT","DYN_FUNC$1","DYN_PROP$1","DYN_CONTEXT$1","DYN_STATE$1","DYN_THUNK","DYN_CONSTANT$1","DYN_ARRAY$1","S_DITHER","S_BLEND_ENABLE","S_BLEND_COLOR","S_BLEND_EQUATION","S_BLEND_FUNC","S_DEPTH_ENABLE","S_DEPTH_FUNC","S_DEPTH_RANGE","S_DEPTH_MASK","S_COLOR_MASK","S_CULL_ENABLE","S_CULL_FACE","S_FRONT_FACE","S_LINE_WIDTH","S_POLYGON_OFFSET_ENABLE","S_POLYGON_OFFSET_OFFSET","S_SAMPLE_ALPHA","S_SAMPLE_ENABLE","S_SAMPLE_COVERAGE","S_STENCIL_ENABLE","S_STENCIL_MASK","S_STENCIL_FUNC","S_STENCIL_OPFRONT","S_STENCIL_OPBACK","S_SCISSOR_ENABLE","S_SCISSOR_BOX","S_VIEWPORT","S_PROFILE","S_FRAMEBUFFER","S_VERT","S_FRAG","S_ELEMENTS","S_PRIMITIVE","S_COUNT","S_OFFSET","S_INSTANCES","S_VAO","SUFFIX_WIDTH","SUFFIX_HEIGHT","S_FRAMEBUFFER_WIDTH","S_FRAMEBUFFER_HEIGHT","S_VIEWPORT_WIDTH","S_VIEWPORT_HEIGHT","S_DRAWINGBUFFER","S_DRAWINGBUFFER_WIDTH","S_DRAWINGBUFFER_HEIGHT","NESTED_OPTIONS","GL_ARRAY_BUFFER$2","GL_ELEMENT_ARRAY_BUFFER$2","GL_CULL_FACE","GL_BLEND","GL_DITHER","GL_STENCIL_TEST","GL_DEPTH_TEST","GL_SCISSOR_TEST","GL_POLYGON_OFFSET_FILL","GL_SAMPLE_ALPHA_TO_COVERAGE","GL_SAMPLE_COVERAGE","GL_FLOAT$7","GL_FLOAT_VEC2","GL_FLOAT_VEC3","GL_FLOAT_VEC4","GL_INT$2","GL_INT_VEC2","GL_INT_VEC3","GL_INT_VEC4","GL_BOOL","GL_BOOL_VEC2","GL_BOOL_VEC3","GL_BOOL_VEC4","GL_FLOAT_MAT2","GL_FLOAT_MAT3","GL_FLOAT_MAT4","GL_SAMPLER_2D","GL_SAMPLER_CUBE","GL_TRIANGLES$1","GL_FRONT","GL_BACK","GL_CW","GL_CCW","GL_MIN_EXT","GL_MAX_EXT","GL_ALWAYS","GL_KEEP","GL_ZERO","GL_ONE","GL_FUNC_ADD","GL_LESS","GL_FRAMEBUFFER$2","GL_COLOR_ATTACHMENT0$2","blendFuncs","compareFuncs","stencilOps","orientationType","isBufferArgs","sortState","Declaration","thisDep","contextDep","propDep","append","decl","createStaticDecl","createDynamicDecl","dyn","numArgs","subDyn","subArgs","SCOPE_DECL","reglCore","uniformState","attributeState","shaderState","AttributeRecord2","blendEquations","extInstancing","extDrawBuffers","extVertexArrays","currentState","nextState","GL_STATE_NAMES","GL_FLAGS","GL_VARIABLES","propName","stateFlag","sname","cap","init","stateVariable","hasVariableReference","sharedState","sharedConstants","drawCallCounter","createREGLEnvironment","env","SHARED","shared","nextVars","currentVars","variable","argList","scopeAttribs","parseProfile","staticOptions","dynamicOptions","profileEnable","parseFramebuffer","env2","FRAMEBUFFER","CONTEXT","FRAMEBUFFER_FUNC","FRAMEBUFFER_STATE","parseViewportScissor","parseBox","isStatic2","BOX_W","BOX_H","dynBox","BOX","BOX_X","BOX_Y","prevViewport","VIEWPORT","parseAttribLocations","staticProgram","staticAttributes","sAttributes","parseProgram","parseShader","frag","vert","progVar","SHADER_STATE","progDef","parseDraw","staticDraw","vaoActive","parseVAO","vao2","vaoRef","elementsActive","parseElements","elements2","result2","IS_BUFFER_ARGS","ELEMENT_STATE","elementDefn","elements3","elementStream","ifte","parsePrimitive","primitive2","dynPrimitive","PRIM_TYPES","parseParam","isOffset","dynValue","OFFSET","parseVertCount","dynCount","countVariable","instances","parseGLState","STATE","parseStatic","parseDynamic","COMPARE_FUNCS","Z_NEAR","Z_FAR","srcRGB","srcAlpha","dstRGB","dstAlpha","BLEND_FUNCS","read","SRC_RGB","SRC_ALPHA","DST_RGB","DST_ALPHA","BLEND_EQUATIONS","RGB","ALPHA","cmp","zfail","zpass","STENCIL_OPS","units","FACTOR","UNITS","sampleValue","sampleInvert","INVERT","parseUniforms","staticUniforms","dynamicUniforms","UNIFORMS","reglType","ITEM","parseAttributes","dynamicAttributes","attributeDefs","constant","divisor","appendAttributeCode","BUFFER_STATE","defaultRecord","BUFFER","TYPE","emitReadRecord","parseContext","staticContext","dynamicContext","parseArguments","viewportAndScissor","copyBox","defn","dirty","useVAO","staticBindings","emitContext","contextEnter","emitPollFramebuffer","skipCheck","GL","EXT_DRAW_BUFFERS","DRAW_BUFFERS","BACK_BUFFER","NEXT","emitPollState","CURRENT_VARS","NEXT_VARS","CURRENT_STATE","NEXT_STATE","CURRENT","emitSetOptions","flag","injectExtensions","emitProfile","useScope","incrementCounter","STATS","TIMER","profileArg","perfCounter","CPU_START","QUERY_COUNTER","emitProfileStart","emitProfileEnd","scopeProfile","USE_PROFILE","emitAttributes","typeLength","emitBindAttribute","ATTRIBUTE","LOCATION","BINDING","CONST_COMPONENTS","COMMON_KEYS","emitBuffer","SIZE","DIVISOR","emitConstant","scopeAttrib","emitUniforms","isBatchInnerLoop","infix","uniform","UNIFORM","TEX_VALUE","MAT_VALUE","unroll","TEX","matSize","STORAGE","prevS","emitDraw","inner","DRAW_STATE","drawOptions","emitElements","ELEMENTS2","emitCount","COUNT2","ELEMENTS","emitValue","PRIMITIVE","COUNT","INSTANCES","EXT_INSTANCING","ELEMENT_TYPE","elementsStatic","emitInstancing","drawElements","drawArrays","emitRegular","createBody","emitBody","parentEnv","emitDrawBody","emitDrawProc","drawCache","PROG_ID","CACHED_PROC","program2","emitBatchDynamicShaderBody","emitBatchBody","contextDynamic","BATCH_ID","PROP_LIST","NUM_PROPS","PROPS","isInnerDefn","isOuterDefn","progCache","PROGRAM","emitBatchProc","needsContext","needsFramebuffer","progDefn","batchCache","emitScopeProc","VARIABLE2","VARIABLE","saveShader","isDynamicObject","splatObject","objectRef","deps","appendBlock","compileCommand","poll","refresh","common","INSTANCING","TEMP_BINDING","MAX_ATTRIBUTES","GL_QUERY_RESULT_EXT","GL_QUERY_RESULT_AVAILABLE_EXT","GL_TIME_ELAPSED_EXT","createTimer","queryPool","allocQuery","freeQuery","pendingQueries","beginQuery","pushScopeStats","endQuery","PendingStats","pendingStatsPool","allocPendingStats","freePendingStats","pendingStats2","pendingStats","ps","timeSum","queryPtr","queryTime","startPtr","endPtr","GL_COLOR_BUFFER_BIT","GL_DEPTH_BUFFER_BIT","GL_STENCIL_BUFFER_BIT","GL_ARRAY_BUFFER","CONTEXT_LOST_EVENT","CONTEXT_RESTORED_EVENT","DYN_PROP","DYN_CONTEXT","DYN_STATE","haystack","needle","wrapREGL","extensionState","stats$$1","START_TIME","WIDTH","HEIGHT","core","rafCallbacks","lossCallbacks","restoreCallbacks","destroyCallbacks","activeRAF","handleRAF","startRAF","stopRAF","handleContextLoss","handleContextRestored","compileProcedure","flattenNestedOptions","merge","separateDynamic","useArrays","staticItems","dynamicItems","option","stats$$12","compiled","EMPTY_ARRAY","reserve","REGLCommand","setFBO","clearImpl","clearFlags","pendingCancel","pollViewport","scissorBox","addListener","callbacks","getCachedCode","preloadCachedCode","moreCache","kv","require_context","isCanvas","isElement","isContext","require_font_atlas","stringifyFont","defaultChars","atlas","newchars","require_twiddle","INT_BITS","countTrailingZeros","REVERSE_TABLE","tab","require_dup","dupe_array","dupe_number","dupe","require_base64_js","toByteArray","fromByteArray","revLookup","Arr","getLens","b64","validLen","placeHoldersLen","lens","_byteLength","curByte","tripletToBase64","encodeChunk","extraBytes","maxChunkLength","len22","require_ieee754","isLE","mLen","nBytes","eMax","eBias","nBits","require_buffer","ieee754","customInspectSymbol","Buffer2","SlowBuffer","K_MAX_LENGTH","typedArraySupport","encodingOrOffset","allocUnsafe","fromString","fromArrayView","isInstance","fromArrayBuffer","valueOf","fromObject","assertSize","encoding","checked","fromArrayLike","arrayView","byteOffset","mustMatch","loweredCase","utf8ToBytes","base64ToBytes","slowToString","hexSlice","utf8Slice","asciiSlice","latin1Slice","base64Slice","utf16leSlice","swap","thisStart","thisEnd","thisCopy","targetCopy","bidirectionalIndexOf","arrayIndexOf","indexSize","arrLength","valLength","foundIndex","hexWrite","strLen","utf8Write","blitBuffer","asciiWrite","asciiToBytes","base64Write","ucs2Write","utf16leToBytes","firstByte","codePoint","bytesPerSequence","secondByte","thirdByte","fourthByte","tempCodePoint","decodeCodePointsArray","MAX_ARGUMENTS_LENGTH","codePoints","hexSliceLookupTable","newBuf","checkOffset","byteLength2","noAssert","defineBigIntMethod","validateNumber","boundsError","checkInt","maxBytes","wrtBigUInt64LE","checkIntBI","wrtBigUInt64BE","sub","checkIEEE754","writeFloat","littleEndian","writeDouble","targetStart","received","addNumericalSeparator","checkBounds","INVALID_BASE64_RE","base64clean","leadSurrogate","byteArray","dst","alphabet","table","i16","BufferBigIntNotDefined","require_pool","dup","hasUint8C","hasBigUint64","hasBigInt64","POOL","DATA","log_n","freeArrayBuffer","freeTypedArray","mallocArrayBuffer","mallocUint8","mallocUint16","mallocUint32","mallocInt8","mallocInt16","mallocInt32","mallocFloat","mallocDouble","mallocUint8Clamped","mallocBigInt64","mallocBigUint64","mallocBuffer","mallocDataView","require_is_plain_obj","require_parse_unit","require_topx","parseUnit","toPX","PIXELS_PER_INCH","getPropertyInPX","getSizeBrutal","testDIV","require_detect_kerning","kerning","asciiPairs","createPairs","kerningWidth","emWidth","leftChar","rightChar","require_font_measure","measure","applyOrigin","topPx","firstTop","bottomPx","baselinePx","medianPx","hangingPx","ideographicPx","firstBottom","overshootPx","iData","require_dist","Font","createRegl","createGl","fontAtlas","metrics","nextPow2","shaderCache","isStretchSupported","GlText","isRegl","this$1","newFont","newFontSize","font2","fontStretch","baseString","fontString","metrics2","textArray","newAtlasChars","i$1","atlas2","char2","baseChar","i$2","j$1","charIds","sizeData","i$3","ptr$1","count$1","j$2","prevChar","prevWidth","currWidth","prevOffset","kerning$1","maxCols","cols","atlasWidth","atlasHeight","i$4","l$1","i$5","isBatch","i$6","require_show_no_webgl_msg","require_prepare_regl","showNoWebGlMsg","reglPrecompiled","require_plot3","createScatter","createLine","createError","Text","prepareRegl","getViewport","cdata","textsToAdd","textsToRemove","removedTexts","lineOptions","srcPos","firstptdef","lastptdef","errorBatch","fillOptions","stash2","nextTrace","nextOptions","nextPos","prevLinePos","clickSelectEnabled","selPts","selDict","unselPts","vpRange0","vpRange","require_scattergl","require_scattergl2","require_attributes24","scatterGlAttrs","markerLineAttrs","markerAttrs","makeAxesValObject","require_merge_length","dimi","require_defaults20","mergeLength","isOpenSymbol","dimensionDefaults","showDiag","showUpper","showLower","dimLength","dimIn","dimOut","xAxesDflt","yAxesDflt","diag","fillAxisStashes","counterAxId","dim2","mustShiftX","mustShiftY","iN","xaId","yaId","require_scene_update2","reset","require_calc6","commonLength","ldata","visibleDims","makeCalcdata","ccol","visibleLength","require_performance_now","getNanoSeconds","hrtime","loadTime","moduleLoadTime","nodeLoadTime","upTime","hr","require_raf","vendors","caf","frameDuration","_now","cp","require_array_range","require_regl_splom","arrRange","SPLOM","tracePasses","multirange","multipadding","getPad","iw","ih","passId","getBox","passOffset","passId2","iloy","ihiy","jlox","jhix","iitem","jitem","require_plot4","createMatrix","splomCalcData","matrixOpts","viewOpts","dmn","needsBaseUpdate","require_helpers13","require_hover4","_hoverPoints","_pointData","axisHoversubplots","require_select4","require_edit_style2","require_base_index2","Grid","require_base_plot","shouldShowZeroLine","plot","updateGrid","dragOne","splomGrid","makeGridData","fullView","lcolor","lwidth","xVals","yVals","xLength","yLength","gridBatches","clean","require_splom","require_splom2","require_attributes25","require_constants15","require_gup","require_axisbrush","keyFun","sortAsc","snapRatio","snapOvershoot","vAdjacent","snapClose","closeToCovering","ordinalScaleSnap","isHigh","existingRanges","overlappingExisting","aHere","aPrev","nextI","aNext","barHorizontalSetup","backgroundBarHorizontalSetup","setHighlight","pixelRanges","unitToPx","sectionHeight","iNext","currentGap","unitRanges","getRegion","fPix","clearCursor","styleHighlight","renderHighlight","tweenCallback","barToStyle","getInterval","closestInterval","intervals","pixIntervals","hoveredInterval","previousInterval","nextInterval","unitLocation","rangei","unitRange","pixelRange","int2","dragend","grabbingBar","brushClear","mergeIntervals","hasNewExtent","attachDragBehavior","startAsc","renderAxisBrush","axisBrush","paperColor","highlightShadow","highlight","ensureAxisBrush","axisOverlays","getBrushExtent","axisBrushMoved","newExtent","dedupeRealRanges","currentInterval","makeFilter","consolidated","makeBrush","rangeSpecified","initialRange","brushStartCallback","brushCallback","brushEndCallback","cleanRanges","ri","sortedTickVals","rSnapped","require_defaults21","handleDomainDefaults","maxDimensionCount","dimensionIn","dimensionOut","parentOut","constraintRange","dimensionsIn","require_calc7","cscale","constHalf","require_helpers14","require_lines","vertexShaderSource","fragmentShaderSource","maxDim","depthLimitEpsilon","maskHeight","dummyPixel","dataPixel","paletteTextureConfig","ensureDraw","renderBlock","glAes","renderState","blockLineCount","sampleCount","rafKey","blockNumber","adjustDepth","unitToColor","calcPickColor","rgbIndex","makeVecAttr","vecIndex","pointPairs","getAttrName","setAttributes","emptyAttributes","makeItem","model","rightmost","itemNumber","panelSizeX","panelSizeY","crossfilterDimensionIndex","drwLayer","overdrag","canvasWidth","canvasHeight","padL","padB","layoutHeight","layoutWidth","deselectedLinesColor","deselectedLinesOpacity","itemModel","expandedPixelRange","dh","canvasGL","isPick","supportedLineWidth","vm","initialDims","maskTexture","prevAxisOrder","dNew","makeConstraints","isContext2","bitMask","prevEnd","nextRange","textureData","renderGLParcoords","panels","setChanged","clearOnly","panelCount","lowestX","highestX","plotGlPixelRatio2","readPixel","canvasX","canvasY","pixelArray","require_parcoords","gup","lineLayerMaker","findExtreme","fixExtremes","dimensionExtent","toText","domainScale","ticktext","unitVal","unitToPaddedPx","domainToPaddedUnitScale","padFraction","ordinalScale","unitToColorScale","colorTuples","RGBA","polylinearUnitScales","someFiltersActive","deselectedLines","labelAngle","labelSide","labelFont","rangeFont","groupWidth","groupHeight","rowContentWidth","rowHeight","viewModel","model2","canvasPixelRatio","unitPad","_unitToPaddedPx","uniqueKeys","domainToPaddedUnit","foundKey","specifiedConstraint","filterRangeSpecified","filterRange","brushMove","filtersActive","truncatedValues","makeTickItem","sortTickItem","tickItems","invScale","newRanges","styleExtentTexts","parcoordsInteractionState","linePickActive","contextShown","calcTilt","updatePanelLayout","dim0","dim1","calcAllTicks","linearFormat","glContainer","glLayers","lastHovered","pickLayer","ch","pointer","pixel","curveNumber","controlOverlay","parcoordsControlView","wantedTickCount","sdom","axisHeading","axisTitle","tilt","axisExtent","axisExtentTop","axisExtentTopText","axisExtentBottom","axisExtentBottomText","require_plot5","parcoords","newIndex","visibleIndices","orig","origIndex","currentIndex","sorter","currentDims","fullIndices","inputIndices","filterChanged","initialDimIndex","newConstraints","aStr","fullDimension","restyleData","axesMoved","require_base_plot2","parcoordsPlot","hadParcoords","hasParcoords","require_base_index3","require_parcoords2","require_parcoords3","require_main","Calendars","language","digit","powers","localNumber","power","CDate","_exports","jd","jsd","BaseCalendar","ord","resyncYearMonth","yearMonths","ymd","adj","valid","GregorianCalendar","checkDate","require_plus","settings","dayNamesShort","dayNames","monthNumbers","monthNamesShort","monthNames","doubled","iFormat","formatNumber","formatName","shortNames","longNames","date2","localiseNumbers","formatMonthName","useLongName","literal","shortYearCutoff","doy","shortYear","getNumber","isDoubled","iValue","getMonthNumber","month2","getName","getMonthName","checkLiteral","iSave","dateSpec","defaultDate","currentDate","dateFormat","offsetString","require_chinese","gregorianCalendar","ChineseCalendar","MONTH_NUMBER_REGEXP","monthIndex","MONTH_NAME_REGEXP","monthName","MONTH_SHORT_NAME_REGEXP","monthString","intercalaryMonth","invalidIntercalaryMonth","maxMonthIndex","monthDaysTable","LUNAR_MONTH_DAYS","validatedYear","packedDate","CHINESE_NEW_YEAR","firstThursday","daysInMonth","solar","toSolar","lunar","toLunar","dateString","DATE_REGEXP","cdate","resultYear","resultMonthIndex","resultCanBeIntercalaryMonth","correctedMonthIndex","yearOrDate","monthOrResult","solarDate","lunarDate","isValidYear","isValidMonth","isValidDay","chineseNewYearPackedDate","daysFromNewYear","chineseNewYearJSDate","jsDate","isIntercalaryOrResult","monthsFromNewYear","require_coptic","CopticCalendar","require_discworld","DiscworldCalendar","centuries","require_ethiopian","EthiopianCalendar","require_hebrew","HebrewCalendar","adjYear","present","require_islamic","IslamicCalendar","require_julian","JulianCalendar","require_mayan","MayanCalendar","baktun","katun","haab","tzolkin","amod","require_nanakshahi","NanakshahiCalendar","gregorian","require_nepali","NepaliCalendar","daysPerYear","month_number","nepaliYear","nepaliMonth","nepaliDay","gregorianDayOfYear","nepaliMonthToCheck","nepaliYearToCheck","gregorianYear","gregorianDate","dayOfFirstJanInPaush","daysSinceJanFirstToEndOfNepaliMonth","nepaliDayOfMonth","tmp_calendar_data","nepaliYearToCreate","require_persian","PersianCalendar","epBase","epYear","depoch","cyear","ycycle","aux1","aux2","yday","require_taiwan","TaiwanCalendar","require_thai","ThaiCalendar","require_ummalqura","UmmAlQuraCalendar","daysCount","mcjdn","ummalqura_dat","lunation","ii","require_calendars","require_calendars2","calendars","handleDefaults","handleTraceDefaults","CANONICAL_TICK","CANONICAL_SUNDAY","DFLTRANGE","UNKNOWN","d3ToWorldCalendars","worldCalFmt","getCal","modifier","directive","directiveLen","directiveObj","replacementPart","allCals","calendarObj","makeAttrs","makeTraceAttrsDescription","xAttrs","axisAttrs","require_calendars3","require_index_gl2d","plotComponentFactory","_react","_interopRequireWildcard","require$$0","_propTypes","_interopRequireDefault","_getRequireWildcardCache","nodeInterop","cacheBabelInterop","cacheNodeInterop","newObj","hasPropertyDescriptor","self","eventNames","updateEvents","PlotlyComponent","_Component","shouldInvokeResizeHandler","figureCallbackFunction","shouldAttachUpdateEvents","prevProps","numPrevFrames","numNextFrames","figureChanged","revisionDefined","revisionChanged","updateEvent","_this4","_this$el","invoke","_this5","_this6","eventName","hasHandler"],"mappings":"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,CAAG,EAGG8B,GAAsBnwD,GAAW,CACnC,8BAA8BI,EAASX,EAAQ,CAE7C,IAAI2wD,EAAmB,CACrB,WAAY,CACV,QAAS,UACT,KAAM,EACP,EACD,YAAa,CACX,QAAS,UACT,KAAM,EACP,EACD,gBAAiB,CACf,QAAS,SACT,KAAM,EACP,EACD,SAAU,CACR,QAAS,UACT,KAAM,EACP,EACD,MAAO,CACL,mBAAoB,CAClB,QAAS,UACT,KAAM,EACP,EACD,eAAgB,CACd,QAAS,UACT,KAAM,EACP,EACD,eAAgB,CACd,QAAS,UACT,KAAM,EACP,EACD,cAAe,CACb,QAAS,UACT,KAAM,EACP,EACD,iBAAkB,CAChB,QAAS,UACT,KAAM,EACP,EACD,kBAAmB,CACjB,QAAS,UACT,KAAM,EACP,EACD,eAAgB,CACd,QAAS,UACT,KAAM,EACP,EACD,WAAY,CACV,QAAS,UACT,KAAM,EACP,EACD,cAAe,CACb,QAAS,UACT,KAAM,EACP,EACD,UAAW,CACT,QAAS,UACT,KAAM,EAClB,CACS,EACD,cAAe,CACb,QAAS,UACT,KAAM,EACP,EACD,YAAa,CACX,QAAS,UACT,KAAM,EACP,EACD,WAAY,CACV,QAAS,UACT,KAAM,EACP,EACD,UAAW,CACT,QAAS,UACT,KAAM,EACP,EACD,aAAc,CACZ,QAAS,SACT,KAAM,EACN,IAAK,EACL,IAAK,EACN,EACD,WAAY,CACV,QAAS,WACT,MAAO,CAAC,YAAa,OAAQ,MAAO,SAAU,KAAK,EACnD,OAAQ,CAAC,GAAM,EAAK,EACpB,KAAM,cACP,EACD,YAAa,CACX,QAAS,aACT,OAAQ,CAAC,GAAO,QAAS,WAAY,gBAAgB,EACrD,KAAM,gBACP,EACD,iBAAkB,CAChB,QAAS,SACT,KAAM,IACN,IAAK,CACN,EACD,oBAAqB,CACnB,QAAS,UACT,KAAM,EACP,EACD,wBAAyB,CACvB,QAAS,UACT,KAAM,EACP,EACD,SAAU,CACR,QAAS,UACT,KAAM,EACP,EACD,SAAU,CACR,QAAS,UACT,KAAM,EACP,EACD,SAAU,CACR,QAAS,SACT,KAAM,aACN,QAAS,EA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,SAAU,aAAa,CAAE,EAAG,EAAE,EACzD,WAAY,CACV,QAAS,UACT,KAAM,GACN,SAAU,MACX,EACD,SAAU,aACX,EACD,YAAa,CACX,KAAM,CACJ,QAAS,aACT,OAAQ,CAAC,GAAO,OAAQ,MAAM,EAC9B,KAAM,GACN,SAAU,MACX,EACD,QAAS,CACP,QAAS,SACT,IAAK,EACL,KAAM,EACN,SAAU,MACX,EACD,SAAU,MACX,EACD,SAAU,CACR,QAAS,UACT,KAAM,GAGN,SAAU,MACX,EACD,MAAO,CACL,QAAS,SACT,IAAK,GACL,KAAM,IACN,SAAU,MACX,EACD,OAAQ,CACN,QAAS,SACT,IAAK,GACL,KAAM,IACN,SAAU,MACX,EACD,gBAAiB,CACf,QAAS,SACT,IAAK,EACL,KAAM,GACN,SAAU,MACX,EACD,iBAAkB,CAChB,QAAS,SACT,IAAK,EACL,KAAM,GACN,SAAU,MACX,EACD,OAAQ,CACN,EAAG,CACD,QAAS,SACT,IAAK,EACL,KAAM,GACN,SAAU,MACX,EACD,EAAG,CACD,QAAS,SACT,IAAK,EACL,KAAM,GACN,SAAU,MACX,EACD,EAAG,CACD,QAAS,SACT,IAAK,EACL,KAAM,IACN,SAAU,MACX,EACD,EAAG,CACD,QAAS,SACT,IAAK,EACL,KAAM,GACN,SAAU,MACX,EACD,IAAK,CACH,QAAS,SACT,IAAK,EACL,KAAM,EACN,SAAU,MACX,EACD,WAAY,CACV,QAAS,UACT,KAAM,GACN,SAAU,MACX,EACD,SAAU,MACX,EACD,SAAU,CACR,QAAS,MACT,SAAU,MACX,EACD,cAAe,CACb,QAAS,QACT,KAAM1U,EAAW,WACjB,SAAU,MACX,EACD,aAAc,CAGZ,QAAS,QACT,KAAMA,EAAW,WACjB,SAAU,aACX,EACD,gBAAiB,CACf,QAAS,aACT,OAAQ,CAAC,gBAAiB,QAAQ,EAClC,KAAM,gBACN,SAAU,MACX,EACD,WAAY,CACV,QAAS,SACT,SAAU,MACX,EACD,YAAa,CACX,QAAS,UACT,KAAM,GACN,SAAU,MACX,EACD,WAAY,CAGV,QAAS,UACT,SAAU,QACX,EACD,SAAU,C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,CAClC,EACD,SAASC,EAAUp5U,EAAK,CAEtB,QADIoxB,EAAM,IAAI,MAAMpxB,CAAG,EACd1B,EAAI,EAAGA,EAAI0B,EAAK1B,IACvB8yB,EAAI9yB,CAAC,EAAI,GAEX,OAAO8yB,CACf,CACA,CACA,CAAG,EAGGioT,GAAoB58U,GAAW,CACjC,kCAAkCI,EAAS,CAEzC,IAAI+7C,EAAe0zB,GAAW,EAAG,aACjCzvE,EAAQ,kBAAoB,SAAS0E,EAAG,CACtC,OAAOq3C,EAAar3C,CAAC,EAAI,MAAM,UAAU,MAAM,KAAKA,CAAC,EAAIA,CAC1D,EACD1E,EAAQ,UAAY,SAASkyB,EAAW,CACtC,MAAO,CAAC,CAACA,EAAU,QACpB,EACDlyB,EAAQ,UAAY,SAASkyB,EAAW,CACtC,OAAOA,EAAU,SAAW,EAAE,YAAaA,EAC5C,CACP,CACA,CAAG,EAGGuqT,GAAgB78U,GAAW,CAC7B,gCAAgCI,EAASX,EAAQ,CAE/C,IAAIq9U,EAAqB,CACvB,yBACA,GACA,0BACA,GACA,iDACA,iDACA,iDACA,iDACA,GACA,uEACA,uDACA,GACA,oDACA,4BACA,2DACA,6BACA,0CACA,GACA,qCACA,qCACA,GACA,+CACA,+CACA,GACA,8BACA,uDACA,IACA,GACA,6DACA,gFACA,gFACA,8CACA,IACA,GACA,2BACA,8BACA,IACA,GACA,+CACA,8CACA,IACA,GACA,4CACA,eACA,0CACA,0CACA,0CACA,uCACA,SACA,IACA,GACA,4CACA,eACA,0CACA,0CACA,0CACA,uCACA,SACA,IACA,GACA,4DACA,sCACA,sCACA,sCACA,oCACA,IACA,GACA,2DACA,oBACA,mBACA,mBACA,mBACA,mBACA,GACA,mCACA,uCACA,2CACA,gCACA,yDACA,gCACA,kEACA,sFACA,gCACA,oEACA,wBACA,kCACA,gBACA,YACA,QACA,oBACA,IACA,GACA,2EACA,qCACA,sCACA,8BACA,GACA,0CACA,4CACA,wCACA,SACA,GACA,mBACA,4EACA,aACA,cACA,SACA,IACA,GACA,gBACA,qDACA,qDACA,qDACA,oDA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AClBw/S,EAAax/S,EAAK,MAAO,EACzB04B,EAAgB,KAAK,mBAAmBv2B,EAAMq9S,CAAU,EACxDv9S,EAAQ,KAAK,eAAeE,EAAMq9S,CAAU,EAC5CqB,EAAQ,OAAO,eAAevB,EAAgB,SAAS,EAAE,IAAI,KAAK,KAAMt/S,EAAMtX,EAAQ42G,CAAM,EAChG,GAAIA,IAAW,IAAK,CAClB,IAAIwhN,EAAaD,EAAM,KAAM,EACzBE,EAAmBF,EAAM,MAAO,EAChCG,EAA8B,KAAK,mBAAmBF,EAAY7+S,CAAK,EACvEg/S,EAAsBvoR,GAAiBsoR,EAA8B,KAAK,aAAaF,EAAY7+S,EAAO,EAAI,EAAI,KAAK,aAAa6+S,EAAY7+S,EAAO,EAAK,EAC5Jg/S,IAAwBF,GAC1BF,EAAM,MAAMI,CAAmB,CAE7C,CACU,OAAOJ,CACjB,CACA,CAAO,EACD,IAAID,EAAc,sDACdrB,EAAsB,eACtBE,EAAoB,sBACpBE,EAA0B,qBAC9B/oN,EAAK,UAAU,QAAU0oN,EACzB,IAAIW,EAAmB,CACrB,KACA,KACA,KACA,MACA,KACA,MACA,KACA,KACA,MACA,KACA,KACA,MACA,KACA,MACA,KACA,KACA,MACA,KACA,KACA,MACA,KACA,KACA,MACA,KACA,MACA,KACA,KACA,MACA,KACA,KACA,MACA,KACA,MACA,KACA,KACA,MACA,KACA,KACA,MACA,KACA,KACA,MACA,KACA,MACA,KACA,KACA,MACA,KACA,KACA,MACA,KACA,MACA,KACA,KACA,MACA,KACA,KACA,MACA,KACA,KACA,MACA,KACA,MACA,KACA,KACA,MACA,KACA,KACA,MACA,KACA,MACA,KACA,KACA,MACA,KACA,KACA,MACA,KACA,KACA,MACA,KACA,MACA,KACA,KACA,MACA,KACA,KACA,MACA,KACA,MACA,KACA,KACA,MACA,KACA,KACA,MACA,KACA,MACA,KACA,KACA,MACA,KACA,KACA,MACA,KACA,KACA,MACA,KACA,MACA,KACA,KACA,MACA,KACA,KACA,MACA,KACA,KACA,MACA,KACA,MACA,KACA,KACA,MACA,KACA,KACA,MACA,KACA,MACA,KACA,KACA,MACA,KACA,KACA,MACA,KACA,KACA,MACA,KACA,MACA,KACA,KACA,MACA,KACA,KACA,MACA,KACA,MACA,KACA,KACA,MACA,KACA,KACA,MACA,KACA,KACA,MACA,KACA,MACA,KACA,KACA,MACA,KACA,KACA,MACA,KACA,MACA,KACA,KACA,MACA,KACA,KACA,MACA,KACA,KACA,MACA,KACA,MACA,KACA,KACA,MACA,KACA,KACA,MACA,KACA,MACA,KACA,KACA,MACA,KACA,KACA,MACA,KACA,KACA,MACA,KACA,MACA,KACA,KACA,MACA,KACA,KACA,MACA,KACA,MACA,KACA,KACA,MACA,KACA,KACA,MACA,KACA,KACA,MACA,KACA,MACA,KACA,KACA,MACA,KACA,KACA,MACA,KACA,MACA,KACA,IACD,EACGG,EAAmB,CACrB,KACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,OACD,EACD,SAASM,EAAQQ,EAAYC,EAAengT,EAAK5vB,EAAQ,CACvD,IAAIgwU,EACAC,EACJ,GAAI,OAAOH,GAAe,SACxBE,EAAYF,EACZG,EAAYF,GAAiB,CAAE,MAC1B,CACL,IAAIG,EAAc,OAAOJ,GAAe,UAAYA,GAAc,MAAQA,GAAc,KACxF,GAAI,CAACI,EACH,MAAM,IAAI,MAAM,oCAAoC,EACtD,IAAIC,EAAe,OAAOJ,GAAkB,UAAYA,GAAiB,GAAKA,GAAiB,GAC/F,GAAI,CAACI,EACH,MAAM,IAAI,MAAM,kCAAkC,EACpD,IAAIC,EAAa,OAAOxgT,GAAQ,UAAYA,GAAO,GAAKA,GAAO,GAC/D,GAAI,CAACwgT,EACH,MAAM,IAAI,MAAM,gCAAgC,EAClDJ,EAAY,CACV,KAAMF,EACN,MAAOC,EACP,IAAAngT,CACD,EACDqgT,EAAsB,CAAE,CAClC,CACQ,IAAII,EAA2BrB,EAAiBgB,EAAU,KAAOhB,EAAiB,CAAC,CAAC,EAChFD,EAAaiB,EAAU,MAAQ,EAAIA,EAAU,OAAS,EAAIA,EAAU,IACxEC,EAAU,KAAOlB,GAAcsB,EAA2BL,EAAU,KAAOA,EAAU,KAAO,EAC5FK,EAA2BrB,EAAiBiB,EAAU,KAAOjB,EAAiB,CAAC,CAAC,EAChF,IAAIvzU,EAAI40U,GAA4B,EAAI,KACpC1nV,EAAI0n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,KACA,KACA,KACA,KACA,KACA,KACA,IACD,EACD,cAAe,CACb,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,IACD,EACD,YAAa,CACX,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,IACD,EACD,OAAQ,KACR,WAAY,WACZ,SAAU,EACV,MAAO,GACP,WAAY,CACV,MACA,KACA,MACA,OACA,OACA,MACA,SACA,MACA,OACA,MACA,MACA,MACA,MACA,SACA,OACA,MACA,QACA,QACA,OACD,EACD,cAAe,CACb,OACA,KACA,QACA,MACA,WACA,OACA,QACA,QACA,QACA,KACA,QACA,KACA,MACA,KACA,MACA,MACA,QACA,SACA,QACA,MACd,CACA,CACS,EAMD,SAAU,SAAS5gT,EAAM,CACvB,YAAK,UAAUA,EAAM,KAAK,SAAU,KAAK,OAAQy0F,EAAK,MAAM,WAAW,EAChE,EACR,EAMD,WAAY,SAASz0F,EAAM,CACzB,IAAInC,EAAO,KAAK,UAAUmC,EAAM,KAAK,SAAU,KAAK,OAAQy0F,EAAK,MAAM,WAAW,EAClFz0F,EAAOnC,EAAK,KAAM,EAClB,IAAIgjT,EAAS,KAAK,MAAM7gT,EAAO,GAAG,EAClCA,EAAOA,EAAO,IACdA,GAAQA,EAAO,EAAI,IAAM,EACzB,IAAI8gT,EAAQ,KAAK,MAAM9gT,EAAO,EAAE,EAChC,OAAO6gT,EAAS,IAAMC,EAAQ,IAAM9gT,EAAO,EAC5C,EAMD,QAAS,SAASC,EAAO,CAEvB,GADAA,EAAQA,EAAM,MAAM,GAAG,EACnBA,EAAM,OAAS,EACjB,KAAM,qBAGR,QADID,EAAO,EACFrsC,EAAI,EAAGA,EAAIssC,EAAM,OAAQtsC,IAAK,CACrC,IAAI+W,EAAI,SAASu1B,EAAMtsC,CAAC,EAAG,EAAE,EAC7B,GAAI,KAAK,IAAI+W,CAAC,EAAI,IAAM/W,EAAI,GAAK+W,EAAI,EACnC,KAAM,qBAE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AI,GAAI,GAAI,GAAI,GAAI,EAAE,EACzD,KAAM,CAAC,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,EAAE,EACzD,KAAM,CAAC,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,EAAE,EACzD,KAAM,CAAC,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,EAAE,EACzD,KAAM,CAAC,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,EAAE,EACzD,KAAM,CAAC,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,EAAE,EACzD,KAAM,CAAC,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,EAAE,EACzD,KAAM,CAAC,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,EAAE,EACzD,KAAM,CAAC,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,EAAE,EACzD,KAAM,CAAC,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,EAAE,EACzD,KAAM,CAAC,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,EAAE,EAEzD,KAAM,CAAC,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,EAAE,EACzD,KAAM,CAAC,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,EAAE,EACzD,KAAM,CAAC,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,EAAE,EACzD,KAAM,CAAC,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,EAAE,EACzD,KAAM,CAAC,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,EAAE,EACzD,KAAM,CAAC,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,EAAE,EACzD,KAAM,CAAC,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,EAAE,EACzD,KAAM,CAAC,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,EAAE,EACzD,IAAK,CAAC,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,EAAE,EACxD,KAAM,CAAC,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,EAAE,EACzD,KAAM,CAAC,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,EAAE,EACzD,KAAM,CAAC,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,EAAE,EACzD,KAAM,CAAC,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,EAAE,EACzD,KAAM,CAAC,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,EAAE,EACzD,KAAM,CAAC,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,EAAE,EACzD,KAAM,CAAC,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,EAAE,EACzD,KAAM,CAAC,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,EAAE,EACzD,KAAM,CAAC,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,EAAE,EACzD,KAAM,CAAC,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,EAAE,EACzD,KAAM,CAAC,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,EAAE,EACzD,KAAM,CAAC,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,EAAE,EACzD,KAAM,CAAC,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,EAAE,EACzD,KAAM,CAAC,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,EAAE,EACzD,KAAM,CAAC,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,EAAE,EACzD,KAAM,CAAC,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,EAAE,EACzD,KAAM,CAAC,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,EAAE,EACzD,KAAM,CAAC,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,EAAE,EACzD,KAAM,CAAC,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,EAAE,EACzD,KAAM,CAAC,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,EAAE,EACzD,KAAM,CAAC,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,EAAE,EACzD,KAAM,CAAC,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,EAAE,EACzD,KAAM,CAAC,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,EAAE,EACzD,KAAM,CAAC,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,EAAE,EACzD,KAAM,CAAC,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,EAAE,EACzD,KAAM,CAAC,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,EAAE,EACzD,KAAM,CAAC,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,EAAE,EACzD,KAAM,CAAC,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,EAAE,EACzD,KAAM,CAAC,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,EAAE,EACzD,KAAM,CAAC,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,EAAE,EACzD,KAAM,CAAC,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,EAAE,EACzD,KAAM,CAAC,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,EAAE,EACzD,KAAM,CAAC,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,EAAE,EACzD,KAAM,CAAC,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,EAAE,EACzD,KAAM,CAAC,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,EAAE,EACzD,KAAM,CAAC,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,EAAE,EACzD,KAAM,CAAC,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,EAAE,EACzD,KAAM,CAAC,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,EAAE,EACzD,KAAM,CAAC,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,EAAE,EACzD,KAAM,CAAC,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,EAAE,EACzD,KAAM,CAAC,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,EAAE,EACzD,KAAM,CAAC,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,EAAE,EACzD,KAAM,CAAC,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,EAAE,EACzD,KAAM,CAAC,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,EAAE,EACzD,KAAM,CAAC,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,EAAE,EACzD,KAAM,CAAC,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,EAAE,EACzD,KAAM,CAAC,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,EAAE,EACzD,KAAM,CAAC,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,EAAE,EACzD,KAAM,CAAC,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,EAAE,EACzD,KAAM,CAAC,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,EAAE,EACzD,KAAM,CAAC,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,EAAE,EACzD,KAAM,CAAC,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,EAAE,EACzD,KAAM,CAAC,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,EAAE,EACzD,KAAM,CAAC,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,EAAE,EACzD,KAAM,CAAC,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,EAAE,EACzD,KAAM,CAAC,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,EAAE,EACzD,KAAM,CAAC,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,EAAE,EACzD,KAAM,CAAC,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,EAAE,EACzD,KAAM,CAAC,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,EAAE,EACzD,KAAM,CAAC,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,EAAE,EACzD,KAAM,CAAC,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,EAAE,EACzD,KAAM,CAAC,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,EAAE,EACzD,KAAM,CAAC,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,EAAE,EACzD,KAAM,CAAC,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,EAAE,EACzD,KAAM,CAAC,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,EAAE,EACzD,KAAM,CAAC,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,EAAE,EACzD,KAAM,CAAC,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,EAAE,EACzD,KAAM,CAAC,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,EAAE,EACzD,KAAM,CAAC,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,EAAE,EACzD,KAAM,CAAC,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,EAAE,EACzD,KAAM,CAAC,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,EAAE,EACzD,KAAM,CAAC,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,EAAE,EACzD,KAAM,CAAC,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,EAAE,EACzD,KAAM,CAAC,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,EAAE,EACzD,KAAM,CAAC,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,EAAE,EACzD,KAAM,CAAC,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,EAAE,EACzD,KAAM,CAAC,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,EAAE,EACzD,KAAM,CAAC,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,EAAE,EACzD,KAAM,CAAC,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,EAAE,EACzD,KAAM,CAAC,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,EAAE,EAEzD,KAAM,CAAC,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,EAAE,EACzD,KAAM,CAAC,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,EAAE,EACzD,KAAM,CAAC,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,EAAE,EACzD,KAAM,CAAC,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,EAAE,EACzD,KAAM,CAAC,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,EAAE,EACzD,KAAM,CAAC,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,EAAE,EACzD,KAAM,CAAC,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,EAAE,EACzD,KAAM,CAAC,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,EAAE,EACzD,KAAM,CAAC,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,EAAE,EACzD,KAAM,CAAC,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,EAAE,EACzD,KAAM,CAAC,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,EAAE,EACzD,KAAM,CAAC,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,EAAE,EACzD,KAAM,CAAC,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,EAAE,EACzD,KAAM,CAAC,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,EAAE,EACzD,KAAM,CAAC,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,EAAE,EACzD,KAAM,CAAC,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,EAAE,EACzD,KAAM,CAAC,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,EAAE,EACzD,KAAM,CAAC,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,EAAE,EACzD,KAAM,CAAC,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,EAAE,EACzD,KAAM,CAA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UAAY4uN,EAC3B,IAAIG,EAAgB,CAClB,GACA,GACA,GACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MAEA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,KACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MAC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","x_google_ignoreList":[0,1]}